Example #1
0
def edit_action(update, context):
    context.user_data['user'] = users.user_exists(
        update.callback_query.from_user.id)
    if context.user_data['user'].get('is_blocked'):
        blocked_message = strings.get_string(
            'blocked', context.user_data['user'].get('language'))
        update.callback_query.answer(text=blocked_message, show_alert=True)
        return ConversationHandler.END
    query = update.callback_query
    data = query.data
    language = context.user_data['user'].get('language')
    if data == 'title':
        message = strings.get_string('resumes.edit.title', language)
    elif data == 'description':
        message = strings.get_string('resumes.edit.description', language)
    elif data == 'contacts':
        message = strings.get_string('resumes.edit.contacts', language)
    elif data == 'back':
        resume_message = strings.from_resume(
            context.user_data['editing_resume'], language)
        resume_keyboard = keyboards.get_keyboard('resume', language)
        query.edit_message_text(text=resume_message,
                                reply_markup=resume_keyboard)
        return RESUME_ACTION
    else:
        return EDIT_ACTION
    keyboard = keyboards.get_keyboard('go_back', language)
    context.user_data['editing_resume_step'] = data
    context.bot.delete_message(chat_id=query.message.chat.id,
                               message_id=query.message.message_id)
    context.bot.send_message(chat_id=query.message.chat.id,
                             text=message,
                             reply_markup=keyboard,
                             parse_mode=ParseMode.HTML)
    return UPDATE_RESUME
Example #2
0
def support(update, context):
    language = context.user_data['user'].get('language')
    if strings.get_string('cancel', language) in update.message.text:
        canceled_message = strings.get_string('support.canceled', language)
        update.message.reply_text(canceled_message)
        Navigation.to_account(update, context, new_message=True)
        del context.user_data['has_action']
        return ConversationHandler.END
    elif update.message:
        user_id = update.message.from_user.id
        question_text = update.message.text
        bot_info = context.bot.get_me()
        timezone = pytz.timezone('Asia/Tashkent')
        now_date = datetime.now(tz=timezone).strftime('%d %B %Y %H:%M:%S')
        support_message = strings.get_string('support.question.template', 'ru').format(bot_id=bot_info.id,
                                                                                       bot_name=bot_info.first_name,
                                                                                       user_id=user_id,
                                                                                       user_name=context.user_data[
                                                                                           'user'].get('name'),
                                                                                       date=now_date,
                                                                                       question=question_text)
        support_keyboard = keyboards.get_support_keyboard(link=(Config.APP_URL + '/users/' + str(user_id) + '/edit'))
        context.bot.send_message(chat_id=Config.TELEGRAM_SUPPORT_GROUP, text=support_message, parse_mode=ParseMode.HTML,
                                 reply_markup=support_keyboard)
        message = context.user_data['support_message']
        context.bot.delete_message(chat_id=message.chat_id, message_id=message.message_id)
        success_message = strings.get_string('support.success', language)
        update.message.reply_text(text=success_message)
        Navigation.to_account(update, context, new_message=True)
        del context.user_data['has_action']
        return ConversationHandler.END
    else:
        return SUPPORT
Example #3
0
def resume_action(update, context):
    context.user_data['user'] = users.user_exists(
        update.callback_query.from_user.id)
    if context.user_data['user'].get('is_blocked'):
        blocked_message = strings.get_string(
            'blocked', context.user_data['user'].get('language'))
        update.callback_query.answer(text=blocked_message, show_alert=True)
        return ConversationHandler.END
    language = context.user_data['user'].get('language')
    query = update.callback_query
    data = query.data
    if data == 'edit':
        return edit(update, context)
    elif data == 'delete':
        return delete(update, context)
    elif data == 'back':
        user_id = query.from_user.id
        user_resumes = users.get_user_resumes(user_id)
        keyboard = keyboards.get_resumes_keyboard(user_resumes, language)
        message = strings.get_string('resumes.list', language)
        query.edit_message_text(message,
                                parse_mode=ParseMode.HTML,
                                reply_markup=keyboard)
        del context.user_data['has_action']
        return ConversationHandler.END
    else:
        return RESUME_ACTION
