Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2015 20:53:03

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Хранение пересекающихся (мета)данных

Пример:
Есть базовая платформа (core), для пользователей можно выбирать список ролей, в ролях есть список доступных типов.
Например есть роль “Администратор”, со списком

Далее я ставлю плагин “Блоги”: он добавляет в базу тип “Блог”, при этом администратору в список типов должен добавится этот “Блог”.

Далее Администратор заходит в админку ТЕСТОВОЙ среды, мышкой добавляет администратору ещё пару типов в список, после того как он убедился что все работает, изменения нужно закомитить и отправить в деплой.

При этом core может совершенствоваться, и при апдейте либо разворачивании проекта с нуля, нужно что-б core объекты все создались, после чего корректно накатились изменения из плагина “Блог”.

-Иногда порядок в списке важен (при этом разные плагины могут законфликтовать)
-Делать из списка “дочернюю” коллекцию, не очень подходит.

Какие есть варианты реализации?


В принципе, если все хранить разными объектами, т.е. разные плагины не изменяют объекты друг друга, до достаточно будет просто скопировать объекты плагина в базу и все. Но это создает нагрузку/сложности, усложнение редактирования объекта который состоит из разных, либо после развертывания системы делать “компиляцию” объектов разных плагинов и т.п.

Либо прямо результирующие объекты модифицировать, тогда непонятно как комитить “изменения” после редактирования мышкой.

Либо делать какое-то апи на пересекающиеся (общие) типы…

Офлайн

#2 Янв. 28, 2015 21:24:37

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Хранение пересекающихся (мета)данных

Конкретно эту проблему с ролями можно обрулить, просто сделать роль “Админ Блогов” который будет лежать в плагине Блогов. Т.е. сделали не пересекающийся объект. Но проблема остается, например админ может добавить поле email в тип пользователя, либо добавить “обработчик” в список который в типе Пользователь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version