Browse Source

Задачи работают!

pull/2/head
Alexei 2 years ago
parent
commit
c4ec7b4b20
  1. 15
      bot_modules/mod_table_operate.py
  2. 363
      bot_modules/tasks.py
  3. 10
      main.py
  4. 5
      template/bd_item_select.py
  5. 15
      template/simple_message.py

15
bot_modules/mod_table_operate.py

@ -131,7 +131,7 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule):
return None return None
child_mod = self.GetModule(self.m_ChildModName) child_mod = self.GetModule(self.m_ChildModName)
cur_buttons = [ cur_buttons = [
keyboard.InlineButton(child_mod.GetButton(ButtonNames.LIST), child_mod.GetSelectPrefix(), a_ItemID, self.GetAccess(), user_access.AccessMode.VIEW), keyboard.InlineButtonWithAccess(child_mod.GetButton(ButtonNames.LIST), child_mod.GetSelectPrefix(), a_ItemID, self.GetAccess(), user_access.AccessMode.VIEW),
] ]
return keyboard.MakeInlineKeyboardButtons(cur_buttons, a_UserGroups) return keyboard.MakeInlineKeyboardButtons(cur_buttons, a_UserGroups)
@ -141,22 +141,23 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule):
a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.KEY)],\ a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.KEY)],\
a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.ACCESS)] a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.ACCESS)]
def ShowMessageTemplate(self, a_Message, keyboard_template_func = None): def ShowMessageTemplate(self, a_Message, Inline_keyboard_template_func = None):
async def ShowMessage(a_CallbackQuery, a_Item): async def ShowMessage(a_CallbackQuery, a_Item):
msg = a_Message.StaticCopy() msg = a_Message.StaticCopy()
# TODO: добавить поддержку языка в a_MessageName # TODO: добавить поддержку языка в a_MessageName
keyboard_func = None Inline_keyboard_func = None
item_access = None item_access = None
if a_Item: if a_Item:
if len(a_Item) < self.m_Table.GetFieldsCount(): if len(a_Item) < self.m_Table.GetFieldsCount() - 1: # Для проектов это нужно. Там на 1 меньше поле. TODO разделить отправку сообщений item_access и Inline_keyboard_func
return simple_message.WorkFuncResult(self.GetMessage(Messages.ERROR_FIND)) return simple_message.WorkFuncResult(self.GetMessage(Messages.ERROR_FIND))
elif len(a_Item) == self.m_Table.GetFieldsCount():
msg.UpdateDesc(self.m_Table.ReplaceAllFieldTags(msg.GetDesc(), a_Item)) msg.UpdateDesc(self.m_Table.ReplaceAllFieldTags(msg.GetDesc(), a_Item))
msg.UpdatePhotoID(a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.PHOTO)]) msg.UpdatePhotoID(a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.PHOTO)])
item_access = a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.ACCESS)] item_access = a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.ACCESS)]
if keyboard_template_func: if Inline_keyboard_template_func:
keyboard_func = keyboard_template_func(a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.KEY)]) Inline_keyboard_func = Inline_keyboard_template_func(a_Item[self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.KEY)])
return simple_message.WorkFuncResult(msg, item_access = item_access, keyboard_func = keyboard_func) return simple_message.WorkFuncResult(msg, item_access = item_access, Inline_keyboard_func = Inline_keyboard_func)
return ShowMessage return ShowMessage
# TODO: delete? # TODO: delete?

363
bot_modules/tasks.py