Example #4
0
def update_vacation(update, context):
    message = update.message

    def go_back():
        vacation_message = strings.get_string(
            'vacations.edit', language).format(
                context.user_data['editing_vacation'].get('title'))
        edit_keyboard = keyboards.get_keyboard('vacation.edit', language)
        if 'vacation_edit_message' in context.user_data:
            context.bot.delete_message(
                chat_id=message.chat_id,
                message_id=context.user_data['vacation_edit_message'])
            del context.user_data['vacation_edit_message']
        context.bot.delete_message(chat_id=message.chat_id,
                                   message_id=message.message_id)
        message.reply_text(text=vacation_message,
                           reply_markup=edit_keyboard,
                           parse_mode=ParseMode.HTML)
        return EDIT_ACTION

    language = context.user_data['user'].get('language')
    if strings.get_string('go_back', language) in message.text:
        return go_back()
    payload = {context.user_data['editing_vacation_step']: message.text}
    context.user_data['editing_vacation'] = vacations.update_vacation(
        context.user_data['editing_vacation']['id'], payload)
    success_message = strings.get_string('success', language)
    menu_keyboard = keyboards.get_keyboard('menu', language)
    message.reply_text(text=success_message, reply_markup=menu_keyboard)
    return go_back()
Example #5
0
def vacations_list(update, context):
    context.user_data['user'] = users.user_exists(
        update.callback_query.from_user.id)
    if context.user_data['user'].get('is_blocked'):
        blocked_message = strings.get_string(
            'blocked', context.user_data['user'].get('language'))
        update.callback_query.answer(text=blocked_message, show_alert=True)
        return ConversationHandler.END
    context.user_data['has_action'] = True
    query = update.callback_query
    language = context.user_data['user'].get('language')
    user_id = context.user_data['user'].get('id')
    user_vacations = users.get_user_vacations(user_id)
    if len(user_vacations) == 0:
        empty_message = strings.get_string('vacations.empty_list', language)
        query.answer(text=empty_message, show_alert=True)
        del context.user_data['has_action']
        return ConversationHandler.END
    list_message = strings.get_string('vacations.resumes.select', language)
    list_keyboard = keyboards.get_vacations_keyboard(
        user_vacations, language, include_create_button=False)
    context.bot.delete_message(chat_id=user_id,
                               message_id=query.message.message_id)
    context.bot.send_message(chat_id=user_id,
                             text=list_message,
                             reply_markup=list_keyboard,
                             parse_mode=ParseMode.HTML)
    return LIST
Example #6
0
 def to_main_menu(update, language, message_text=None, user_name=None, context=None, welcome=False):
     if message_text:
         menu_message = message_text
     else:
         if welcome:
             menu_message = strings.get_string('start.welcome', language).format(username=user_name)
         else:
             menu_message = strings.get_string('menu.welcome', language)
     menu_keyboard = keyboards.get_keyboard('menu', language)
     if update.message:
         chat_id = update.message.chat_id
     else:
         chat_id = update.callback_query.message.chat_id
     if welcome:
         image = images.get_welcome_image(language)
         if image:
             context.bot.send_photo(chat_id=chat_id, photo=image, caption=menu_message, reply_markup=menu_keyboard)
         else:
             context.bot.send_message(chat_id=update.callback_query.message.chat_id, text=menu_message,
                                      reply_markup=menu_keyboard)
     else:
         if update.message:
             update.message.reply_text(menu_message, reply_markup=menu_keyboard)
         else:
             context.bot.send_message(chat_id=update.callback_query.message.chat_id, text=menu_message,
                                      reply_markup=menu_keyboard)
