МЕССЕНДЖЕР (mesaĜilo)¶
1. Общее описание¶
Разрабатывается по аналогии с Телеграм, ВКонтакте и Фейсбук. Приложение состоит из 5 моделей.
1.1 Модель чата (MesagxiloBabilejo)¶
поля:
- id - типа int - уникальный номер, добавляется автоматически
- nomo - название чата (многоязыковое)
- personal - логический - личный (true) или групповой (false) чат
- bildo_info - информационное изображение
- mesagxo - закреплённое сообщение - ссылка на модель MesagxiloMesagxo
Блок логических настроек:
- opcio_partoprenantoj - Могут приглашать участников в беседу (ложь - только администраторы чата), по умолчанию - истина
- opcio_info - Могут редактировать информацию беседы (ложь - только администраторы чата), по умолчанию - истина
- opcio_kovris - Могут менять закреплённое сообщение (ложь - только администраторы чата), по умолчанию - истина
- opcio_aldoni - Могут добавлять администраторов (истина - создатель и администраторы чата, ложь - только создатель чата), по умолчанию - ложь
- opcio_del - запрещено полное удаление сообщения (истина - администраторы могут видеть, ложь - возможно удаление), по умолчанию - ложь
1.2 Модель участники чатов (MesagxiloPartoprenanto)¶
- partoprenanto - участник чата - ссылка на Uzanto
- posedanto - если владельцем чата является сообщество
- babilejo - чат - сылка на MesagxiloBabilejo
- is_admin - права админа чата, по умолчанию - ложь
- sciigoj - тип способа уведомления - связь многие-ко-многим с InformilojSciigoTipo (типы оповещений, на текущий момент два типа: внутреннее (в браузере) - interna и на почту - powto) через модель MesagxiloSciigoj
- sciigi - оповещать о новых сообщениях в целом - по умолчанию - истина
- lasta_mesagxo - последнее прочитанное сообщение (что бы указывать откуда начинаются не прочитанные/новые) - ссылка на MesagxiloMesagxo
1.3 Модель сообщения чатов (MesagxiloMesagxo)¶
- babilejo - чат - сылка на MesagxiloBabilejo
- posedanto - кто написал (владелец) сообщения - ссылка на Uzanto
- komunumo - если написано от имени сообщества
- teksto - текст сообщения (многоязыковое)
- mesagxo - комментируемое сообщение - ссылка на себя
- enskribo - ссылка на запись стены сообщества
- enskribo_uzanto - ссылка на запись стены пользователя
- investoj - логическое - вложения (инстина - есть вложения), по умолчанию - ложь
- vidita - логическое - прочитано сообщение другим пользователем
При добавлении новой записи, создаются записи в MesagxiloMesagxoUzanto для каждого члена чата. При удалении сообщения (удалить может только создатель) помечается на удаление запись в MesagxiloMesagxoUzanto. Если на удаление сообщение передать forigo_all в True, то пометятся на удаление у всех пользователей чата.
При установки на удаление последней записи в чате, если чат личный, то чат помечается на удаление.
1.4 Модель вложения к сообщениям (MesagxiloInvestoj)¶
babilejo - чат - сылка на MesagxiloBabilejo
mesagxo - комментируемое сообщение - ссылка на MesagxiloMesagxo
dosiero - присоединенный файл
type_dosiero - тип int - тип присоединённого файла (0 - изображение, 1 - видео, 2 - документ, 3 - аудио)
На текущий момент работают только изображения („JPEG“, „PNG“, „GIF“)
1.5 Модель подписки на чат (MesagxiloSciigoj)¶
partoprenanto - ссылка на MesagxiloPartoprenanto
sciigo - ссылка на InformilojSciigoTipo
sciigi - логическое - оповещать о новых сообщениях, по умолчанию - истина
- в броузере - звуковое оповещение
- для почты - оповещение не чаще раза в сутки (при false)
sciigi_dato - типа датавремя
- для внутреннего: дата и время включения оповещений (если дата/время после текущей, то не оповещать) - можно остановить оповещение на часы и т.д.
- для почты: дата последней отправки оповещения
1.6 Модель настроек пользователей, относящаяся ко всем чатам (MesagxiloUzantoOpcio)¶
uzanto - участник чата, ссылка на Uzanto, 1к1, уникальная
privata - Int - Кто может писать мне личные сообщения
настройка - код - код списка
- Все пользователи - 0
- Только друзья - 1
- Друзья и друзья друзей - 2
- Никто - 3
- Все, кроме…
- Кому разрешен доступ
- всем пользователям - 4
- только друзьям - 5
- друзьям и друзья друзей - 6
- некоторым друзьям (выбор списком) - 7 - 11
- Кому запрещен доступ (выбор списком) - 8 - 12
- Некоторые друзья (выбор списком) - 9 - 13
grupo - Int - разрешения добавления в групповые чаты
настройка - код - код списка
- Все пользователи - 0
- Только друзья - 1
- Друзья и друзья друзей - 2
- Никто - 3
- Все, кроме…
- Кому разрешен доступ
- всем пользователям - 4
- только друзьям - 5
- друзьям и друзья друзей - 6
- некоторым друзьям (выбор списком) - 7 - 21
- Кому запрещен доступ (выбор списком) - 8 - 22
- Некоторые друзья (выбор списком) - 9 - 23
Списки настройек работают совместно с моделью списков доступа (MesagxiloUzantoAliro)
1.7 Модель списков доступа пользователям (MesagxiloUzantoAliro)¶
- opcio - ссылка на MesagxiloUzantoOpcio
- grupo - код списка пользователей (по описанию из п.1.6)
- uzantoj - список ссылко на Uzanto (поле многие-ко-многим - ManyToManyField)
1.8 Сообщения чатов для пользователей (MesagxiloMesagxoUzanto)¶
- posedanto - ссылка на Uzanto - у кого в общении показывать сообщение
- mesagxo - ссылка на MesagxiloMesagxo
2. Запросы на получение и редактирование данных¶
Запросы строятся согласно Построению запросов API
2.1 Запросы на получение¶
- mesagxilojBabilejo
- mesagxilojPartoprenanto
- mesagxilojMesagxo
- mesagxilojInvestoj
- mesagxilojSciigoj
2.2 Запросы на изменения¶
redaktuMesagxiloBabilejo
redaktuMesagxiloPartoprenanto
sciigoj меняется через Partoprenanto
redaktuMesagxiloMesagxo
redaktuMesagxiloInvestoj
3. Уведомления¶
- где выбор: внутренние, на почту, на телефон
на текущий момент (14 сентября 2019) работает только внутренний
- Есть уведомление от конкретного чата - канала, конкретной личной переписки - поле sciigi
- Есть приостановление на время - поле sciigi_dato
Планируются оповещения по аналогии с Телеграм, ВКонтакте и Фейсбук.