Рубрики
Без рубрики

Наш стартап на 25% беременна 🎊 Поэтому, естественно, я сделал веб-приложение Python с эмоджи

Наковальня расширяется. Ну, в последнее время я приобрел много новых коллег, но это не то, что я имею в виду! Бри … Tagged с Python, беременностью, смайликом, WebDev.

Наковальня расширяется. Ну, я получил Лот из новый коллеги В последнее время, но это не то, что я имею в виду! Бриджит И я оба беременны, и наш новый товарищ по команде Стю тоже ожидает ребенка – со всеми тремя детьми в Новом году 🎉

Естественно, это означало много занудного отслеживания того, как идут беременность. По какой -то причине детские сайты кажутся одержимыми идеей Сравнивая размер вашего ребенка с фруктами и овощами . Поэтому я решил сделать свое собственное приложение для беременности на основе фруктов – с изюминкой.

Попробуйте мое приложение!

Эмодзи захватывают мир! Они везде, куда бы вы ни посмотрели, добавляя черту цвета в тексты, твиты и чаты с друзьями и коллегами.

Эмодзи были первоначально изобретены для японских электронных и телефонных программ. Они оказались такими популярными Консорциум Unicode официально принял их Еще в 2007 году и зарезервировал набор кодовых точек для представления смайликов. С тех пор смайлики увеличились в количестве и распространились по всему миру, заменив более старые способы передачи эмоций в тексте, как :-) . Они стали забавным способом выразить себя которые могут перекрестные языковые барьеры .

Даже Оксфордские словаря присоединились к. Они объяснили:

Правильно – впервые в когда -либо, словари «Оксфордские словаря» – пиктограмма: 😂, официально называемое «лицо со слезами на эмодзи», хотя вы можете знать это по другим именам. Были и другие сильные претенденты из ряда полей, но 😂 было выбрано в качестве «слова», которое лучше всего отражало дух, настроение и заботы 2015 года.

Так почему бы не представлять беременность с эмодзи?

Python & Emoji 🐍

Я создал свое веб -приложение с Наковальня , что означает, что я мог бы написать все в Python! Это сделало эмодзи, особенно простым – Python 3 – это Отлично с Unicode и Большинство веб -браузеров Теперь поддержите дисплей Emoji тоже. Я предварительно просмотрел Как они будут выглядеть Для разных браузеров, использующих сайт Unicode.

Теперь легко получить 5 фруктов с эмодзи и овощей в день!

И с наковальней, это все, что нам нужно беспокоиться! Это отличная новость для тех из нас, кто любит выражать себя силой 😎.

Онлайн -интерфейс Anvil позволил начать создавать трекер беременности. Я хотел всплеск цвета Поэтому я выбрал тему «Привет, Сан-Франциско» и заменил изображение заголовка симпатичной фото фруктовой стойки, которую я нашел на pexels.com Анкет

Добавление ярлыков в мою форму. Я выбрал шрифт «Pacifico».

Font Fun ✍

Лучшая часть была Поиск подходящего смайлика на каждую неделю беременности. Есть довольно много фруктов и овощей, доступных в виде смайликов, но нужно было сделать некоторые творческие варианты!

Мне было труднее выбрать смайлики в последние недели и действительно растягивал определение «фруктов или овощей»! Например, в течение 37 недель я прибегал к 🥗, и в любое время после срока срока (40+ недель) Я просто отображаю «👶». У меня начались все большие овощи 🎃, и большинство детей появятся до этой точки.

Чтобы отобразить все смайлики, вам понадобится Довольно недавний браузер Анкет У меня не было никаких проблем с Windows и Mac, но если вы используете Linux, вам может понадобиться Обновите шрифты системы . В противном случае вы увидите черно-белые смайлики!

Таблицы данных 📑

Я решил использовать встроенную базу данных Anvil для хранения смайликов, которые я выбирал на каждую неделю. Это было проще, чем пытаться отслеживать все это в моем коде.

Таблица псевдоним эмодзи против недель беременности, которую я сделал. 1-4 недели имеют одинаковые смайлики, блеск ✨, потому что в этот момент все так крошечно.

Вы можете хранить смайлики непосредственно в таблице данных наковальницы – All Unicode полностью поддерживается. Но для удобства я хранил эмодзи псевдонимы Вместо этого в моей таблице данных и сделал немного дикта перевести между псевдонимом и смайликами для отображения. Это облегчило поиграть, с которой смайлики соответствовали какой неделе. И это облегчило увидеть, что я делал, независимо от того, какой браузер я использовал, поскольку некоторые не делают все смайлики.

EMOJI_LOOKUP = {'sparkles': '✨', 'salt': '\U0001f9c2', 'cherries': '🍒', 'strawberry': '🍓', 'mushroom': '🍄', 'chestnut': '🌰', 'peanuts': '🥜', 'kiwi': ':kiwi:', 'tangerine': '🍊', 'peach': '🍑', 'lemon': '🍋', 'apple': ':apple:', 'avocado': '🥑', 'onion': '\U0001f9c5', 'potato': '🥔', 'mango': '\U0001f96d', 'banana': '🍌', 'carrot': '🥕', 'hot_pepper': '🌶', 'pear': '🍐', 'ear_of_corn': '🌽', 'broccoli': '\U0001f966', 'leafy_green': '\U0001f96c', 'burrito': '🌯', 'eggplant': '🍆', 'grapes': '🍇', 'cucumber': '🥒', 'pineapple': '🍍', 'bread': '🍞', 'sunflower': '🌻', 'bouquet': '💐', 'coconut': '\U0001f965', 'melon': '🍈', 'green_salad': '🥗', 'jack-o-lantern': '🎃', 'watermelon': '🍉', 'baby': '👶'}