Example #7
0
def resumes_for_vacation(update, context):
    context.user_data['user'] = users.user_exists(
        update.callback_query.from_user.id)
    if context.user_data['user'].get('is_blocked'):
        blocked_message = strings.get_string(
            'blocked', context.user_data['user'].get('language'))
        update.callback_query.answer(text=blocked_message, show_alert=True)
        return ConversationHandler.END
    query = update.callback_query
    language = context.user_data['user'].get('language')
    vacation_id = query.data.split(':')[1]
    if vacation_id == 'back':
        Navigation.to_account(update, context)
        return ConversationHandler.END
    resumes = vacations.get_resumes_for_vacation(vacation_id)
    if len(resumes) == 0:
        empty_message = strings.get_string('vacations.resumes.empty', language)
        query.answer(text=empty_message, show_alert=True)
        return LIST
    if type(resumes) is dict:
        resumes = list(resumes.values())
    context.user_data['found_resumes'] = resumes
    context.user_data['current_page'] = 1
    first_resume = resumes[0]
    user = users.user_exists(first_resume.get('user_id'))
    vacation_message = strings.from_resume(first_resume,
                                           language,
                                           for_vacation=True,
                                           user=user)
    vacations_keyboard = keyboards.get_list_paginated_keyboard(
        resumes, language)
    query.edit_message_text(text=vacation_message,
                            reply_markup=vacations_keyboard,
                            parse_mode=ParseMode.HTML)
    return RESUMES
Example #8
0
def create(update, context):
    context.user_data['user'] = users.user_exists(
        update.callback_query.from_user.id)
    if context.user_data['user'].get('is_blocked'):
        blocked_message = strings.get_string(
            'blocked', context.user_data['user'].get('language'))
        update.callback_query.answer(text=blocked_message, show_alert=True)
        return ConversationHandler.END
    context.user_data['has_action'] = True
    query = update.callback_query
    context.user_data['resume'] = {}
    context.user_data['resume']['user_id'] = query.from_user.id
    language = context.user_data['user'].get('language')
    query.answer(text=strings.get_string('resumes.menu_has_gone', language),
                 show_alert=True)
    message = strings.get_string('resumes.create.title', language)
    keyboard = keyboards.get_keyboard('go_back.one_time', language)
    context.bot.delete_message(chat_id=query.from_user.id,
                               message_id=query.message.message_id)
    if 'catalog_photo_id' in context.user_data:
        try:
            context.bot.delete_message(
                chat_id=update.effective_chat.id,
                message_id=context.user_data['catalog_photo_id'])
        except BadRequest:
            pass
    context.bot.send_message(chat_id=query.from_user.id,
                             text=message,
                             reply_markup=keyboard,
                             parse_mode=ParseMode.HTML)
    return TITLE
Example #9
0
def languages(update: Update, context):
    def error():
        languages_message = strings.get_string('start.languages')
        keyboard = keyboards.get_keyboard('start.languages')
        update.message.reply_text(languages_message, reply_markup=keyboard)

    text = update.message.text
    if strings.get_string('languages.ru') in text:
        language = 'ru'
    elif strings.get_string('languages.uz') in text:
        language = 'uz'
    else:
        error()
        return LANGUAGES
    user = update.message.from_user
    user_name = _get_user_name(user)
    users.create_user(user.id,
                      user_name,
                      user.username,
                      language,
                      referral_from_id=context.user_data.get(
                          'referral_from_id', None))
    help_message = strings.get_string('start.help', language)
    remove_keyboard = keyboards.get_keyboard('remove')
    update.message.reply_text(help_message, reply_markup=remove_keyboard)
    Navigation.to_account(update, context, new_message=True)
    return ConversationHandler.END
Example #10
0
def vacation_contacts(update, context):
    language = context.user_data['user'].get('language')
    if update.callback_query and update.callback_query.data == 'back':
        message = strings.get_string('vacations.create.name', language)
        keyboard = keyboards.get_keyboard('go_back.inline', language)
        update.callback_query.edit_message_text(text=message,
                                                parse_mode=ParseMode.HTML,
                                                reply_markup=keyboard)
        return NAME
    phone_number = update.message.text
    if not phone_number.startswith('+'):
        phone_number = '+' + phone_number
    context.user_data['vacation']['contacts'] = phone_number
    message = strings.get_string('location.regions', language)
    keyboard = keyboards.get_keyboard('location.regions', language)
    remove_keyboard = keyboards.get_keyboard('remove')
    remove_message = strings.get_string('remove_keyboard', language)
    removed_message = context.bot.send_message(chat_id=update.message.chat_id,
                                               text=remove_message,
                                               reply_markup=remove_keyboard,
                                               disable_notification=True)
    context.bot.delete_message(chat_id=update.message.chat_id,
                               message_id=removed_message.message_id)
    message = update.message.reply_text(message, reply_markup=keyboard)
    context.user_data['location_message_id'] = message.message_id
    context.user_data['location_step'] = 'region'
    return REGION
