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="Произошла ошибка в распознавании фото. Попробуйте ещё раз", )
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()
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()
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()
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="Произошла ошибка в распознавании фото. Попробуйте ещё раз", )