Я сгенерировал Emoji_lookup Используя Python’s emoji.emojize модуль. Просто PIP установить эмодзи Местный, чтобы попробовать самостоятельно. Вот что я сделал:

import emoji

# exported from table in Anvil with Server function
alias_list = ['sparkles', 'sparkles', 'sparkles', 'sparkles', 'salt', 'cherries', 'strawberry', 'mushroom', 'chestnut', 'peanuts', 'kiwi', 'tangerine', 'peach', 'lemon', 'apple', 'avocado', 'onion', 'potato', 'mango', 'banana', 'carrot', 'hot_pepper', 'pear', 'ear_of_corn', 'broccoli', 'leafy_green', 'burrito', 'eggplant', 'grapes', 'cucumber', 'pineapple', 'bread', 'sunflower', 'bouquet', 'coconut', 'melon', 'green_salad', 'jack-o-lantern', 'watermelon', 'baby', 'baby']

if __name__ == " __main__":

    EMOJI_LOOKUP = {alias: emoji.emojize(":{}:".format(alias)) for alias in alias_list}

    print(EMOJI_LOOKUP)

Мне нужно было запустить его только один раз. Тогда я выскочил Emoji_lookup в код моего приложения. Обратите внимание, что не имеет значения, что некоторые кодовые точки представлены в длинной форме (например, '\ U0001f9c2' ), потому что у меня не было полных шрифтов, поддерживающих эмодзи, доступны в моем локальном терминале. Переводчик Python в наковальне тоже знает, как справиться с этим форматом.

Используя Пользовательский сервис Я создал поток для входа для возвращающихся пользователей, чтобы они могли продолжать отслеживать свою беременность на протяжении всей его продолжительности без необходимости повторно перерабатывать расчет даты своего срока каждый раз, когда они посещают.

Электронные письма 📧

Пользователи приложения могут необязательно подписаться на еженедельные обновления электронных писем. Я сделал это, добавив сервис электронной почты и настроил ее с помощью опции отказа от подписки.

Каждый день мое приложение выполняет запланированную задачу, чтобы отправить электронное письмо тем пользователям, которые подписались на электронные письма и достигли своей следующей недели беременности в тот день. Пользователи выпадают со стола и списка электронной почты через 43 недели (в этот момент ребенок, надеюсь, должен был появиться!)

Отказ от подписки 🔔

По понятным причинам я хотел сделать это как можно более простым для пользователей отмены еженедельных электронных писем. Им не нужно войти в приложение, чтобы сделать это.

Но я должен был убедиться, что люди могли только отказаться от подписки, а не других пользователей. Если бы я просто установил общий API «Отписаться», для кого -то было бы слишком легко случайно (или злонамеренно) удалить других людей из списка рассылки.

Решение: генерируйте секретный токен для каждого пользователя. Если мы получим запрос с правым токеном, это должно быть от этого пользователя, и мы можем немедленно отписать их. Я использовал token_urlsafe () от Модуль секретов Чтобы сгенерировать уникальный токен для каждого пользователя, который безопасен для использования в рамках URL.

Когда приложение отправляет электронное письмо пользователю, сообщение содержит URL -адрес отписанного, настроенный с их секретным токеном:

"To unsubscribe, click here: {app}/_/api/unsubscribe/{unsub}".format(app=anvil.server.get_app_origin(), unsub=user['unsubscribe_token'])

Я настроил пользовательскую конечную точку HTTP API, чтобы обрабатывать клики по этим ссылкам на Unsubscription:

@anvil.server.http_endpoint("/unsubscribe/:id")
def unsubscribe_user(id):
  """
  Enable users to unsubscribe from email updates by clicking this API link.
  Check the id matches the unique unsubscribe token stored in the table against them 
  and if it does, remove that user's email subscription.
  """
  ip = anvil.server.request.remote_address
  user_to_unsubscribe = app_tables.users.search(unsubscribe_token=id)

  for user in user_to_unsubscribe:
    unsub_email = user['email']
    user.update(signed_up_for_emails=False)
    # Redirect user to app after unsubscribing them.
    redirect = anvil.server.HttpResponse(302, f"Unsubscribed user {unsub_email} from IP {ip}, now trying to redirect")
    redirect.headers['Location'] = "{}#unsubscribed".format(anvil.server.get_app_origin())
    return redirect

  return "Could not unsubscribe you - please check link is correct."

Соответствующий код в __init__ формы использует get_url_hash () :

    # If user got here by clicking unsubscribe link in their email
    if get_url_hash() == "unsubscribed":
      alert("You have been unsubscribed from Fruitmoji emails.")

Пользователи просто нажимают на ссылку, которая появляется в их электронной почте, что приводит к всплывающему окне в приложении, которое подтверждает, что они были удалены из списка рассылки.

Если вы заинтересованы в том, чтобы узнать больше о том, как работает приложение «Fruitmoji», взгляните на ссылку клона ниже. Это может быть полезным шаблоном для сбора списка рассылки ваших пользователей с механизмом отказа от подписки:

Клонировать готовое приложение

Создайте свое собственное приложение!

Наковальня это платформа для создания веб-приложений с полным стеком с Python. Не нужно бороться с JS, HTML, CSS, Python, SQL и всеми их рамками – Just Постройте все это в Python

Оригинал: “https://dev.to/raspberrycheesecake/our-start-up-is-25-pregnant-3m56”