Example #11
0
def vacation_salary(update, context):
    language = context.user_data['user'].get('language')
    if strings.get_string('go_back', language) in update.message.text:
        message = strings.get_string('vacations.create.title', language)
        update.message.reply_text(text=message, parse_mode=ParseMode.HTML)
        return TITLE
    context.user_data['vacation']['salary'] = update.message.text
    message = strings.get_string('vacations.create.category', language)
    update.message.reply_text(message, parse_mode=ParseMode.HTML)
    return CATEGORY
Example #12
0
def vacation_category(update, context):
    language = context.user_data['user'].get('language')
    if strings.get_string('go_back', language) in update.message.text:
        message = strings.get_string('vacations.create.salary', language)
        update.message.reply_text(text=message, parse_mode=ParseMode.HTML)
        return SALARY
    context.user_data['vacation']['category'] = update.message.text
    message = strings.get_string('vacations.create.description', language)
    update.message.reply_text(message, parse_mode=ParseMode.HTML)
    return DESCRIPTION
Example #13
0
def vacation_description(update, context):
    language = context.user_data['user'].get('language')
    if strings.get_string('go_back', language) in update.message.text:
        message = strings.get_string('vacations.create.category', language)
        update.message.reply_text(text=message, parse_mode=ParseMode.HTML)
        return CATEGORY
    context.user_data['vacation']['description'] = update.message.text
    message = strings.get_string('vacations.create.contacts', language)
    update.message.reply_text(message, parse_mode=ParseMode.HTML)
    return CONTACTS
Example #14
0
def resume_name(update, context):
    language = context.user_data['user'].get('language')
    if strings.get_string('go_back', language) in update.message.text:
        message = strings.get_string('resumes.create.price', language)
        update.message.reply_text(text=message, parse_mode=ParseMode.HTML)
        return PRICE
    context.user_data['resume']['name'] = update.message.text
    message = strings.get_string('resumes.create.contacts', language)
    update.message.reply_text(message, parse_mode=ParseMode.HTML)
    return CONTACTS
Example #15
0
def resume_price(update, context):
    language = context.user_data['user'].get('language')
    if strings.get_string('go_back', language) in update.message.text:
        message = strings.get_string('resumes.create.title', language)
        update.message.reply_text(message, parse_mode=ParseMode.HTML)
        return TITLE
    context.user_data['resume']['price'] = update.message.text
    message = strings.get_string('resumes.create.name', language)
    keyboard = keyboards.get_keyboard('go_back.one_time', language)
    update.message.reply_text(message,
                              parse_mode=ParseMode.HTML,
                              reply_markup=keyboard)
    return NAME
Example #16
0
def vacation_title(update, context):
    language = context.user_data['user'].get('language')
    if strings.get_string('go_back', language) in update.message.text:
        del context.user_data['vacation']
        Navigation.to_main_menu(
            update, language, user_name=context.user_data['user'].get('name'))
        Navigation.to_account(update, context)
        del context.user_data['has_action']
        return ConversationHandler.END
    context.user_data['vacation']['title'] = update.message.text
    message = strings.get_string('vacations.create.salary', language)
    update.message.reply_text(message, parse_mode=ParseMode.HTML)
    return SALARY
Example #17
0
def resume_title(update, context):
    language = context.user_data['user'].get('language')
    if strings.get_string('go_back', language) in update.message.text:
        Navigation.to_main_menu(
            update, language, user_name=context.user_data['user'].get('name'))
        Navigation.to_account(update, context)
        del context.user_data['has_action']
        del context.user_data['resume']
        return ConversationHandler.END
    context.user_data['resume']['title'] = update.message.text
    message = strings.get_string('resumes.create.description', language)
    update.message.reply_text(message, parse_mode=ParseMode.HTML)
    return DESCRIPTION
