class DataDeletionManager:
def __init__(self, dp: Dispatcher):
self.dp = dp
self.register_handlers()
def register_handlers(self):
@self.dp.callback_query(SalesDataCallback.filter(F.foo == 'delete_date'))
@user_permission
async def command_delete_custom_date(
query: CallbackQuery,
state: FSMContext,
callback_data: SalesDataCallback,
):
await query.message.edit_text(
text=f"За какой период вы хотите удалить данные? Напишите дату 'YYYY.MM'.\n"
f"Например: <code>{delete_last_month_date()}</code>",
parse_mode='HTML',
reply_markup=None
)
await state.set_state(Form.del_custom_data)
@self.dp.message(Form.del_custom_data)
@user_permission
async def command_del_custom_date(
message: Message,
state: FSMContext
) -> None:
try:
custom_date = message.text.strip()
if not re.match(r'^\d{4}\.\d{2}$', custom_date):
await message.answer(f'Не верный формат - {custom_date} должно быть YYYY.MM', parse_mode='HTML')
await state.clear()
await return_to_main_menu(message, message_text='Произошла ошибка возвращаемся в Главное меню.',
state=state)
return
await message.answer(f'Дата: <b>{custom_date}</b> принята.', parse_mode='HTML')
# TODO: Нужно дописать саму функцию удаления
# TODO: Нужно сделать проверку на добавления файлов, чтобы мы не могли загружать в прошлое и будущее
finally:
await state.clear()