@ -3,36 +3,27 @@
# Задачи # Задачи
from bot_sys import bot_bd, bd_table, keyboard, user_access from bot_sys import bot_bd, keyboard, user_access, user_messages, bd_table
from bot_modules import start, access, groups, projects, needs, comments from bot_modules import mod_table_operate
from template import bd_item_view, simple_message, bd_item_delete, bd_item_edit, bd_item, bd_item_add, bd_item_select
from aiogram import types
from aiogram.dispatcher import FSMContext from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher import Dispatcher
import sqlite3
class FSMCreateTask(StatesGroup): class FSMCreateTasks(StatesGroup):
name = State() name = State()
desc = State() desc = State()
photo = State() photo = State()
class FSMEditTaskPhotoItem(StatesGroup): class FSMEditTasksPhotoItem(StatesGroup):
item_id = State()
item_field = State() item_field = State()
class FSMEditTaskNameItem(StatesGroup): class FSMEditTasksNameItem(StatesGroup):
item_id = State()
item_field = State() item_field = State()
class FSMEditTaskDescItem(StatesGroup): class FSMEditTasksDescItem(StatesGroup):
item_id = State()
item_field = State() item_field = State()
class FSMEditTaskAccessItem(StatesGroup): class FSMEditTasksAccessItem(StatesGroup):
item_id = State()
item_field = State() item_field = State()
# --------------------------------------------------------- # ---------------------------------------------------------
# БД # БД
@ -57,327 +48,101 @@ table = bd_table.Table(table_name, [
bd_table.TableField(parent_id_field, bd_table.TableFieldDestiny.PARENT_ID, bd_table.TableFieldType.INT), bd_table.TableField(parent_id_field, bd_table.TableFieldDestiny.PARENT_ID, bd_table.TableFieldType.INT),
]) ])
init_bd_cmds = [f'''CREATE TABLE IF NOT EXISTS {table_name}( init_access = f'{user_access.user_access_group_new}=va'
{key_name} INTEGER PRIMARY KEY,
{name_field} TEXT,
{desc_field} TEXT,
{photo_field} TEXT,
{access_field} TEXT,
{create_datetime_field} TEXT,
{parent_id_field} INTEGER
)''',
f"INSERT OR IGNORE INTO module_access (modName, modAccess, itemDefaultAccess) VALUES ('{module_name}', '{user_access.user_access_group_new}=va', '{user_access.user_access_group_new}=va');"
]
select_tasks_prefix = '' fsm = mod_table_operate.FSMs(FSMCreateTasks, FSMEditTasksNameItem, FSMEditTasksDescItem, FSMEditTasksPhotoItem, FSMEditTasksAccessItem)
# --------------------------------------------------------- # ---------------------------------------------------------
# Сообщения # Сообщения и кнопки
tasks_button_name = "✎ Задачи" button_names = {
base_task_message = ''' mod_table_operate.ButtonNames.START: "✎ Задачи",
<b> Задачи</b> mod_table_operate.ButtonNames.LIST: "📃 Список задач",
mod_table_operate.ButtonNames.ADD: "☑ Добавить задачу",
''' mod_table_operate.ButtonNames.EDIT: "🛠 Редактировать задачу",
mod_table_operate.ButtonNames.EDIT_PHOTO: "☐ Изменить изображение у задачи",
list_task_button_name = "📃 Список задач" mod_table_operate.ButtonNames.EDIT_NAME: "≂ Изменить название у задачи",
select_task_message = ''' mod_table_operate.ButtonNames.EDIT_DESC: "𝌴 Изменить описание у задачи",
mod_table_operate.ButtonNames.EDIT_ACCESS: "✋ Изменить доступ к задаче",
mod_table_operate.ButtonNames.DEL: "❌ Удалить задачу",
}
messages = {
mod_table_operate.Messages.START: f'''
<b>{button_names[mod_table_operate.ButtonNames.START]}</b>
''',
mod_table_operate.Messages.SELECT: '''
Пожалуйста, выберите задачу: Пожалуйста, выберите задачу:
''' ''',
mod_table_operate.Messages.ERROR_FIND: '''
error_find_proj_message = '''
Ошибка, задача не найдена Ошибка, задача не найдена
''' ''',
mod_table_operate.Messages.OPEN: f'''
task_open_message = f'''
<b>Задача: #{name_field}</b> <b>Задача: #{name_field}</b>
#{desc_field} #{desc_field}
Время создания: #{create_datetime_field} Время создания: #{create_datetime_field}
''' ''',
mod_table_operate.Messages.CREATE_NAME: '''
# Создание задачи
add_task_button_name = "☑ Добавить задачу"
task_create_name_message = '''
Создание задачи. Шаг 1 Создание задачи. Шаг 1
Введите название задачи: Введите название задачи:
''' ''',
mod_table_operate.Messages.CREATE_DESC: '''
task_create_desc_message = '''
Создание задачи. Шаг 2 Создание задачи. Шаг 2
Введите описание задачи: Введите описание задачи:
''' ''',
mod_table_operate.Messages.CREATE_PHOTO: '''
task_create_photo_message = '''
Создание задачи. Шаг 3 Создание задачи. Шаг 3
Загрузите обложку для задачи (Фото): Загрузите обложку для задачи (Фото):
Она будет отображаться в её описании. Она будет отображаться в её описании.
''' ''',
mod_table_operate.Messages.SUCCESS_CREATE: '''✅ Задача успешно добавлена!''',
task_success_create_message = '''✅ Задача успешно добавлена!''' mod_table_operate.Messages.START_EDIT: '''
# Редактирование задачи.
edit_task_button_name = "🛠 Редактировать задачу"
task_start_edit_message= '''
Пожалуйста, выберите действие: Пожалуйста, выберите действие:
''' ''',
mod_table_operate.Messages.SELECT_TO_EDIT: '''
task_select_to_edit_message = '''
Выберите задачу, которую вы хотите отредактировать. Выберите задачу, которую вы хотите отредактировать.
''' ''',
mod_table_operate.Messages.EDIT_PHOTO: '''
edit_task_photo_button_name = "☐ Изменить изображение у задачи"
task_edit_photo_message = '''
Загрузите новую обложку для задачи (Фото): Загрузите новую обложку для задачи (Фото):
Она будет отображаться в её описании. Она будет отображаться в её описании.
''' ''',
mod_table_operate.Messages.EDIT_NAME: f'''
edit_task_name_button_name = "≂ Изменить название у задачи"
task_edit_name_message = f'''
Текущее название задачи: Текущее название задачи:
#{name_field} #{name_field}
Введите новое название задачи: Введите новое название задачи:
''' ''',
mod_table_operate.Messages.EDIT_DESC: f'''
edit_task_desc_button_name = "𝌴 Изменить описание у задачи"
task_edit_desc_message = f'''
Текущее описание задачи: Текущее описание задачи:
#{desc_field} #{desc_field}
Введите новое описание задачи: Введите новое описание задачи:
''' ''',
mod_table_operate.Messages.EDIT_ACCESS: f'''
edit_task_access_button_name = "✋ Изменить доступ к задаче"
task_edit_access_message = f'''
Текущий доступ к задаче: Текущий доступ к задаче:
#{access_field} #{access_field}
{user_access.user_access_readme} {user_access.user_access_readme}
Введите новую строку доступа: Введите новую строку доступа:
''' ''',
mod_table_operate.Messages.SUCCESS_EDIT: '''✅ Задача успешно отредактирован!''',
task_success_edit_message = '''✅ Задача успешно отредактирована!''' mod_table_operate.Messages.SELECT_TO_DELETE: '''
# Удаление задачи
del_task_button_name = "❌ Удалить задачу"
task_select_to_delete_message = '''
Выберите задачу, которую вы хотите удалить. Выберите задачу, которую вы хотите удалить.
Все потребности в этой задачае так же будут удалены! Все потребности в этой задаче так же будут удалены!
''' ''',
mod_table_operate.Messages.SUCCESS_DELETE: '''✅ Задача успешно удалёна!''',
task_success_delete_message = '''✅ Задача успешно удалена!''' }
# ---------------------------------------------------------
# Работа с кнопками
def GetEditTaskKeyboardButtons(a_Message, a_UserGroups):
cur_buttons = GetModuleButtons() + [
keyboard.ButtonWithAccess(edit_task_photo_button_name, user_access.AccessMode.EDIT, GetAccess()),
keyboard.ButtonWithAccess(edit_task_name_button_name, user_access.AccessMode.EDIT, GetAccess()),
keyboard.ButtonWithAccess(edit_task_desc_button_name, user_access.AccessMode.EDIT, GetAccess()),
keyboard.ButtonWithAccess(edit_task_access_button_name, user_access.AccessMode.ACCEES_EDIT, GetAccess()),
]
mods = [start]
return keyboard.MakeKeyboard(keyboard.GetButtons(mods) + cur_buttons, a_UserGroups)
def GetStartTaskKeyboardButtons(a_Message, a_UserGroups):
cur_buttons = [
keyboard.ButtonWithAccess(list_task_button_name, user_access.AccessMode.VIEW, GetAccess()),
keyboard.ButtonWithAccess(add_task_button_name, user_access.AccessMode.ADD, GetAccess()),
keyboard.ButtonWithAccess(del_task_button_name, user_access.AccessMode.DELETE, GetAccess()),
keyboard.ButtonWithAccess(edit_task_button_name, user_access.AccessMode.EDIT, GetAccess())
]
mods = [start, projects, needs, comments]
return keyboard.MakeKeyboard(keyboard.GetButtons(mods) + cur_buttons, a_UserGroups)
def GetViewItemInlineKeyboardTemplate(a_ItemID):
def GetViewItemInlineKeyboard(a_Message, a_UserGroups):
cur_buttons = [
keyboard.InlineButton(needs.list_need_button_name, needs.select_needs_prefix, a_ItemID, GetAccess(), user_access.AccessMode.VIEW),
]
return keyboard.MakeInlineKeyboard(cur_buttons, a_UserGroups)
return GetViewItemInlineKeyboard
# ---------------------------------------------------------
# Обработка сообщений
# стартовое сообщение
async def TasksOpen(a_Message : types.message, state = None):
return simple_message.WorkFuncResult(base_task_message)
def GetButtonNameAndKeyValueAndAccess(a_Item):
# taskName taskID taskAccess
return a_Item[1], a_Item[0], a_Item[4]
def ShowMessageTemplate(a_StringMessage, keyboard_template_func = None):
async def ShowMessage(a_CallbackQuery : types.CallbackQuery, a_Item):
if (len(a_Item) < 6):
return simple_message.WorkFuncResult(error_find_proj_message)
msg = a_StringMessage.\
replace(f'#{name_field}', a_Item[1]).\
replace(f'#{desc_field}', a_Item[2]).\
replace(f'#{create_datetime_field}', a_Item[5]).\
replace(f'#{access_field}', a_Item[4])
keyboard_func = None
if keyboard_template_func:
keyboard_func = keyboard_template_func(a_Item[0])
return simple_message.WorkFuncResult(msg, photo_id = a_Item[3], item_access = a_Item[4], keyboard_func = keyboard_func)
return ShowMessage
def SimpleMessageTemplateLegacy(a_StringMessage):
async def ShowMessage(a_CallbackQuery : types.CallbackQuery, a_Item):
return simple_message.WorkFuncResult(a_StringMessage)
return ShowMessage
# Удаление задачи
async def TaskPreDelete(a_CallbackQuery : types.CallbackQuery, a_Item):
if (len(a_Item) < 6):
return simple_message.WorkFuncResult(error_find_proj_message)
access = a_Item[4]
return simple_message.WorkFuncResult('', None, item_access = access)
async def TaskPostDelete(a_CallbackQuery : types.CallbackQuery, a_ItemID):
log.Success(f'Задача №{a_ItemID} была удалена пользователем {a_CallbackQuery.from_user.id}.')
#TODO: удалить вложенные
return simple_message.WorkFuncResult(task_success_delete_message)
# ---------------------------------------------------------
# Работа с базой данных задач
def AddBDItemFunc(a_ItemData, a_UserID):
res, error = bot_bd.SQLRequestToBD(f'INSERT INTO {table_name}({photo_field}, {name_field}, {desc_field}, {access_field}, {parent_id_field}, {create_datetime_field}) VALUES(?, ?, ?, ?, ?, {bot_bd.GetBDDateTimeNow()})',
commit = True, return_error = True, param = (a_ItemData[photo_field], a_ItemData[name_field], a_ItemData[desc_field], access.GetItemDefaultAccessForModule(module_name) + f";{a_UserID}=+", a_ItemData[parent_id_field]))
if error:
log.Error(f'Пользоватлель {a_UserID}. Ошибка добавления записи в таблицу {table_name} ({a_ItemData[photo_field]}, {a_ItemData[name_field]}, {a_ItemData[desc_field]}, {access.GetItemDefaultAccessForModule(module_name)}).')
else:
log.Success(f'Пользоватлель {a_UserID}. Добавлена запись в таблицу {table_name} ({a_ItemData[photo_field]}, {a_ItemData[name_field]}, {a_ItemData[desc_field]}, {access.GetItemDefaultAccessForModule(module_name)}).')
return res, error
# ---------------------------------------------------------
# API
# Инициализация БД
def GetInitBDCommands():
return init_bd_cmds
def GetAccess():
return access.GetAccessForModule(module_name)
# Доступные кнопки
def GetModuleButtons():
return [keyboard.ButtonWithAccess(tasks_button_name, user_access.AccessMode.VIEW, GetAccess())]
# Обработка кнопок
def RegisterHandlers(dp : Dispatcher):
defaul_keyboard_func = GetStartTaskKeyboardButtons
def RegisterSelectParent(a_ButtonName, access_mode):
a_PrefixBase = a_ButtonName
return bd_item_select.FirstSelectBDItemRegisterHandlers(dp, \
a_PrefixBase, \
a_ButtonName, \
projects.table_name, \
projects.key_name, \
projects.GetButtonNameAndKeyValueAndAccess, \
projects.select_project_message, \
projects.GetAccess, access_mode = access_mode\
)
# Стартовое сообщение
dp.register_message_handler(simple_message.SimpleMessageTemplateLegacy(TasksOpen, defaul_keyboard_func, GetAccess), text = tasks_button_name)
# Список задач
a_Prefix = RegisterSelectParent(list_task_button_name, user_access.AccessMode.VIEW)
bd_item_view.LastSelectAndShowBDItemRegisterHandlers(dp, \
a_Prefix, parent_id_field, \
table_name, key_name, \
ShowMessageTemplate(task_open_message, GetViewItemInlineKeyboardTemplate), \
GetButtonNameAndKeyValueAndAccess, \
select_task_message, \
GetAccess, \
defaul_keyboard_func, \
access_mode = user_access.AccessMode.VIEW\
)
global select_tasks_prefix
select_tasks_prefix = a_Prefix
# Удаление задачи
a_Prefix = RegisterSelectParent(del_task_button_name, user_access.AccessMode.DELETE)
bd_item_delete.DeleteBDItemRegisterHandlers(dp, \
a_Prefix, \
bd_item.GetCheckForPrefixFunc(a_Prefix), \
table_name, \
key_name, \
parent_id_field, \
TaskPreDelete, \
TaskPostDelete, \
GetButtonNameAndKeyValueAndAccess, \
select_task_message, \
GetAccess, \
defaul_keyboard_func\
)
# Добавление задачи
a_Prefix = RegisterSelectParent(add_task_button_name, user_access.AccessMode.ADD)
bd_item_add.AddBDItem3RegisterHandlers(dp, \
bd_item.GetCheckForPrefixFunc(a_Prefix), \
FSMCreateTask, \
FSMCreateTask.name,\
FSMCreateTask.desc, \
FSMCreateTask.photo,\
AddBDItemFunc, \
SimpleMessageTemplateLegacy(task_create_name_message), \
SimpleMessageTemplateLegacy(task_create_desc_message), \
SimpleMessageTemplateLegacy(task_create_photo_message), \
SimpleMessageTemplateLegacy(task_success_create_message), \
a_Prefix,\
projects.table_name, \
projects.key_name, \
name_field, \
desc_field, \
photo_field, \
GetButtonNameAndKeyValueAndAccess, \
GetAccess, \
GetStartTaskKeyboardButtons\
)
def RegisterEdit(a_ButtonName, a_FSM, a_EditMessage, a_FieldName, a_FieldType, a_AccessMode = user_access.AccessMode.EDIT):
a_Prefix = RegisterSelectParent(a_ButtonName, a_AccessMode)
bd_item_edit.EditBDItemRegisterHandlers(dp, \
a_Prefix, \
a_FSM, \
bd_item.GetCheckForPrefixFunc(a_Prefix), \
task_select_to_edit_message, \
ShowMessageTemplate(a_EditMessage), \
ShowMessageTemplate(task_success_edit_message), \
table_name, \
key_name, \
parent_id_field, \
a_FieldName, \
GetButtonNameAndKeyValueAndAccess, \
GetAccess, \
edit_keyboard_func, \
access_mode = a_AccessMode, \
field_type = a_FieldType\
)
# Редактирование задачи class ModuleTasks(mod_table_operate.TableOperateModule):
edit_keyboard_func = GetEditTaskKeyboardButtons def __init__(self, a_ParentModName, a_ChildModName, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_Log):
dp.register_message_handler(simple_message.InfoMessageTemplateLegacy(task_start_edit_message, edit_keyboard_func, GetAccess, access_mode = user_access.AccessMode.EDIT), text = edit_task_button_name) super().__init__(table, messages, button_names, fsm, a_ParentModName, a_ChildModName, init_access, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_Log)
RegisterEdit(edit_task_photo_button_name, FSMEditTaskPhotoItem, task_edit_photo_message, photo_field, bd_item.FieldType.photo) def GetName(self):
RegisterEdit(edit_task_name_button_name, FSMEditTaskNameItem, task_edit_name_message, name_field, bd_item.FieldType.text) return module_name
RegisterEdit(edit_task_desc_button_name, FSMEditTaskDescItem, task_edit_desc_message, desc_field, bd_item.FieldType.text)
RegisterEdit(edit_task_access_button_name, FSMEditTaskAccessItem, task_edit_access_message, access_field, bd_item.FieldType.text)

