Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # need to do some mapping
- SOME_CONST_DEFINES_DICTS_FOR_CALLBACK_DATA_BY_I = [
- None,
- ...,
- forms_of_education, # mapped
- institutes, # mapped
- ...
- ]
- SOME_CONST_DEFINES_DICTS_FOR_CALLBACK_EDIT_BY_I = [
- ...
- ]
- # Global funcs
- # -------------------
- def get_go_back_state(i: int):
- go_back_state = getattr(PersonalInfo, SET_INFO_STATE_PREFIX + personal_info_query_names[i - 1])
- if i == 0:
- go_back_state = SubmitApplication.start_menu
- return go_back_state
- def get_set_info_state(i: int):
- set_info_state = getattr(PersonalInfo, SET_INFO_STATE_PREFIX + personal_info_query_names[(_i + 1) % n])
- if i + 1 == n:
- set_info_state = PersonalInfo.personal_info_received
- return set_info_state
- def get_message(is_message: boolean, message_or_callback: types.Message | types.CallbackQuery):
- if is_message:
- return message_or_callback
- return message_or_callback.message
- def _set_info_database_wrapped(i: int, is_message: boolean):
- async def _set_info_database(message_or_callback: types.Message | types.CallbackQuery):
- message = get_message(is_message, message_or_callback)
- text = ''
- if is_message:
- text = message.text
- else:
- text = SOME_CONST_DEFINES_DICTS_FOR_CALLBACK_DATA_BY_I[i].get(message_or_callback.data.removeprefix(personal_info_query_names[i] + '_'))
- success = True
- try:
- func: function = getattr(database, SET_INFO_DB_PREFIX + personal_info_query_name)
- func(id, text)
- except Exception as e:
- logging.exception(e, exc_info=True)
- await message.answer(responses["something_went_wrong"],
- parse_mode="HTML")
- success = False
- if success and not is_message:
- await message.edit_text(text=SOME_CONST_DEFINES_DICTS_FOR_CALLBACK_EDIT_BY_I[i], parse_mode="HTML")
- return success
- return _set_info_database
- def info_go_back_wrapped(i: int, is_message):
- async def info_go_back(message_or_callback: types.Message | types.CallbackQuery, state: FSMContext):
- message = get_message(is_message, message_or_callback)
- await state.set_state(get_go_back_state(i))
- await message.delete()
- await message.answer(text=responses["action_cancelled"],
- reply_markup=personal_info_reply_markup[i],
- parse_mode="HTML",
- disable_web_page_preview=True)
- return info_go_back
- def set_info_wrapped(i: int, is_message: boolean):
- set_info_database = _set_info_database_wrapped(i, is_message)
- async def set_info(message_or_callback: types.Message | types.CallbackQuery, state: FSMContext):
- message = get_message(is_message, message_or_callback)
- if await set_info_database(message_or_callback):
- await state.set_state(get_set_info_state(i))
- await message.answer(text=responses[personal_info_responses[i]],
- reply_markup=personal_info_reply_markup[i+1],
- parse_mode="HTML")
- return set_info
- def change_info_wrapped(i: int, is_message: boolean):
- set_info_database = _set_info_database_wrapped(i, is_message)
- async def change_info(message_or_callback: types.Message | types.CallbackQuery, state: FSMContext):
- message = get_message(is_message, message_or_callback)
- if await set_info_database(message_or_callback):
- await state.set_state(SubmitApplication.start_menu)
- await message.answer(text=responses[personal_info_query_names[i] + CHANGE_INFO_TEXT_POSTFIX],
- reply_markup=keyboards.APPLICATION_MENU,
- parse_mode="HTML")
- return change_info
- # -------------------
Advertisement
Add Comment
Please, Sign In to add comment