diff --git a/bot_modules/all_orders.py b/bot_modules/all_orders.py index 8894daf..7fbf33c 100644 --- a/bot_modules/all_orders.py +++ b/bot_modules/all_orders.py @@ -89,7 +89,8 @@ messages_notification = { Описание заказа: #{orders.desc_field} -Оплатите заказ и прикрепите чек об оплате к заказу. Для этого проследуйте по пути "Главное меню"->"Заказы"->"Загрузить чек по оплате моего заказа"''', +Оплатите заказ и прикрепите чек об оплате к заказу. Для этого проследуйте по пути "Главное меню"->"Заказы"->"Загрузить чек по оплате моего заказа" +Или воспользуйтесь кнопкой:''', mod_table_operate.NotificationMessage(orders.OrderStatus.ADDRESS): f'''Статус заказа "#{orders.name_field}" изменён на - Заказ ожидает указания адреса доставки. Описание заказа: @@ -152,8 +153,28 @@ class ModuleAllOrders(orders.ModuleOrders): n, k, a = super().GetButtonNameAndKeyValueAndAccess(a_Item) return str(a_Item[key_field_id]) + ":" + n + "," + str(a_Item[user_field_id]), k, a + def GetPayInlineKeyboardFunc(self, a_ItemID): + def PayInlineKeyboard(a_Message, a_UserGroups): + print('PayInlineKeyboard', a_Message, a_UserGroups, a_ItemID) + cur_buttons = [] + + orders_mod = self.GetModule(orders.module_name) + dst = bd_table.TableFieldDestiny.PHOTO_PAY + if orders_mod: + prefix = orders_mod.m_EditPrefix.get(dst, None) + if prefix: + access = orders_mod.GetAccessForEditKeyboardButtons(orders_mod.m_Table.GetFieldByDestiny(dst)) + cur_buttons += [ + keyboard.InlineButtonWithAccess(orders_mod.GetButton(mod_table_operate.EditButton(dst)), prefix, a_ItemID, orders_mod.GetAccess(), access), + ] + + print('cur_buttons', cur_buttons, a_Message, a_UserGroups, a_ItemID) + return keyboard.MakeInlineKeyboardButtons(self.m_Bot, cur_buttons, a_UserGroups) + return PayInlineKeyboard + + async def OnChangeField(self, a_Field, a_ItemID, a_ItemData, a_EditUserID): - super().OnChangeField(a_Field, a_ItemID, a_ItemData, a_EditUserID) + await super().OnChangeField(a_Field, a_ItemID, a_ItemData, a_EditUserID) if a_Field.m_Destiny == bd_table.TableFieldDestiny.STATUS: key_field = self.m_Table.GetFieldNameByDestiny(bd_table.TableFieldDestiny.KEY) item = bd_item.GetBDItemsTemplate(self.m_Bot, self.m_Table.GetName(), key_field)(a_ItemID) @@ -181,7 +202,12 @@ class ModuleAllOrders(orders.ModuleOrders): self.m_Log.Error(f'Не удалось оповестить по заказу №{a_ItemID}. Пустое сообщение для нового статуса {new_status}') return msg = self.UpdateMessage(msg, None, item) - await self.SendMessageToUser(msg, owner_id) + inline_keyboard = None + print('new_status', str(orders.OrderStatus.PAY), new_status) + if new_status == str(orders.OrderStatus.PAY): + inline_keyboard = self.GetPayInlineKeyboardFunc(a_ItemID) + + await self.SendMessageToUser(msg, owner_id, a_GetInlineButtonsFunc = inline_keyboard) def GetStartButtons(self, a_Message, a_UserGroups): return [ @@ -203,7 +229,7 @@ class ModuleAllOrders(orders.ModuleOrders): user_id = cur_item[user_id_field_index] if not user_id: - return None + return keyboard.MakeInlineKeyboardButtons(self.m_Bot, [], a_UserGroups) cur_buttons = [] @@ -213,7 +239,7 @@ class ModuleAllOrders(orders.ModuleOrders): prefix = self.m_EditPrefix.get(dst, None) if prefix: cur_buttons += [ - keyboard.InlineButtonWithAccess(self.GetButton(btn), prefix, cur_item[key_field_index], access, user_access.AccessMode.EDIT), + keyboard.InlineButtonWithAccess(self.GetButton(btn), prefix, cur_item[key_field_index], self.GetAccess(), access), ] user_message_mod = self.GetModule(user_message.module_name) @@ -222,13 +248,11 @@ class ModuleAllOrders(orders.ModuleOrders): keyboard.InlineButtonWithAccess(self.GetButton(ButtonNames.SEND_USER_MESSAGE), user_message_mod.GetAddPrefix(), user_id, user_message_mod.GetAccess(), user_access.AccessMode.ADD), ] - users_mod = self.GetModule(users.module_name) - if users_mod: - cur_buttons += [ - keyboard.InlineButtonWithAccess(self.GetButton(ButtonNames.SHOW_USER_INFO), users_mod.GetShowPrefix(), user_id, users_mod.GetAccess(), user_access.AccessMode.VIEW), - ] + #users_mod = self.GetModule(users.module_name) + #if users_mod: + # cur_buttons += [ + # keyboard.InlineButtonWithAccess(self.GetButton(ButtonNames.SHOW_USER_INFO), users_mod.GetShowPrefix(), user_id, users_mod.GetAccess(), user_access.AccessMode.VIEW), + # ] - if len(cur_buttons) == 0: - return None return keyboard.MakeInlineKeyboardButtons(self.m_Bot, cur_buttons, a_UserGroups) diff --git a/bot_modules/mod_table_operate.py b/bot_modules/mod_table_operate.py index c46d811..ae6c11a 100644 --- a/bot_modules/mod_table_operate.py +++ b/bot_modules/mod_table_operate.py @@ -4,7 +4,7 @@ # Модуль для редактирования и просмотра таблицы в БД from bot_sys import keyboard, user_access, bd_table, bot_bd, bot_subscribes -from bot_modules import access_utils, mod_simple_message +from bot_modules import access_utils, mod_simple_message, groups_utils from template import simple_message, bd_item, bd_item_select, bd_item_view, bd_item_delete, bd_item_add, bd_item_edit from aiogram.dispatcher import FSMContext @@ -363,7 +363,7 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): async def SendMessageToUser(self, a_Message, a_UserID, a_GetButtonsFunc = None, a_GetInlineButtonsFunc = None, parse_mode = None): a_Message = a_Message.StaticCopy() a_MessageFromUSer = None - user_groups = None + user_groups = groups_utils.GetUserGroupData(self.m_Bot, a_UserID) try: print('SendMessage', self.m_Bot, a_Message, a_GetButtonsFunc, a_GetInlineButtonsFunc, a_UserID, a_MessageFromUSer, user_groups, parse_mode) await simple_message.SendMessage(self.m_Bot, a_Message, a_GetButtonsFunc, a_GetInlineButtonsFunc, a_UserID, a_MessageFromUSer, user_groups, parse_mode=parse_mode) @@ -372,6 +372,10 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): return False async def SendSubscribe(self, a_Type, a_ItemID, a_OwnerUserID): + table_name = self.m_Table.GetName() + key_name = self.GetKeyFieldName() + + cur_item = GetCurItem(self.m_Bot, table_name, key_name, a_ItemID) for s_user_id in self.m_BotSubscribes.GetUserIDs(self.GetName(), a_Type, a_ItemID = a_ItemID): a_BotMessage = self.GetMessage(SubscribeMessage(a_Type)) if not a_BotMessage: @@ -381,6 +385,9 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): a_UserID = s_user_id a_BotMessage = a_BotMessage.StaticCopy() a_BotMessage.UpdateDesc(a_BotMessage.GetDesc().replace("#item_id", str(a_ItemID))) + if cur_item: + a_BotMessage.UpdateDesc(self.m_Table.ReplaceAllFieldTags(a_BotMessage.GetDesc(), cur_item)) + await self.SendMessageToUser(a_BotMessage, a_UserID) diff --git a/bot_modules/orders.py b/bot_modules/orders.py index 63f3a95..41fd866 100644 --- a/bot_modules/orders.py +++ b/bot_modules/orders.py @@ -86,7 +86,7 @@ messages = { mod_table_operate.Messages.OPEN: f''' Номер заказа: #{key_name} -Заказ: #{name_field} +Имя заказа: #{name_field} Описание и состав заказа: #{desc_field} @@ -175,8 +175,18 @@ messages_subscribes = { 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_ADD_WITH_PARENT):f'''Заказ создан +Номер заказа: #{key_name} + +Имя заказа: #{name_field} + +Описание и состав заказа: #{desc_field}''', + mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_EDIT_WITH_PARENT):f'''Заказ отредактирован +Номер заказа: #{key_name} + +Имя заказа: #{name_field} + +Описание и состав заказа: #{desc_field}''', mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.ANY_ITEM_DEL_WITH_PARENT):f'''Заказ удалён''', }