Example #18
0
 def no_user_in_channel():
     if update.message:
         channel = context.bot.get_chat(
             chat_id=Config.TELEGRAM_CHANNEL_USERNAME)
         channel_message = strings.get_string(
             'referral.channel', language).format(channelName=channel.title)
         channel_keyboard = keyboards.get_channel_keyboard(
             Config.TELEGRAM_CHANNEL_LINK, language)
         update.message.reply_text(text=channel_message,
                                   reply_markup=channel_keyboard,
                                   parse_mode=ParseMode.HTML)
     else:
         error_message = strings.get_string('referral.channel.empty',
                                            language)
         update.callback_query.answer(text=error_message, show_alert=True)
Example #19
0
def change_language(update, context):
    context.user_data['user'] = users.user_exists(
        update.callback_query.from_user.id)
    if context.user_data['user'].get('is_blocked'):
        blocked_message = strings.get_string(
            'blocked', context.user_data['user'].get('language'))
        update.callback_query.answer(text=blocked_message, show_alert=True)
        return
    query = update.callback_query
    query.answer()
    language = context.user_data['user'].get('language')
    change_language_message = strings.get_string('account.select_language',
                                                 language)
    keyboard = keyboards.get_keyboard('account.language', language)
    query.edit_message_caption(change_language_message, reply_markup=keyboard)
Example #20
0
def delete(update, context):
    query = update.callback_query
    language = context.user_data['user'].get('language')
    resumes.delete_resume(context.user_data['editing_resume'].get('id'))
    success = strings.get_string('success', language)
    query.answer(text=success)
    user_id = query.from_user.id
    user_resumes = users.get_user_resumes(user_id)
    keyboard = keyboards.get_resumes_keyboard(user_resumes, language)
    message = strings.get_string('resumes.list', language)
    query.edit_message_text(message,
                            parse_mode=ParseMode.HTML,
                            reply_markup=keyboard)
    del context.user_data['has_action']
    return ConversationHandler.END
Example #21
0
def partners(update, context):
    context.user_data['user'] = users.user_exists(update.message.from_user.id)
    if context.user_data['user'].get('is_blocked'):
        blocked_message = strings.get_string(
            'blocked', context.user_data['user'].get('language'))
        update.message.reply_text(blocked_message)
        return
    bot_settings = settings.get_settings()
    language = context.user_data['user'].get('language')
    partners_keyboard = keyboards.get_keyboard('partners', language)
    if context.user_data['user'].get('language') == 'uz':
        ad_image_path = bot_settings.get('partners_ad_image_uz')
        partners_message = bot_settings.get('partners_uz')
    else:
        ad_image_path = bot_settings.get('partners_ad_image')
        partners_message = bot_settings.get('partners')
    if not partners_message:
        if context.user_data['user'].get('language') == 'uz':
            partners_message = bot_settings.get('partners_tariffs_uz')
        else:
            partners_message = bot_settings.get('partners_tariffs')
    partners_message = utils.replace_new_line(partners_message)
    if ad_image_path:
        if os.path.exists(ad_image_path):
            image = open(ad_image_path, 'rb')
        else:
            image = images.get_partners_image(
                context.user_data['user'].get('language'))
    else:
        image = images.get_partners_image(
            context.user_data['user'].get('language'))
    photo_message = None
    if image:
        chat_id = update.message.chat_id
        photo_message = context.bot.send_photo(chat_id=chat_id, photo=image)
        message = context.bot.send_message(chat_id=chat_id,
                                           text=partners_message,
                                           parse_mode=ParseMode.HTML,
                                           reply_markup=partners_keyboard)
    else:
        message = update.message.reply_text(text=partners_message,
                                            parse_mode=ParseMode.HTML,
                                            reply_markup=partners_keyboard)
    if 'partners_message_id' in context.user_data:
        try:
            context.bot.delete_message(
                chat_id=update.message.chat_id,
                message_id=context.user_data['partners_message_id'])
        except BadRequest:
            pass
    if 'partners_photo_id' in context.user_data:
        try:
            context.bot.delete_message(
                chat_id=update.message.chat_id,
                message_id=context.user_data['partners_photo_id'])
        except BadRequest:
            pass
    context.user_data['partners_message_id'] = message.message_id
    if photo_message:
        context.user_data['partners_photo_id'] = photo_message.message_id
