Esempio n. 1
0
def send_defect(update: Update, context: CallbackContext) -> None:
    user_data = context.user_data
    defect = user_data.get(con.DEFECT)
    token = user_data.get(con.ACCESS_TOKEN)
    payload = {
        "created_by": user_data.get(con.SENDER_ID),
        "title": defect.get(con.DEFECT_TITLE),
        "description": defect.get(con.DEFECT_DESCRIPTION),
        "room": defect.get(con.DEFECT_ROOM) 
    }
    photo_file = open(defect.get(con.DEFECT_PHOTO), 'rb')
    files = {
        "attachment": photo_file
    }
    response = Request.post_defect(payload, files, token)
    photo_file.close()

    _remove_defect_cache(context)

    text = ("Дефект успішно додано!" if response.ok 
                else "Сталась помилка на сервері")
    
    
    query = update.callback_query
    keyboard = Buttons.back_to_menu()

    query.answer()
    query.edit_message_text(text=text, reply_markup=keyboard)
Esempio n. 2
0
def help(update: Update, context: CallbackContext) -> int:
    query = update.callback_query

    text = "Натисніть кнопку <b>Реєстрація</b>, якщо бажаєте користуватися ботом вперше.\n"
    text += "Натисніть <b>Вхід</b>, якщо ви тут не вперше." ""
    query.answer()
    query.edit_message_text(text=text,
                            parse_mode=ParseMode.HTML,
                            reply_markup=Buttons.back_to_menu())

    context.user_data[con.START_OVER] = True

    return con.SHOWING
Esempio n. 3
0
def register(update: Update, context: CallbackContext) -> int:
    payload = {
        "telegram_id": context.user_data[con.SENDER_ID],
        "first_name": context.user_data[con.SENDER_FIRST_NAME],
        "last_name": context.user_data[con.SENDER_LAST_NAME],
        "username": context.user_data[con.SENDER_USERNAME]
    }
    response = Request.register(payload).json()
    message = response.get('message')

    reply_text = ('Ви уже зареєстровані!'
                  if message and 'exist' in message else
                  'Ваш запит вислано для перевірки, очікуйте на відповідь.')

    query = update.callback_query

    query.answer()
    query.edit_message_text(text=reply_text,
                            reply_markup=Buttons.back_to_menu())

    context.user_data[con.START_OVER] = True

    return con.SHOWING
Esempio n. 4
0
def auth(update: Update, context: CallbackContext) -> int:
    query = update.callback_query

    user_data = context.user_data
    sender_id = user_data[con.SENDER_ID]

    response = Request.login(sender_id).json()
    message = response.get('message')
    access_token = response.get('access_token')

    # Default text, keyboard, state in case of error
    reply_text = 'Очікуйте на активацію.'
    keyboard = Buttons.back_to_menu()
    state = con.SHOWING

    if not message and access_token:
        reply_text = ('Виберіть потрібну опцію' if user_data.get(
            con.ADD_DEFECT_AGAIN) else 'Ви успішно ввійшли!')

        user_data[con.ACCESS_TOKEN] = access_token

        role = _get_user_role(context)
        if role == con.Role.not_specified.value:
            reply_text = 'Ваша роль поки що не визначена. Звернітся до адміністратора.'
        elif role == con.Role.sanitary_worker.value:
            keyboard = Buttons.get_cleaner_options()
            state = con.DESCRIBING_DEFECT
        elif role == con.Role.technical_worker.value:
            keyboard = Buttons.get_all_options()
            state = con.DESCRIBING_DEFECT

    query.answer()
    query.edit_message_text(text=reply_text, reply_markup=keyboard)

    context.user_data[con.START_OVER] = True

    return state