diff --git a/bot_modules/authorize.py b/bot_modules/authorize.py index cc9f9e3..dced8b2 100644 --- a/bot_modules/authorize.py +++ b/bot_modules/authorize.py @@ -22,6 +22,8 @@ user_birthday_field = 'userBirthday' user_address_field = 'userAddress' user_contacts_field = 'userContacts' user_confirm_field = 'userConfirm' +user_auth_docs_field = 'authDocs' +user_photo_pay_field = 'photoPay' access_field = 'authorizeAccess' create_datetime_field = 'authorizeCreateDateTime' @@ -40,6 +42,8 @@ table = bd_table.Table(table_name, [ bd_table.TableField(user_address_field, bd_table.TableFieldDestiny.USER_ADDRESS, bd_table.TableFieldType.STR), bd_table.TableField(user_contacts_field, bd_table.TableFieldDestiny.USER_CONTACTS, bd_table.TableFieldType.STR), bd_table.TableField(user_confirm_field, bd_table.TableFieldDestiny.USER_CONFIRM, bd_table.TableFieldType.ENUM, a_Enum = ConfirmStatus), + bd_table.TableField(user_auth_docs_field, bd_table.TableFieldDestiny.AUTH_PHOTO_DOCS, bd_table.TableFieldType.PHOTO), + bd_table.TableField(user_photo_pay_field, bd_table.TableFieldDestiny.PHOTO_PAY, bd_table.TableFieldType.PHOTO), bd_table.TableField(access_field, bd_table.TableFieldDestiny.ACCESS, bd_table.TableFieldType.STR), bd_table.TableField(create_datetime_field, bd_table.TableFieldDestiny.CREATE_DATE, bd_table.TableFieldType.STR), ] @@ -49,13 +53,11 @@ table = bd_table.Table(table_name, [ ] ) -init_access = f'{user_access.user_access_group_new}=va' +init_access = f'{user_access.user_access_group_new}=vea' def_init_access = f'{user_access.user_access_group_new}=a' -g_group_auth_name = 'authorize_users' def GetAuthorizeItem(a_Bot, a_UserID): items = bd_item.GetBDItemsTemplate(a_Bot, table_name, user_id_field)(a_UserID) - print('GetAuthorizeItem', items) if len(items) == 1: return items[0] return None @@ -82,6 +84,9 @@ button_names = { mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_CONFIRM): "☐ Изменить подтверждение пользователя", mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_ID): "☐ Изменить id пользователя", mod_table_operate.EditButton(bd_table.TableFieldDestiny.ACCESS): "✋ Доступ к авторизации пользователя", + mod_table_operate.EditButton(bd_table.TableFieldDestiny.AUTH_PHOTO_DOCS): "☐ Загрузить подписанные документы", + mod_table_operate.EditButton(bd_table.TableFieldDestiny.PHOTO_PAY): "☐ Оплатить членский взнос", + mod_table_operate.EditButton(bd_table.TableFieldDestiny.ACCESS): "✋ Доступ к авторизации пользователя", mod_table_operate.ButtonNames.DEL: "❌ Удалить авторизацию пользователя", mod_table_operate.EnumButton(ConfirmStatus.YES): "Да, все данные верны", mod_table_operate.EnumButton(ConfirmStatus.NO): "Нет, данные не верны", @@ -214,6 +219,12 @@ messages = { Введите новое подтверждение пользователя: ''', + mod_table_operate.EditMessage(bd_table.TableFieldDestiny.AUTH_PHOTO_DOCS): f''' +Загрузите подписанный документ: +''', + mod_table_operate.EditMessage(bd_table.TableFieldDestiny.PHOTO_PAY): f''' +Загрузите чек по оплате ЧВ: +''', mod_table_operate.EditMessage(bd_table.TableFieldDestiny.ACCESS): f''' Текущий доступ к проекту: #{access_field} @@ -222,7 +233,7 @@ messages = { Введите новую строку доступа: ''', - mod_table_operate.Messages.SUCCESS_EDIT: '''✅ Проект успешно отредактирован!''', + mod_table_operate.Messages.SUCCESS_EDIT: '''✅ Данные успешно отредактированы!''', mod_table_operate.Messages.SELECT_TO_DELETE: ''' Выберите пользователя, у которого вы хотите удалить авторизованные данные. ''', @@ -264,6 +275,8 @@ class ModuleAuthorize(mod_table_operate.TableOperateModule): bd_table.TableFieldDestiny.USER_CONTACTS: user_access.AccessMode.NONE, bd_table.TableFieldDestiny.USER_CONFIRM: user_access.AccessMode.NONE, bd_table.TableFieldDestiny.ACCESS: user_access.AccessMode.NONE, + bd_table.TableFieldDestiny.AUTH_PHOTO_DOCS: user_access.AccessMode.ADD, + bd_table.TableFieldDestiny.PHOTO_PAY: user_access.AccessMode.ADD, } return cur_dict.get(a_Field.m_Destiny, super().GetAccessForEditKeyboardButtons(a_Field)) @@ -281,6 +294,17 @@ class ModuleAuthorize(mod_table_operate.TableOperateModule): a_Item[key_name_id],\ a_Item[access_field_id] + async def OnChangeField(self, a_Field, a_ItemID, a_ItemData, a_EditUserID): + super().OnChangeField(a_Field, a_ItemID, a_ItemData, a_EditUserID) + user_id_field_name = self.m_Table.GetFieldNameByDestiny(bd_table.TableFieldDestiny.USER_ID) + user_id = a_ItemData[user_id_field_name] + user_confirm_field_id = self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.USER_CONFIRM) + auth_docs_field_id = self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.AUTH_PHOTO_DOCS) + pay_field_id = self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.PHOTO_PAY) + item = GetAuthorizeItem(self.m_Bot, user_id) + if item and item[user_confirm_field_id] != '' and item[auth_docs_field_id] != '' and item[pay_field_id] != '': + users_groups_agregator.AddUserInGroup(self.m_Bot, user_id, user_access.user_access_group_auth_users) + def GetStartButtons(self, a_Message, a_UserGroups): user_id = str(a_Message.from_user.id) item = GetAuthorizeItem(self.m_Bot, user_id) @@ -290,6 +314,8 @@ class ModuleAuthorize(mod_table_operate.TableOperateModule): if item and item[user_confirm_field_id] == self.GetMessage(mod_table_operate.EnumMessageForView(ConfirmStatus.YES)).GetDesc(): cur_buttons += [[ButtonNames.LIST_AUTH_DOCS, user_access.AccessMode.VIEW]] + cur_buttons += [[mod_table_operate.EditButton(bd_table.TableFieldDestiny.AUTH_PHOTO_DOCS), user_access.AccessMode.VIEW]] + cur_buttons += [[mod_table_operate.EditButton(bd_table.TableFieldDestiny.PHOTO_PAY), user_access.AccessMode.VIEW]] else: cur_buttons += [[mod_table_operate.ButtonNames.ADD, user_access.AccessMode.ADD]] @@ -308,7 +334,7 @@ class ModuleAuthorize(mod_table_operate.TableOperateModule): result = {} for f in files: result.update({f: cur_dict}) - print(cur_dict) + return result button_name = self.GetButton(ButtonNames.LIST_AUTH_DOCS) @@ -329,9 +355,9 @@ class ModuleAuthorize(mod_table_operate.TableOperateModule): def AddBDItemFunc(self, a_ItemData, a_UserID): a_ItemData[user_id_field] = a_UserID - #a_ItemData[address_field] = '' + a_ItemData[user_auth_docs_field] = '' + a_ItemData[user_photo_pay_field] = '' result = super().AddBDItemFunc(a_ItemData, a_UserID) - users_groups_agregator.AddUserInGroup(self.m_Bot, a_UserID, g_group_auth_name) return result def GetKeyFieldDestiny(self): @@ -339,7 +365,7 @@ class ModuleAuthorize(mod_table_operate.TableOperateModule): def GetInitBDCommands(self): return super(). GetInitBDCommands() + [ - groups_utils.CreateGroupRequest(g_group_auth_name) + groups_utils.CreateGroupRequest(user_access.user_access_group_auth_users) ] def GetReplaceDictFunc(a_Bot, a_user_id): diff --git a/bot_modules/orders.py b/bot_modules/orders.py index edf6fd0..1c4a973 100644 --- a/bot_modules/orders.py +++ b/bot_modules/orders.py @@ -45,7 +45,7 @@ table = bd_table.Table(table_name, [ bd_table.TableField(parent_id_field, bd_table.TableFieldDestiny.PARENT_ID, bd_table.TableFieldType.INT), ]) -init_access = f'{user_access.user_access_group_new}=vea' +init_access = f'{user_access.user_access_group_auth_users}=vea' # --------------------------------------------------------- # Сообщения и кнопки diff --git a/bot_sys/bd_table.py b/bot_sys/bd_table.py index 2af2e98..25c2981 100644 --- a/bot_sys/bd_table.py +++ b/bot_sys/bd_table.py @@ -46,6 +46,7 @@ class TableFieldDestiny(Enum): USER_ADDRESS = auto() # Адресс USER_CONTACTS = auto() # контакты USER_CONFIRM = auto() # подтверждение + AUTH_PHOTO_DOCS = auto() class TableField: def __init__(self, a_Name, a_Destiny : TableFieldDestiny, a_Type : TableFieldType, a_Enum = None): diff --git a/bot_sys/user_access.py b/bot_sys/user_access.py index 29750ca..39394cd 100644 --- a/bot_sys/user_access.py +++ b/bot_sys/user_access.py @@ -8,6 +8,7 @@ from bot_sys import config user_access_group_all = 'all' user_access_group_new = 'new' +user_access_group_auth_users = 'authorize_users' user_access_readme = f''' Доступ к пользователям задаётся в виде строки @@ -57,6 +58,7 @@ def CheckAccessItem(a_AccessItem : str, a_AccessMode : AccessMode): # Возвращает возможность доступа пользователю a_UserGroups в элемент с правами a_AccessValue по режиму доступа a_AccessMode def CheckAccess(a_RootIDs, a_AccessValue : str, a_UserGroups : UserGroups, a_AccessMode : AccessMode): + #print(a_RootIDs, a_AccessValue, a_UserGroups, a_AccessMode) if a_UserGroups.user_id in a_RootIDs: return True for i in a_AccessValue.split(';'):