Spaces:
Runtime error
Runtime error
File size: 5,325 Bytes
339f372 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
from aiogram import Router, F
from aiogram.types import Message, CallbackQuery
from aiogram.fsm.context import FSMContext
from app.database import requests as rq
from app.keyboards import admin_keyboards as kb
from app.states import AdminAddService, AdminStates
from app.middleware.authentification import admin_check
router = Router()
@router.message(F.text == 'Отредактировать каталог услуг')
async def catalog_editor_start(message: Message):
if not await admin_check(message, {}):
await message.answer("У вас нет доступа к админ-панели")
return
await message.answer(
'Текущие услуги. Нажмите на услугу для редактирования',
reply_markup=await kb.admin_keyboard_service_catalog()
)
@router.callback_query(F.data.startswith('change_service_'))
async def edit_service(callback: CallbackQuery):
await callback.answer('')
service = await rq.get_service_info(callback.data.split('_')[2])
await callback.message.answer(f'Услуга {service.service_name} \n\n'
f'Описание: {service.service_description}\n'
f'Цена: {service.service_price} рублей \n\n'
f'Что Вы хотите изменить?',
reply_markup=await kb.admin_change_service(service.id))
@router.callback_query(F.data == 'add_service')
async def add_service(callback: CallbackQuery, state: FSMContext):
await callback.answer('Добавляем услугу')
await state.set_state(AdminAddService.admin_add_name)
await callback.message.answer('Введите название новой услуги')
@router.message(AdminAddService.admin_add_name)
async def add_name(message: Message, state: FSMContext):
await state.update_data(name=message.text)
await state.set_state(AdminAddService.admin_add_desc)
await message.answer('Введите описание новой услуги')
@router.message(AdminAddService.admin_add_desc)
async def add_desc(message: Message, state: FSMContext):
await state.update_data(desc=message.text)
await state.set_state(AdminAddService.admin_add_price)
await message.answer('Введите цену услуги в рублях')
@router.message(AdminAddService.admin_add_price)
async def add_price(message: Message, state: FSMContext):
await state.update_data(price=message.text)
data = await state.get_data()
await rq.add_service(data['name'], data['desc'], data['price'], True)
await message.answer('Услуга сохранена! Теперь можно изменить ее, выбрав услугу в меню и отредактировав',
reply_markup=kb.admin_back)
await state.clear()
@router.callback_query(F.data.startswith('editservice_'))
async def begin_service_edit(callback: CallbackQuery, state: FSMContext):
await callback.answer('')
await state.set_state(AdminStates.admin_edit_service)
await state.update_data(service_id=callback.data.split('_')[2])
await state.update_data(parameter_changed=callback.data.split("_")[1])
replace_dict = {'name': 'ое название', 'desc': 'ое описание', 'price': 'ую цену'}
await callback.message.answer(f'Введите нов{replace_dict[callback.data.split("_")[1]]} услуги')
@router.message(AdminStates.admin_edit_service)
async def finish_service_edit(message: Message, state: FSMContext):
await state.update_data(change=message.text)
data = await state.get_data()
await rq.edit_service(data['service_id'], data['parameter_changed'], data['change'], True)
await state.clear()
await message.answer(f'Информация была обновлена, можно вернуться на главную', reply_markup=kb.admin_back)
@router.callback_query(F.data.startswith('deleteservice_'))
async def confirm_service_deletion(callback: CallbackQuery, state: FSMContext):
await callback.answer('')
await state.set_state(AdminStates.admin_delete_service)
await state.update_data(serv_id=callback.data.split("_")[1])
await callback.message.answer(f'Вы уверены, что хотите удалить услугу?',
reply_markup=kb.yes_no_keyboard)
@router.message(AdminStates.admin_delete_service)
async def delete_or_not_delete(message: Message, state: FSMContext):
if message.text == 'Нет':
await state.clear()
await message.answer('Тогда вернемся в меню :)', reply_markup=kb.admin_back)
if message.text == 'Да':
data = await state.get_data()
await rq.delete_service(data['serv_id'])
await state.clear()
await message.answer('Услуга была успешно удалена! Можно вернуться в меню', reply_markup=kb.admin_back)
@router.callback_query(F.data == 'admin_to_main')
async def return_to_main(callback: CallbackQuery):
await callback.answer('Возвращаемся в меню')
await callback.message.answer('Здравствуйте! Что Вы хотите сделать?', reply_markup=kb.admin_main) |