Exemple #1
0
async def scan_qr_code_step_2(message: types.Message, state: FSMContext):
    """
    Scan QR code
    """
    data = await read_qr_code(message)
    if validate_qr_code(data):
        result = parse_qr_code_data(data)
        await bot.send_message(chat_id=message.chat.id, text=result)
    else:
        await bot.send_message(
            chat_id=message.chat.id,
            text="Произошла ошибка в распознавании фото. Попробуйте ещё раз",
        )
Exemple #2
0
async def delete_eq_by_qrcode(message: types.Message, state: FSMContext):
    """
    Get equipment name from QR code
    """
    qr_code_data = await read_qr_code(message)
    if validate_qr_code(qr_code_data):
        equipment_id = int(qr_code_data.split()[0])
        equipment.delete_equipment(equipment_id)
        await bot.send_message(chat_id=message.chat.id,
                               text='Техника была успешно удалена')
    else: 
        await bot.send_message(
            chat_id=message.chat.id,
            text='Произошла ошибка в распознавании фото. Попробуйте ещё раз')
    await state.finish()
Exemple #3
0
async def change_name_by_qrcode(message: types.Message, state: FSMContext):
    """
    Get equipment name from QR code
    """
    qr_code_data = await read_qr_code(message)
    if not validate_qr_code(qr_code_data):
        await bot.send_message(
            chat_id=message.chat.id,
            text='Произошла ошибка в распознавании фото. Попробуйте ещё раз')
        await state.finish()
    else:
        equipment_id = int(qr_code_data.split()[0])
        equipment.get_equipment(equipment_id)
        await state.update_data(eq_id=equipment_id)
        await bot.send_message(
            chat_id=message.chat.id,
            text='Отправьте новое название техники (5-6 слов)')
        await Change_Name.next()
Exemple #4
0
async def equipment_history_step_2(message: types.Message, state: FSMContext):
    """
    Scan QR code and get equipment history
    """
    # read data from QR code
    data = await read_qr_code(message)
    if parse.validate_qr_code(data):
        # find equipment history and parse data
        eq_history_data = history.get_equipment_history(int(data.split()[0]))
        if eq_history_data:
            transformed_result = parse.parse_equipment_history_data(
                eq_history_data)
        else:
            transformed_result = 'История техники пуста'
        await bot.send_message(chat_id=message.chat.id,
                               text=transformed_result +
                               '\nЧтобы вернуться в главное меню\
 напишите /start',
                               parse_mode=types.message.ParseMode.HTML)
    else:
        await bot.send_message(
            chat_id=message.chat.id,
            text='Произошла ошибка в распознавании фото. Попробуйте ещё раз')
    await state.finish()
Exemple #5
0
async def take_equipment_step_2(message: types.Message, state: FSMContext):
    """
    Get QR code, read data from it and create transfer
    """
    # read data from user's photo with QR code
    eq = await read_qr_code(message)
    eq_buffer = await state.get_data()
    if validate_qr_code(eq):
        transformed_result = parse_qr_code_data(eq)  # get equipment name
        # check if user has already taken that equipment
        user_eq_data = equipment.get_equipment_by_holder(message.chat.id)
        user_eq_names = [eq["name"] for eq in user_eq_data]

        if (transformed_result not in eq_buffer["equipment_names"]
                and transformed_result not in user_eq_names):
            await bot.send_message(chat_id=message.chat.id,
                                   text=transformed_result)
            # write data to storage
            await state.update_data(
                user_items=eq_buffer["user_items"] + [eq],
                equipment_names=eq_buffer["equipment_names"] +
                [transformed_result],
                user_id=message.chat.id,
            )
            # create transfer
            eq_data = equipment.get_equipment(int(eq.split()[0]))
            transfer.create_transfer(eq_data["id"], eq_data["holder"]["id"],
                                     message.chat.id)
        else:
            await bot.send_message(chat_id=message.chat.id,
                                   text="Вы уже взяли данную технику")
    else:
        await bot.send_message(
            chat_id=message.chat.id,
            text="Произошла ошибка в распознавании фото. Попробуйте ещё раз",
        )