Example #22
0
def faq(update, context):
    context.user_data['user'] = users.user_exists(
        update.callback_query.from_user.id)
    if context.user_data['user'].get('is_blocked'):
        blocked_message = strings.get_string(
            'blocked', context.user_data['user'].get('language'))
        update.callback_query.answer(text=blocked_message, show_alert=True)
        return
    if context.user_data['user'].get('language') == 'uz':
        faq_message = settings.get_settings().get('faq_uz')
    else:
        faq_message = settings.get_settings().get('faq')
    faq_message = utils.replace_new_line(faq_message)
    faq_keyboard = keyboards.get_keyboard(
        'faq', language=context.user_data['user'].get('language'))
    context.bot.delete_message(
        chat_id=update.effective_chat.id,
        message_id=update.callback_query.message.message_id)
    image = images.get_faq_image(context.user_data['user'].get('language'))
    if image:
        chat_id = update.effective_message.chat_id
        context.bot.send_photo(chat_id=chat_id,
                               photo=image,
                               caption=faq_message,
                               parse_mode=ParseMode.HTML,
                               reply_markup=faq_keyboard)
    else:
        update.effective_message.reply_text(text=faq_message,
                                            parse_mode=ParseMode.HTML,
                                            reply_markup=faq_keyboard)
Example #23
0
def news(update, context):
    context.user_data['user'] = users.user_exists(update.message.from_user.id)
    if context.user_data['user'].get('is_blocked'):
        blocked_message = strings.get_string(
            'blocked', context.user_data['user'].get('language'))
        update.message.reply_text(blocked_message)
        return
    if context.user_data['user'].get('language') == 'uz':
        news_message = settings.get_settings().get('news_uz')
    else:
        news_message = settings.get_settings().get('news')
    news_message = utils.replace_new_line(news_message)
    news_keyboard = keyboards.get_keyboard(
        'news', language=context.user_data['user'].get('language'))
    image = images.get_news_image()
    if image:
        chat_id = update.message.chat_id
        message = context.bot.send_photo(chat_id=chat_id,
                                         photo=image,
                                         caption=news_message,
                                         parse_mode=ParseMode.HTML,
                                         reply_markup=news_keyboard)
    else:
        message = update.message.reply_text(text=news_message,
                                            parse_mode=ParseMode.HTML,
                                            reply_markup=news_keyboard)
    if 'news_message_id' in context.user_data:
        try:
            context.bot.delete_message(
                chat_id=update.message.chat_id,
                message_id=context.user_data['news_message_id'])
        except BadRequest:
            pass
    context.user_data['news_message_id'] = message.message_id
Example #24
0
def vacation_price(update, context):
    language = context.user_data['user'].get('language')
    if update.callback_query and update.callback_query.data == 'back':
        message = strings.get_string('vacations.create.title', language)
        keyboard = keyboards.get_keyboard('go_back.inline', language)
        update.callback_query.edit_message_text(text=message,
                                                parse_mode=ParseMode.HTML,
                                                reply_markup=keyboard)
        return TITLE
    context.user_data['vacation']['price'] = update.message.text
    message = strings.get_string('vacations.create.name', language)
    keyboard = keyboards.get_keyboard('go_back.inline', language)
    update.message.reply_text(message,
                              parse_mode=ParseMode.HTML,
                              reply_markup=keyboard)
    return NAME
