diff --git a/bot_modules/projects.py b/bot_modules/projects.py index 3198382..ef1d32f 100644 --- a/bot_modules/projects.py +++ b/bot_modules/projects.py @@ -26,9 +26,11 @@ init_bd_cmd = '''CREATE TABLE IF NOT EXISTS projects( # --------------------------------------------------------- # Сообщения -select_project_message = ''' +base_project_message = ''' 🛒 Проекты +''' +select_project_message = ''' Пожалуйста, выберите проект: ''' @@ -43,6 +45,9 @@ project_open_message = ''' ''' projects_button_name = "📰 Проекты" +add_project_button_name = "📰 Добавить проект" +del_project_button_name = "📰 Удалить проект" +edit_project_button_name = "📰 Редактировать проект" # Префиксы select_project_callback_prefix = 'project:' @@ -50,36 +55,47 @@ select_project_callback_prefix = 'project:' # --------------------------------------------------------- # Работа с кнопками -def GetStartKeyboardButtons(a_UserAccess): +def GetEditProjectKeyboardButtons(a_UserAccess, a_ParentID): + proj_buttons = [add_project_button_name, del_project_button_name, edit_project_button_name] mods = [start] - return keyboard.MakeKeyboardForMods(mods, a_UserAccess) + return keyboard.MakeKeyboard(keyboard.GetButtons(mods, a_UserAccess) + proj_buttons) + +def GetProjectsListKeyboardButtons(a_UserAccess, a_ParentID): + projects = GetProjectList(a_ParentID) + projects_button_list = [] + for t in projects: + projects_button_list += [keyboard.Button(str(t[1]), t[4])] + return keyboard.MakeInlineKeyboard(projects_button_list, select_project_callback_prefix) + +def GetUserAccess(a_UserID): + return None # --------------------------------------------------------- # Обработка сообщений # Отображение всех проектов без родителя -async def ProjectsOpen(a_Message): - projects = GetProjectList(0) - projects_button_list = [] - for t in projects: - b = keyboard.Button(str(t[1]), t[4]) - await bot.send_message(a_Message.from_user.id, select_project_message, reply_markup=keyboard.MakeInlineKeyboard(projects_button_list, select_project_callback_prefix)) +async def ProjectsOpen(a_Message, **kwargs): + print('test', kwargs) + user_access = GetUserAccess(a_Message.from_user.id) + await bot.send_message(a_Message.from_user.id, base_project_message, reply_markup = GetEditProjectKeyboardButtons(user_access, 0)) + await bot.send_message(a_Message.from_user.id, select_project_message, reply_markup = GetProjectsListKeyboardButtons(user_access, 0)) async def ShowProject(a_CallbackQuery : types.CallbackQuery): project_id = str(a_CallbackQuery.data).replace(select_project_callback_prefix, '') + user_access = GetUserAccess(a_CallbackQuery.from_user.id) project = GetProject(project_id) if len(project) != 1: log.Error(f'Проект не найден {project_id}') msg = Ошибка.replace('@project_id', project_id) - await bot.send_message(a_CallbackQuery.from_user.id, msg, reply_markup=keyboard.MakeKeyboardForMods([start])) + await bot.send_message(a_CallbackQuery.from_user.id, msg, reply_markup = GetEditProjectKeyboardButtons(user_access, project_id)) return p = project[0] msg = project_open_message.replace('@proj_name', p[1]).replace('@proj_desk', p[2]) - await bot.send_photo(a_CallbackQuery.from_user.id, p[0], msg, reply_markup=keyboard.MakeKeyboardForMods([start])) + await bot.send_photo(a_CallbackQuery.from_user.id, p[0], msg, reply_markup = GetEditProjectKeyboardButtons(user_access, project_id)) # --------------------------------------------------------- -# Работа с базой данных пользователей +# Работа с базой данных проектов def GetProjectList(a_ParentID): db = sqlite3.connect(bot_bd.GetBDFileName()) @@ -92,7 +108,7 @@ def GetProjectList(a_ParentID): def GetProject(a_ProjectID): db = sqlite3.connect(bot_bd.GetBDFileName()) cursor = db.cursor() - project = cursor.execute('SELECT * FROM categories WHERE catID = ?', ([catID])).fetchall() + project = cursor.execute('SELECT * FROM projects WHERE projectID = ?', ([a_ProjectID])).fetchall() cursor.close() db.close() return project @@ -112,3 +128,10 @@ def GetButtonNames(a_UserAccess): def RegisterHandlers(dp : Dispatcher): dp.register_message_handler(ProjectsOpen, text = projects_button_name) dp.register_callback_query_handler(ShowProject, lambda x: x.data.startswith(select_project_callback_prefix)) +''' + dp.register_message_handler(ProjectCreate, text = add_project_button_name) + dp.register_message_handler(ProjectDelete, text = del_project_button_name) + dp.register_callback_query_handler(catDelete, lambda x: x.data.startswith('delcat ')) + dp.register_message_handler(ProjectPhotoLoad, content_types = ['photo'], state = FSMCreateCategory.catPhoto) + dp.register_message_handler(ProjectNameLoad, state = FSMCreateCategory.catName) + dp.register_message_handler(ProjectDescLoad, state = FSMCreateCategory.catDesc)''' diff --git a/bot_sys/keyboard.py b/bot_sys/keyboard.py index 52a00e6..9f314d2 100644 --- a/bot_sys/keyboard.py +++ b/bot_sys/keyboard.py @@ -25,13 +25,15 @@ def MakeKeyboard(a_ButtonList): def MakeKeyboardForMods(a_ModList, a_UserAccess): names = GetButtons(a_ModList, a_UserAccess) return MakeKeyboard(names) + buttons = GetButtons(a_ModList, a_UserAccess) + return MakeKeyboard(buttons) class Button: def __init__(self, a_Label, a_CallBackData): self.label = a_Label self.callback_data = a_CallBackData -def MakeInlineKeyboard(a_ButtonList, a_CallBackPrefix): - inline_keyboard = InlineKeyboardMarkup(resize_keyboard=True, row_width=2) +def MakeInlineKeyboard(a_ButtonList, a_CallBackPrefix): # class Button + inline_keyboard = InlineKeyboardMarkup(resize_keyboard = True, row_width = 2) for b in a_ButtonList: - inline_keyboard.insert(types.InlineKeyboardButton(text=b.label, callback_data=f'{a_CallBackPrefix}{b.callback_data}')) + inline_keyboard.insert(types.InlineKeyboardButton(text = b.label, callback_data = f'{a_CallBackPrefix}{b.callback_data}'))