You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
232 lines
11 KiB
232 lines
11 KiB
1 year ago
|
# -*- coding: utf8 -*-
|
||
|
# Общественное достояние, 2023, Алексей Безбородов (Alexei Bezborodov) <AlexeiBv+mirocod_platform_bot@narod.ru>
|
||
|
|
||
|
# Авторизация или регистрация в кооперативе или другой организации
|
||
|
|
||
|
from bot_sys import bot_bd, keyboard, user_access, bd_table, bot_subscribes
|
||
|
from bot_modules import mod_table_operate, mod_simple_message
|
||
|
|
||
|
from enum import Enum
|
||
|
from enum import auto
|
||
|
# ---------------------------------------------------------
|
||
|
# БД
|
||
|
module_name = 'authorize'
|
||
|
|
||
|
table_name = module_name
|
||
|
user_id_field = 'userID'
|
||
|
user_name_field = 'userName'
|
||
|
user_family_name_field = 'userFamilyName'
|
||
|
user_middle_name_field = 'userMiddleName'
|
||
|
user_birthday_field = 'userBirthday'
|
||
|
user_address_field = 'userAddress'
|
||
|
user_contacts_field = 'userContacts'
|
||
|
user_confirm_field = 'userConfirm'
|
||
|
access_field = 'authorizeAccess'
|
||
|
create_datetime_field = 'authorizeCreateDateTime'
|
||
|
|
||
|
user_id_table_field = bd_table.TableField(user_id_field, bd_table.TableFieldDestiny.USER_ID, bd_table.TableFieldType.INT)
|
||
|
|
||
|
class ConfirmStatus(Enum):
|
||
|
YES = auto()
|
||
|
NO = auto()
|
||
|
|
||
|
table = bd_table.Table(table_name, [
|
||
|
user_id_table_field,
|
||
|
bd_table.TableField(user_name_field, bd_table.TableFieldDestiny.USER_NAME, bd_table.TableFieldType.STR),
|
||
|
bd_table.TableField(user_family_name_field, bd_table.TableFieldDestiny.USER_FAMILY_NAME, bd_table.TableFieldType.STR),
|
||
|
bd_table.TableField(user_middle_name_field, bd_table.TableFieldDestiny.USER_MIDDLE_NAME, bd_table.TableFieldType.STR),
|
||
|
bd_table.TableField(user_birthday_field, bd_table.TableFieldDestiny.USER_BIRTHDAY, bd_table.TableFieldType.STR),
|
||
|
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(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),
|
||
|
]
|
||
|
,
|
||
|
[
|
||
|
[user_id_table_field],
|
||
|
]
|
||
|
)
|
||
|
|
||
|
init_access = f'{user_access.user_access_group_new}=va'
|
||
|
|
||
|
# ---------------------------------------------------------
|
||
|
# Сообщения и кнопки
|
||
|
|
||
|
class ButtonNames(Enum):
|
||
|
LIST_AUTH_DOCS = auto()
|
||
|
|
||
|
button_names = {
|
||
|
mod_simple_message.ButtonNames.START: "🔑 Авторизация",
|
||
|
mod_table_operate.ButtonNames.LIST: "≣ Список авторизаций пользователей",
|
||
|
mod_table_operate.ButtonNames.ADD: "📨 Заявка на вступление",
|
||
|
mod_table_operate.ButtonNames.EDIT: "🛠 Редактировать свои данные",
|
||
|
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_ID): "☐ Изменить id пользователя",
|
||
|
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_NAME): "☐ Изменить имя пользователя",
|
||
|
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_FAMILY_NAME): "☐ Изменить фамилию пользователя",
|
||
|
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_MIDDLE_NAME): "☐ Изменить отчество пользователя",
|
||
|
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_BIRTHDAY): "☐ Изменить дату рождения пользователя",
|
||
|
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_ADDRESS): "☐ Изменить адрес пользователя",
|
||
|
mod_table_operate.EditButton(bd_table.TableFieldDestiny.USER_CONTACTS): "☐ Изменить контакты пользователя",
|
||
|
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.ButtonNames.DEL: "❌ Удалить авторизацию пользователя",
|
||
|
}
|
||
|
|
||
|
messages = {
|
||
|
mod_simple_message.Messages.START: f'''
|
||
|
<b>{button_names[mod_simple_message.ButtonNames.START]}</b>
|
||
|
|
||
|
''',
|
||
|
mod_table_operate.Messages.SELECT: '''
|
||
|
Пожалуйста, выберите пользователя:
|
||
|
''',
|
||
|
mod_table_operate.Messages.ERROR_FIND: '''
|
||
|
❌ Ошибка, пользователь не найден
|
||
|
''',
|
||
|
mod_table_operate.Messages.OPEN: f'''
|
||
|
<b>Пользователь: #{user_id_field}</b>
|
||
|
|
||
|
Имя: #{user_name_field}
|
||
|
Фамилия: #{user_family_name_field}
|
||
|
Отчество: #{user_middle_name_field}
|
||
|
Дата рождения: #{user_birthday_field}
|
||
|
Адрес: #{user_address_field}
|
||
|
Контакты: #{user_contacts_field}
|
||
|
Подтверждение авторизации: #{user_confirm_field}
|
||
|
|
||
|
Время создания: #{create_datetime_field}
|
||
|
''',
|
||
|
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_NAME): '''
|
||
|
Авторизация. Шаг №1
|
||
|
|
||
|
Введите своё имя:
|
||
|
''',
|
||
|
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_FAMILY_NAME): '''
|
||
|
Авторизация. Шаг №2
|
||
|
|
||
|
Введите свою фамилию:
|
||
|
''',
|
||
|
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_MIDDLE_NAME): '''
|
||
|
Авторизация. Шаг №3
|
||
|
|
||
|
Введите своё отчество:
|
||
|
''',
|
||
|
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_BIRTHDAY): '''
|
||
|
Авторизация. Шаг №4
|
||
|
|
||
|
Введите свою дату рождения в формате ДД.ММ.ГГГГ:
|
||
|
''',
|
||
|
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_ADDRESS): '''
|
||
|
Авторизация. Шаг №5
|
||
|
|
||
|
Введите свой домашний адрес:
|
||
|
''',
|
||
|
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_CONTACTS): '''
|
||
|
Авторизация. Шаг №6
|
||
|
|
||
|
Введите свои контакты:
|
||
|
''',
|
||
|
mod_table_operate.CreateMessage(bd_table.TableFieldDestiny.USER_CONFIRM): '''
|
||
|
Авторизация. Шаг №7
|
||
|
|
||
|
Имя: #{user_name_field}
|
||
|
Фамилия: #{user_family_name_field}
|
||
|
Отчество: #{user_middle_name_field}
|
||
|
Дата рождения: #{user_birthday_field}
|
||
|
Адрес: #{user_address_field}
|
||
|
Контакты: #{user_contacts_field}
|
||
|
Подтверждение авторизации: #{user_confirm_field}
|
||
|
|
||
|
Подтвердите свои данные:
|
||
|
''',
|
||
|
|
||
|
mod_table_operate.Messages.SUCCESS_CREATE: '''✅ Вы успешно зарегистрированы! Посмотрите документы и отправьте фотографии подписанных документов''',
|
||
|
mod_table_operate.Messages.START_EDIT: '''
|
||
|
Пожалуйста, выберите действие:
|
||
|
''',
|
||
|
mod_table_operate.Messages.SELECT_TO_EDIT: '''
|
||
|
Выберите пользователя, у которого вы хотите отредактировать данные.
|
||
|
''',
|
||
|
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_NAME): f'''
|
||
|
Текущее имя пользователя:
|
||
|
#{user_name_field}
|
||
|
|
||
|
Введите новое имя пользователя:
|
||
|
''',
|
||
|
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_FAMILY_NAME): f'''
|
||
|
Текущая фамилия пользователя:
|
||
|
#{user_family_name_field}
|
||
|
|
||
|
Введите новую фамилию пользователя:
|
||
|
''',
|
||
|
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_MIDDLE_NAME): f'''
|
||
|
Текущее отчество пользователя:
|
||
|
#{user_middle_name_field}
|
||
|
|
||
|
Введите новое отчество пользователя:
|
||
|
''',
|
||
|
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_BIRTHDAY): f'''
|
||
|
Текущая дата рождения пользователя:
|
||
|
#{user_birthday_field}
|
||
|
|
||
|
Введите новую дату рождения пользователя:
|
||
|
''',
|
||
|
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_ADDRESS): f'''
|
||
|
Текущий адрес пользователя:
|
||
|
#{user_address_field}
|
||
|
|
||
|
Введите новый адрес пользователя:
|
||
|
''',
|
||
|
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_CONTACTS): f'''
|
||
|
Текущие контакты пользователя:
|
||
|
#{user_contacts_field}
|
||
|
|
||
|
Введите новые контакты пользователя:
|
||
|
''',
|
||
|
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.USER_CONFIRM): f'''
|
||
|
Текущее подтвержение пользователя:
|
||
|
#{user_confirm_field}
|
||
|
|
||
|
Введите новое подтверждение пользователя:
|
||
|
''',
|
||
|
mod_table_operate.EditMessage(bd_table.TableFieldDestiny.ACCESS): f'''
|
||
|
Текущий доступ к проекту:
|
||
|
#{access_field}
|
||
|
|
||
|
{user_access.user_access_readme}
|
||
|
|
||
|
Введите новую строку доступа:
|
||
|
''',
|
||
|
mod_table_operate.Messages.SUCCESS_EDIT: '''✅ Проект успешно отредактирован!''',
|
||
|
mod_table_operate.Messages.SELECT_TO_DELETE: '''
|
||
|
Выберите пользователя, у которого вы хотите удалить авторизованные данные.
|
||
|
''',
|
||
|
mod_table_operate.Messages.SUCCESS_DELETE: '''✅ Данные пользователя успешно удалены!''',
|
||
|
}
|
||
|
|
||
|
messages_subscribes = {
|
||
|
mod_table_operate.SubscribeMessage(bot_subscribes.SubscribeType.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''',
|
||
|
}
|
||
|
|
||
|
messages.update(messages_subscribes)
|
||
|
|
||
|
messages_order_status = {
|
||
|
mod_table_operate.EnumMessageForView(ConfirmStatus.YES): f'''Да, все данные верны''',
|
||
|
mod_table_operate.EnumMessageForView(ConfirmStatus.NO): f'''Нет, данные не верны''',
|
||
|
}
|
||
|
|
||
|
messages.update(messages_order_status)
|
||
|
|
||
|
class ModuleAuthorize(mod_table_operate.TableOperateModule):
|
||
|
def __init__(self, a_ParentModName, a_ChildModName, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_BotSubscribes, a_Log):
|
||
|
super().__init__(table, messages, button_names, a_ParentModName, a_ChildModName, init_access, a_ChildModuleNameList, a_EditModuleNameList, a_Bot, a_ModuleAgregator, a_BotMessages, a_BotButtons, a_BotSubscribes, a_Log)
|
||
|
|
||
|
def GetName(self):
|
||
|
return module_name
|
||
|
|