示例#1
0
def orm_add_comment(text, news_id, telegram_user_id):
    """ Aggiunge un nuovo commento per l'articolo """

    queryset_user = TelegramUser.objects.filter(user_id=int(telegram_user_id))
    user = queryset_user[0]

    orm_logger.info(f"orm_add_comment id={news_id} user_id={user.id}")

    # https://stackoverflow.com/a/12682379/974287
    Comment.objects.create(user_id=user.id, news_id=news_id, text=text)
示例#2
0
def orm_user_blocks_bot(chat_id):

    orm_logger.info(f"orm_user_blocks_bot: user {chat_id}")

    telegram_user = orm_get_telegram_user(chat_id)

    if not telegram_user:
        orm_logger.info(f"orm_user_blocks_bot: telegram_user not found!")
        return

    telegram_user.has_user_blocked_bot = True
    telegram_user.when_user_blocked_bot_timestamp = django_timezone.now()
    orm_update_telegram_user(telegram_user)
示例#3
0
def orm_create_rss_feed_item(rss_id, rss_title, rss_link, updated_parsed):
    queryset = RssFeedItem.objects.filter(rss_id=rss_id)

    if len(queryset) > 0:
        orm_logger.info(
            f"orm_create_news_from_rss_feed_item: item already processed, rss_id={rss_id}"
        )
        return None

    rss_feed_item = RssFeedItem()
    rss_feed_item.rss_id = rss_id
    rss_feed_item.rss_title = rss_title
    rss_feed_item.rss_link = rss_link
    rss_feed_item.updated_parsed = updated_parsed

    rss_feed_item.save()

    return rss_feed_item
示例#4
0
def orm_parse_user_age(telegram_user: TelegramUser, message_text: str):
    """parse age from text sent by user; returns age, -1 for value error"""
    try:
        age = int(message_text)

        if age < 0:
            age = -1
    except ValueError:
        orm_logger.error(f"wrong format for age! {message_text}")
        age = -1

    telegram_user.age = age
    telegram_user.save()
    _update_user_in_cache(telegram_user)
    orm_logger.info(
        f"parse_user_age: age set for user {telegram_user.user_id} to {age}")

    return age
示例#5
0
def orm_update_user_category_settings(telegram_user, category_key):
    """ Aggiorna le categorie selezionate dall'utente"""

    str_user_id = str(telegram_user.user_id)

    orm_logger.info(
        f"orm_update_user_category_settings category_key={category_key} user_id={str_user_id}"
    )

    queryset_cat = telegram_user.categories.filter(key=category_key)

    if len(
            queryset_cat
    ) != 0:  # category is present in user settings, we have to remove it
        cat = queryset_cat[0]
        telegram_user.categories.remove(cat)
        telegram_user.save()

        orm_logger.info(
            f'orm_update_user_category_settings: remove category={cat.key} user_id={str_user_id}'
        )

    else:  # category is not present in user settings, we have to add it
        cat = Category.objects.filter(key=category_key)[0]

        telegram_user.categories.add(cat)
        telegram_user.save()

        orm_logger.info(
            f'orm_update_user_category_settings: add category={cat.key} user_id={str_user_id}'
        )
示例#6
0
def orm_add_telegram_user(user):
    """ creates a new user, if not existing; returns instance of user """

    telegram_user = orm_get_telegram_user(user.id)

    if telegram_user is None:  # telegram user has not been registered yet
        new_telegram_user = TelegramUser()
        new_telegram_user.user_id = user.id
        new_telegram_user.username = user.username
        new_telegram_user.first_name = user.first_name
        new_telegram_user.last_name = user.last_name
        new_telegram_user.language_code = user.language_code
        new_telegram_user.save()

        # new users: should they have all news categories selected? or none?
        if orm_get_system_parameter(
                CREATE_USER_WITH_ALL_CATEGORIES_SELECTED) == "True":
            # (select all news categories)
            for k in Category.objects.all():
                new_telegram_user.categories.add(k)

        new_telegram_user.save()

        _update_user_in_cache(new_telegram_user)
        orm_logger.info(
            f"orm_add_telegram_user: new user {new_telegram_user.user_id}")

        return new_telegram_user
    else:
        orm_logger.info(
            f"orm_add_telegram_user: existing user {telegram_user.user_id}")

        telegram_user.has_user_blocked_bot = False

        telegram_user.save()

        _update_user_in_cache(telegram_user)

        return telegram_user
示例#7
0
def orm_get_vacancies_published_today(refresh=False,
                                      create_news_item=False) -> str:

    if not refresh:
        text = orm_get_obj_from_cache("vacancies_published_today")

        if text:
            return text

    vacancies = solr_vacancies_published_today()

    if len(vacancies) == 0:
        text = UI_message_no_vacancies_published_today

        if create_news_item:
            orm_logger.info(
                "orm_get_vacancies_published_today(): now new vacancies published today"
            )
            return
    else:
        text = UI_message_vacancies_published_today.format(str(len(vacancies)))

    counter = 1

    for d in vacancies:

        url = f"https://offertelavoro.regione.fvg.it/lavoroFVG/dettaglio/{d['id']}"

        text += f'<a href="{url}">{counter}: {d["profiloProfessionale"][0]} ({d["comuneSedeLavoro"][0]})</a>\n\n'

        counter += 1

    orm_set_obj_in_cache("vacancies_published_today", text, timeout=60 *
                         30)  # store object in cache for 30 minutes

    if create_news_item:

        categories = orm_get_categories()

        cat_to_use = None

        for cat in categories:
            # print(cat)
            if UI_CATEGORY_FOR_VACANCIES in cat.name:
                cat_to_use = cat
                break

        d = django_timezone.now().strftime(DATE_FORMAT_STR)

        news_item = NewsItem()
        news_item.title = UI_message_new_vacancies_published_today.format(d)
        news_item.text = text
        news_item.disable_web_page_preview = True

        from django.utils import timezone
        news_item.start_publication = timezone.now()

        news_item.save()

        news_item.categories.add(cat_to_use)

    return text