10
main.py

@ -6,7 +6,7 @@ log_start_message = 'Бот успешно запущен!'
import os import os
from bot_sys import config, log, bot_bd, user_access, aiogram_bot, bot_messages, bd_table from bot_sys import config, log, bot_bd, user_access, aiogram_bot, bot_messages, bd_table
from bot_modules import mod_agregator, start, profile, backup, groups, access, projects #, projects, , access, , tasks, needs, comments, messages, , languages from bot_modules import mod_agregator, start, profile, backup, groups, access, projects, tasks #, projects, , access, , , needs, comments, messages, , languages
g_Log = log g_Log = log
g_Bot = aiogram_bot.AiogramBot(config.GetTelegramBotApiToken(), bot_bd.GetBDFileName(), config.GetRootIDs(), g_Log) g_Bot = aiogram_bot.AiogramBot(config.GetTelegramBotApiToken(), bot_bd.GetBDFileName(), config.GetRootIDs(), g_Log)
@ -38,10 +38,14 @@ g_ModuleAgregator.AddModule(mod_profile)
mod_backup = backup.ModuleBackup(start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) mod_backup = backup.ModuleBackup(start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log)
g_ModuleAgregator.AddModule(mod_backup) g_ModuleAgregator.AddModule(mod_backup)
start_mod_name_list = [mod_start_name]#, mod_tasks_name, mod_needs_name, mod_comments_name] start_mod_name_list = [mod_start_name, mod_tasks_name]#, , mod_needs_name, mod_comments_name]
mod_project = projects.ModuleProjects(None, None, start_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log) mod_project = projects.ModuleProjects(None, mod_tasks_name, start_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log)
g_ModuleAgregator.AddModule(mod_project) g_ModuleAgregator.AddModule(mod_project)
start_mod_name_list = [mod_start_name, mod_projects_name]#, mod_needs_name, mod_comments_name]
mod_tasks = tasks.ModuleTasks(mod_projects_name, None, start_mod_name_list, start_mod_list, g_Bot, g_ModuleAgregator, g_BotMessages, g_BotButtons, g_Log)
g_ModuleAgregator.AddModule(mod_tasks)
start_mod_name_list = [#, '', , '', , 'languages'] start_mod_name_list = [#, '', , '', , 'languages']
mod_profile.GetName(), mod_profile.GetName(),
mod_backup.GetName(), mod_backup.GetName(),

5
template/bd_item_select.py

@ -23,14 +23,13 @@ def GetBDItemsListKeyboardButtonsTemplate(a_Bot, a_TableName : str, a_ParentIDFi
access = '' access = ''
if bname: if bname:
b = keyboard.InlineButtonWithAccess(bname, a_NextPrefix, key_value, access, access_mode) b = keyboard.InlineButtonWithAccess(bname, a_NextPrefix, key_value, access, access_mode)
print('MakeInlineKeyboardButtons', b, bname, a_NextPrefix, key_value, access, access_mode)
items_button_list += [b] items_button_list += [b]
return keyboard.MakeInlineKeyboardButtons(items_button_list, a_UserGroups) return keyboard.MakeInlineKeyboardButtons(items_button_list, a_UserGroups)
return GetBDItemsListKeyboardButtons return GetBDItemsListKeyboardButtons
def SelectDBItemTemplate(a_Bot, a_TableName : str, a_ParentIDFieldName, a_GetButtonNameAndKeyValueAndAccessFunc, a_StartMessage, a_AccessFunc, a_PrevPrefix, a_NextPrefix, access_mode = user_access.AccessMode.VIEW): def SelectDBItemTemplate(a_Bot, a_TableName : str, a_ParentIDFieldName, a_GetButtonNameAndKeyValueAndAccessFunc, a_StartMessage, a_AccessFunc, a_PrevPrefix, a_NextPrefix, access_mode = user_access.AccessMode.VIEW):
keyboard_func = GetBDItemsListKeyboardButtonsTemplate(a_Bot, a_TableName, a_ParentIDFieldName, a_PrevPrefix, a_NextPrefix, a_GetButtonNameAndKeyValueAndAccessFunc) inline_keyboard_func = GetBDItemsListKeyboardButtonsTemplate(a_Bot, a_TableName, a_ParentIDFieldName, a_PrevPrefix, a_NextPrefix, a_GetButtonNameAndKeyValueAndAccessFunc)
return simple_message.InfoMessageTemplate(a_Bot, a_StartMessage, None, keyboard_func, a_AccessFunc, access_mode) return simple_message.InfoMessageTemplate(a_Bot, a_StartMessage, None, inline_keyboard_func, a_AccessFunc, access_mode)
def FirstSelectBDItemRegisterHandlers(a_Bot, a_PrefixBase, a_ButtonName, a_TableName : str, a_KeyName, a_GetButtonNameAndKeyValueAndAccessFunc, a_StartMessage, a_AccessFunc, access_mode = user_access.AccessMode.VIEW): def FirstSelectBDItemRegisterHandlers(a_Bot, a_PrefixBase, a_ButtonName, a_TableName : str, a_KeyName, a_GetButtonNameAndKeyValueAndAccessFunc, a_StartMessage, a_AccessFunc, access_mode = user_access.AccessMode.VIEW):

15
template/simple_message.py

@ -29,10 +29,11 @@ async def AccessDeniedMessage(a_Bot, a_GetButtonsFunc, a_UserID, a_Message, user
return await SendMessage(a_Bot, bot_messages.MakeBotMessage(access_utils.access_denied_message), a_GetButtonsFunc, None, a_UserID, a_Message, user_groups) return await SendMessage(a_Bot, bot_messages.MakeBotMessage(access_utils.access_denied_message), a_GetButtonsFunc, None, a_UserID, a_Message, user_groups)
class WorkFuncResult(): class WorkFuncResult():
def __init__(self, a_BotMessage, keyboard_func = None, item_access = None): def __init__(self, a_BotMessage, keyboard_func = None, Inline_keyboard_func = None, item_access = None):
self.m_BotMessage = a_BotMessage self.m_BotMessage = a_BotMessage
self.item_access = item_access self.item_access = item_access
self.keyboard_func = keyboard_func self.keyboard_func = keyboard_func
self.Inline_keyboard_func = Inline_keyboard_func
def InfoMessageTemplate(a_Bot, a_HelpMessage, a_GetButtonsFunc, a_GetInlineButtonsFunc, a_AccessFunc, access_mode = user_access.AccessMode.VIEW): def InfoMessageTemplate(a_Bot, a_HelpMessage, a_GetButtonsFunc, a_GetInlineButtonsFunc, a_AccessFunc, access_mode = user_access.AccessMode.VIEW):
async def GetMessage(a_Message : types.message, state = None): async def GetMessage(a_Message : types.message, state = None):
@ -52,7 +53,11 @@ def SimpleMessageTemplate(a_Bot, a_WorkFunc, a_GetButtonsFunc, a_GetInlineButton
if res is None: if res is None:
return return
keyboard_func = a_GetInlineButtonsFunc Inline_keyboard_func = a_GetInlineButtonsFunc
if res.Inline_keyboard_func:
Inline_keyboard_func = res.Inline_keyboard_func
keyboard_func = a_GetButtonsFunc
if res.keyboard_func: if res.keyboard_func:
keyboard_func = res.keyboard_func keyboard_func = res.keyboard_func
@ -61,7 +66,7 @@ def SimpleMessageTemplate(a_Bot, a_WorkFunc, a_GetButtonsFunc, a_GetInlineButton
return return
if not res.item_access is None and not user_access.CheckAccess(a_Bot.GetRootIDs(), res.item_access, user_groups, access_mode): if not res.item_access is None and not user_access.CheckAccess(a_Bot.GetRootIDs(), res.item_access, user_groups, access_mode):
return await AccessDeniedMessage(a_Bot, a_GetButtonsFunc, user_id, a_Message, user_groups) return await AccessDeniedMessage(a_Bot, keyboard_func, user_id, a_Message, user_groups)
msg = msg.GetMessageForLang(lang).StaticCopy() msg = msg.GetMessageForLang(lang).StaticCopy()
@ -69,7 +74,7 @@ def SimpleMessageTemplate(a_Bot, a_WorkFunc, a_GetButtonsFunc, a_GetInlineButton
user_id, user_id,
msg.GetDesc(), msg.GetDesc(),
msg.GetPhotoID(), msg.GetPhotoID(),
ProxyGetButtonsTemplate(a_GetButtonsFunc)(a_Message, user_groups), ProxyGetButtonsTemplate(keyboard_func)(a_Message, user_groups),
ProxyGetButtonsTemplate(keyboard_func)(a_Message, user_groups) ProxyGetButtonsTemplate(Inline_keyboard_func)(a_Message, user_groups)
) )
return SimpleMessage return SimpleMessage

Loading…
Cancel
Save