diff --git a/bot_modules/authorize.py b/bot_modules/authorize.py index dced8b2..02e4763 100644 --- a/bot_modules/authorize.py +++ b/bot_modules/authorize.py @@ -241,11 +241,14 @@ messages = { } messages_subscribes = { - mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ADD):f'''Данные по авторизации созданы''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD):f'''Данные по авторизации созданы''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT):f'''Данные по авторизации отредактированы''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL):f'''Данные по авторизации удалены''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_EDIT):f'''Данные по авторизации отредактированы #item_id''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_DEL):f'''Данные по авторизации удалены #item_id''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD_WITH_PARENT):f'''Данные по авторизации созданы''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT_WITH_PARENT):f'''Данные по авторизации отредактированы''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL_WITH_PARENT):f'''Данные по авторизации удалены''', } messages.update(messages_subscribes) diff --git a/bot_modules/comments.py b/bot_modules/comments.py index b5c8457..6f6be15 100644 --- a/bot_modules/comments.py +++ b/bot_modules/comments.py @@ -119,11 +119,14 @@ messages = { } messages_subscribes = { - mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ADD):f'''Комментарий создан''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD):f'''Комментарий создан''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT):f'''Комментарий отредактирован''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL):f'''Комментарий удалён''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_EDIT):f'''Комментарий отредактирован #item_id''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_DEL):f'''Комментарий удалён #item_id''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD_WITH_PARENT):f'''Комментарий создан''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT_WITH_PARENT):f'''Комментарий отредактирован''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL_WITH_PARENT):f'''Комментарий удалён''', } messages.update(messages_subscribes) diff --git a/bot_modules/mod_table_operate.py b/bot_modules/mod_table_operate.py index 6e3505b..eaae5c4 100644 --- a/bot_modules/mod_table_operate.py +++ b/bot_modules/mod_table_operate.py @@ -51,6 +51,12 @@ class Messages(Enum): SELECT_TO_DELETE = auto() SUCCESS_DELETE = auto() +def GetCurItem(a_Bot, a_TableName, a_KeyName, a_KeyValue): + items = bd_item.GetBDItemsTemplate(a_Bot, a_TableName, a_KeyName)(a_KeyValue) + if len(items) == 1: + return items[0] + return None + create_fsm_create_cmd = ''' class FSMCreate{a_ModName}(StatesGroup): {items} @@ -253,6 +259,13 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): item_id = a_ItemID await self.SendSubscribe(subscribe_type, item_id, user_id) + parent_id_field = self.m_Table.GetFieldNameByDestiny(bd_table.TableFieldDestiny.PARENT_ID) + + if parent_id_field and a_ItemData[parent_id_field]: + subscribe_type = bot_subscribes.SubscribeType.ANY_ITEM_DEL_WITH_PARENT + item_id = a_ItemData[parent_id_field] + await self.SendSubscribe(subscribe_type, item_id, user_id) + return simple_message.WorkFuncResult(self.GetMessage(Messages.SUCCESS_DELETE)) async def AddBDItemFunc(self, a_ItemData, a_UserID): @@ -296,10 +309,15 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): else: self.m_Log.Success(f'Пользователь {a_UserID}. Добавлена запись в таблицу {request} {param}.') - subscribe_type = bot_subscribes.SubscribeType.ADD + subscribe_type = bot_subscribes.SubscribeType.ANY_ITEM_ADD item_id = -1 await self.SendSubscribe(subscribe_type, item_id, a_UserID) + if parent_id_field and a_ItemData[parent_id_field]: + subscribe_type = bot_subscribes.SubscribeType.ANY_ITEM_ADD_WITH_PARENT + item_id = a_ItemData[parent_id_field] + await self.SendSubscribe(subscribe_type, item_id, a_UserID) + return res, error async def SendSubscribe(self, a_Type, a_ItemID, a_OwnerUserID): @@ -370,6 +388,18 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): await self.SendSubscribe(subscribe_type, item_id, a_EditUserID) + table_name = self.m_Table.GetName() + key_name = self.GetKeyFieldName() + + cur_item = GetCurItem(self.m_Bot, table_name, key_name, a_ItemID) + print(cur_item) + + parent_id_field_index = self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.PARENT_ID) + if parent_id_field_index and cur_item and cur_item[parent_id_field_index]: + subscribe_type = bot_subscribes.SubscribeType.ANY_ITEM_EDIT_WITH_PARENT + item_id = cur_item[parent_id_field_index] + await self.SendSubscribe(subscribe_type, item_id, a_EditUserID) + def RegisterEdit(self, a_Field, a_AccessMode = user_access.AccessMode.EDIT): a_ButtonName = self.GetButton(EditButton(a_Field.m_Destiny)) a_EditMessage = self.GetMessage(EditMessage(a_Field.m_Destiny)) @@ -392,7 +422,7 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): GetButtonNameAndKeyValueAndAccess = self.m_GetButtonNameAndKeyValueAndAccessFunc GetAccess = self.m_GetAccessFunc - a_Prefix = self.RegisterSelect(a_ButtonName, a_AccessMode, only_parent = True) + a_Prefix = self.RegisterSelect(a_ButtonName, user_access.AccessMode.VIEW, only_parent = True) bd_item_edit.EditBDItemRegisterHandlers(self.m_Bot, \ self.SelectSourceTemplate(a_Prefix, a_ButtonName), \ @@ -537,7 +567,7 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): # Удаление a_ButtonName = self.GetButton(ButtonNames.DEL) if a_ButtonName: - a_Prefix = self.RegisterSelect(a_ButtonName, user_access.AccessMode.DELETE) + a_Prefix = self.RegisterSelect(a_ButtonName, user_access.AccessMode.VIEW) bd_item_delete.DeleteBDItemRegisterHandlers(self.m_Bot, \ a_Prefix, \ table_name, \ @@ -551,7 +581,7 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): # Добавление a_ButtonName = self.GetButton(ButtonNames.ADD) if a_ButtonName: - a_Prefix = self.RegisterSelect(a_ButtonName, user_access.AccessMode.ADD, only_parent = True) + a_Prefix = self.RegisterSelect(a_ButtonName, user_access.AccessMode.VIEW, only_parent = True) check_func = bd_item.GetCheckForTextFunc(a_ButtonName) if a_Prefix: diff --git a/bot_modules/needs.py b/bot_modules/needs.py index ace1d88..0bba8ba 100644 --- a/bot_modules/needs.py +++ b/bot_modules/needs.py @@ -120,11 +120,14 @@ messages = { } messages_subscribes = { - mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ADD):f'''Потребность создана''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD):f'''Потребность создана''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT):f'''Потребность отредактирована''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL):f'''Потребность удалёна''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_EDIT):f'''Потребность отредактирована #item_id''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_DEL):f'''Потребность удалёна #item_id''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD_WITH_PARENT):f'''Потребность создана''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT_WITH_PARENT):f'''Потребность отредактирована''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL_WITH_PARENT):f'''Потребность удалёна''', } messages.update(messages_subscribes) diff --git a/bot_modules/orders.py b/bot_modules/orders.py index be1e655..1f8ecdb 100644 --- a/bot_modules/orders.py +++ b/bot_modules/orders.py @@ -166,11 +166,14 @@ messages_order_status = { messages.update(messages_order_status) messages_subscribes = { - mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ADD):f'''Заказ создан''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD):f'''Заказ создан''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT):f'''Заказ отредактирован''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL):f'''Заказ удалён''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_EDIT):f'''Заказ отредактирован #item_id''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_DEL):f'''Заказ удалён #item_id''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD_WITH_PARENT):f'''Заказ создан''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT_WITH_PARENT):f'''Заказ отредактирован''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL_WITH_PARENT):f'''Заказ удалён''', } messages.update(messages_subscribes) diff --git a/bot_modules/orders_cat.py b/bot_modules/orders_cat.py index b93c29b..0288656 100644 --- a/bot_modules/orders_cat.py +++ b/bot_modules/orders_cat.py @@ -117,11 +117,14 @@ messages = { } messages_subscribes = { - mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ADD):f'''Категория создана''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD):f'''Категория создана''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT):f'''Категория отредактирована''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL):f'''Категория удалена''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_EDIT):f'''Категория отредактирована #item_id''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_DEL):f'''Категория удалена #item_id''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD_WITH_PARENT):f'''Категория создана''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT_WITH_PARENT):f'''Категория отредактирована''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL_WITH_PARENT):f'''Категория удалена''', } messages.update(messages_subscribes) diff --git a/bot_modules/projects.py b/bot_modules/projects.py index a3fc0c0..3ed3438 100644 --- a/bot_modules/projects.py +++ b/bot_modules/projects.py @@ -118,11 +118,14 @@ messages = { } messages_subscribes = { - mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ADD):f'''Проект создан''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD):f'''Проект создан''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT):f'''Проект отредактирован''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL):f'''Проект удалён''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_EDIT):f'''Проект отредактирован #item_id''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_DEL):f'''Проект удалён #item_id''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD_WITH_PARENT):f'''Проект создан''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT_WITH_PARENT):f'''Проект отредактирован''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL_WITH_PARENT):f'''Проект удалён''', } messages.update(messages_subscribes) diff --git a/bot_modules/subscribes.py b/bot_modules/subscribes.py index 6c4e663..3731920 100644 --- a/bot_modules/subscribes.py +++ b/bot_modules/subscribes.py @@ -59,11 +59,14 @@ button_names = { mod_table_operate.EditButton(bd_table.TableFieldDestiny.SUBSCRIBE_TYPE): "𝌴 Изменить тип в моей подписке", mod_table_operate.EditButton(bd_table.TableFieldDestiny.ITEM_ID): "𝌴 Изменить элемент в моей подписке", mod_table_operate.EditButton(bd_table.TableFieldDestiny.ACCESS): "✋ Изменить доступ к моей подписке", - mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ADD): "Добавление элемента", + mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ANY_ITEM_ADD): "Добавление элемента", mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ANY_ITEM_DEL): "Удаление какого либо элемента", mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ANY_ITEM_EDIT): "Редактирование какого либо элемента", mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ITEM_DEL): "Удаление определённого элемента", mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ITEM_EDIT): "Редактирование определённого элемента", + mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ANY_ITEM_ADD_WITH_PARENT): "Добавление элемента с родителем", + mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ANY_ITEM_DEL_WITH_PARENT): "Удаление элемента с родителем", + mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ANY_ITEM_EDIT_WITH_PARENT): "Редактирование элемента с родителем", mod_table_operate.ButtonNames.DEL: "❌ Удалить мою подписку", } @@ -102,7 +105,7 @@ messages = { mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.ITEM_ID): ''' Создание подписки. Шаг №3 -Номер элемента, на который нужно подписаться (-1, если элемента нет): +Номер элемента или его родителя, на который нужно подписаться (-1, если элемента нет): ''', mod_table_operate.Messages.SUCCESS_CREATE: '''✅ Подписка успешно добавлена!''', mod_table_operate.Messages.START_EDIT: ''' @@ -143,13 +146,16 @@ messages = { mod_table_operate.Messages.SUCCESS_DELETE: '''✅ Подписка успешно удалёна!''', } -# TODO Возможно это не нужно есть же mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ADD) см. выше +# TODO Возможно это не нужно есть же mod_table_operate.EnumButton(bot_subscribes.SubscribeType.ANY_ITEM_ADD) см. выше messages_subs_type_status = { - mod_table_operate.EnumMessageForView(bot_subscribes.SubscribeType.ADD): f'''Добавление элемента''', + mod_table_operate.EnumMessageForView(bot_subscribes.SubscribeType.ANY_ITEM_ADD): f'''Добавление элемента''', mod_table_operate.EnumMessageForView(bot_subscribes.SubscribeType.ANY_ITEM_DEL): f'''Удаление элемента''', mod_table_operate.EnumMessageForView(bot_subscribes.SubscribeType.ANY_ITEM_EDIT): f'''Редактирование элемента''', mod_table_operate.EnumMessageForView(bot_subscribes.SubscribeType.ITEM_DEL): f'''Удаление конкретного элемента''', mod_table_operate.EnumMessageForView(bot_subscribes.SubscribeType.ITEM_EDIT): f'''Редактирование конкретного элемента''', + mod_table_operate.EnumMessageForView(bot_subscribes.SubscribeType.ANY_ITEM_ADD_WITH_PARENT): f'''Добавление элемента''', + mod_table_operate.EnumMessageForView(bot_subscribes.SubscribeType.ANY_ITEM_DEL_WITH_PARENT): f'''Удаление элемента''', + mod_table_operate.EnumMessageForView(bot_subscribes.SubscribeType.ANY_ITEM_EDIT_WITH_PARENT): f'''Редактирование элемента''', } messages.update(messages_subs_type_status) diff --git a/bot_modules/tasks.py b/bot_modules/tasks.py index 1523adb..23f52a7 100644 --- a/bot_modules/tasks.py +++ b/bot_modules/tasks.py @@ -120,11 +120,14 @@ messages = { } messages_subscribes = { - mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ADD):f'''Задача создана''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD):f'''Задача создана''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT):f'''Задача отредактирована''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL):f'''Задача удалёна''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_EDIT):f'''Задача отредактирована #item_id''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ITEM_DEL):f'''Задача удалёна #item_id''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_ADD):f'''Задача создана''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT):f'''Задача отредактирована''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL):f'''Задача удалёна''', } messages.update(messages_subscribes) diff --git a/bot_sys/bot_subscribes.py b/bot_sys/bot_subscribes.py index db22367..91a3001 100644 --- a/bot_sys/bot_subscribes.py +++ b/bot_sys/bot_subscribes.py @@ -8,11 +8,14 @@ from enum import auto # Тип поля в таблице class SubscribeType(Enum): - ADD = auto() + ANY_ITEM_ADD = auto() ANY_ITEM_DEL = auto() ANY_ITEM_EDIT = auto() ITEM_DEL = auto() ITEM_EDIT = auto() + ANY_ITEM_ADD_WITH_PARENT = auto() + ANY_ITEM_DEL_WITH_PARENT = auto() + ANY_ITEM_EDIT_WITH_PARENT = auto() class BotSubscribes: def __init__(self): @@ -57,17 +60,17 @@ def Test(): mod_1 = 'proj' mod_2 = 'backup' s = BotSubscribes() - s.AddSubscribe(user_id_1, mod_1, SubscribeType.ADD) + s.AddSubscribe(user_id_1, mod_1, SubscribeType.ANY_ITEM_ADD) s.AddSubscribe(user_id_2, mod_2, SubscribeType.ITEM_DEL) - assert len(s.GetUserIDs(mod_1, SubscribeType.ADD)) == 1 + assert len(s.GetUserIDs(mod_1, SubscribeType.ANY_ITEM_ADD)) == 1 assert len(s.GetUserIDs(mod_1, SubscribeType.ANY_ITEM_DEL)) == 0 - assert user_id_1 in s.GetUserIDs(mod_1, SubscribeType.ADD) - assert not user_id_2 in s.GetUserIDs(mod_1, SubscribeType.ADD) - assert not user_id_3 in s.GetUserIDs(mod_1, SubscribeType.ADD) + assert user_id_1 in s.GetUserIDs(mod_1, SubscribeType.ANY_ITEM_ADD) + assert not user_id_2 in s.GetUserIDs(mod_1, SubscribeType.ANY_ITEM_ADD) + assert not user_id_3 in s.GetUserIDs(mod_1, SubscribeType.ANY_ITEM_ADD) assert len(s.GetUserIDs(mod_2, SubscribeType.ITEM_DEL)) == 1 - assert len(s.GetUserIDs(mod_2, SubscribeType.ADD)) == 0 + assert len(s.GetUserIDs(mod_2, SubscribeType.ANY_ITEM_ADD)) == 0 assert user_id_2 in s.GetUserIDs(mod_2, SubscribeType.ITEM_DEL) assert not user_id_1 in s.GetUserIDs(mod_2, SubscribeType.ITEM_DEL) assert not user_id_3 in s.GetUserIDs(mod_2, SubscribeType.ITEM_DEL)