Example #25
0
def paginated_resumes(update, context):
    query = update.callback_query
    language = context.user_data['user'].get('language')
    page = query.data.split(':')[1]
    if page == 'back':
        user_id = context.user_data['user'].get('id')
        user_vacations = users.get_user_vacations(user_id)
        list_message = strings.get_string('vacations.resumes.select', language)
        list_keyboard = keyboards.get_vacations_keyboard(
            user_vacations, language, include_create_button=False)
        query.edit_message_text(text=list_message, reply_markup=list_keyboard)
        return LIST
    if int(page) == context.user_data['current_page']:
        return RESUMES
    resume = context.user_data['found_resumes'][int(page) - 1]
    user = users.user_exists(resume.get('user_id'))
    resume_message = strings.from_resume(resume,
                                         language,
                                         for_vacation=True,
                                         user=user)
    resume_keyboard = keyboards.get_list_paginated_keyboard(
        context.user_data['found_resumes'], language, current_page=int(page))
    query.edit_message_text(text=resume_message,
                            reply_markup=resume_keyboard,
                            parse_mode=ParseMode.HTML)
    context.user_data['current_page'] = int(page)
    return RESUMES
Example #26
0
def _to_vacations(update: Update, context: CallbackContext):
    def sort_vacations_by_price(vacation: dict):
        result = re.search(r'\d+', vacation.get('price'))
        if result:
            return int(result.group())
        return vacation['price']

    query = update.callback_query
    language = context.user_data['user'].get('language')
    vacations = context.user_data['catalog']['vacations']
    location_code = context.user_data['catalog']['location']['code']
    category = context.user_data['current_category']
    if location_code != 'all':
        vacations = [
            vacation for vacation in vacations
            if vacation.get('location') == location_code
            or vacation.get('location') == 'all'
        ]
    if not vacations:
        empty_message = strings.get_string('catalog.empty', language)
        query.answer(text=empty_message, show_alert=True)
        return LOCATION_CITY
    vacations = sorted(vacations, key=sort_vacations_by_price)
    vacations_message = strings.from_vacations_list_message(
        vacations,
        category, context.user_data['catalog']['location']['full_name'],
        len(vacations), language)
    catalog_keyboard = keyboards.get_keyboard('catalog.vacations', language)
    query.edit_message_text(vacations_message,
                            reply_markup=catalog_keyboard,
                            parse_mode=ParseMode.HTML)
    return VACATIONS
Example #27
0
def error(update, context):
    """Log Errors caused by Updates."""
    error_message = strings.get_string('error', language='ru')
    if update.callback_query:
        update.callback_query.answer(text=error_message, show_alert=True)
    else:
        update.message.reply_text(text=error_message)
    raise context.error
Example #28
0
def vacation_city(update, context):
    language = context.user_data['user'].get('language')
    query = update.callback_query
    city = query.data.split(':')[1]
    if city == 'back':
        message = strings.get_string('location.regions', language)
        keyboard = keyboards.get_keyboard('location.regions', language)
        query.answer()
        query.edit_message_text(text=message, reply_markup=keyboard)
        return REGION
    region = context.user_data['vacation']['location']['region']
    city_name = strings.get_city_from_region(region, city, language)
    region_name = strings.get_string('location.regions.' + region, language)
    full_name = region_name + ', ' + city_name
    context.user_data['vacation']['location']['full_name'] = full_name
    context.user_data['vacation']['location']['code'] = region + '.' + city
    query.answer(text=full_name)
    return to_parent_categories(query, context)
Example #29
0
def select_role_choice(update: Update, context):
    query = update.callback_query
    role = query.data.split(':')[1]
    user = users.set_user_role(query.from_user.id, role)
    context.user_data['user'] = user
    Navigation.to_account(update, context)
    query.answer(
        text=strings.get_string('account.select_role.selected',
                                context.user_data['user'].get('language')))
Example #30
0
def start(update: Update, context):
    user_id = update.effective_user.id
    if 'user' not in context.user_data:
        context.user_data['user'] = users.user_exists(user_id)
    if context.user_data['user'].get('is_blocked'):
        blocked_message = strings.get_string(
            'blocked', context.user_data['user'].get('language'))
        update.callback_query.answer(text=blocked_message, show_alert=True)
        return
    check_channel(update, context)