Создать функционал связанных сообществ
Необходимо доделать функционал Связанных сообществ. То есть у каждого сообщества, можно будет установить, что у него есть связанные сообщества и они будут показываться в соответствующем блоке. Установление связи пока будет делаться через интерфейс админки и скриптами массового установления связи (для этого будет отдельная задача). В мобильных шаблонах такой функционал пока не делается, тут речь про десктопный шаблон.
Модель создана komunumoj/models.py/KomunumojKohereco
Админка создана, в шаблонах место заготовлено - в шаблонах стен сообществ:
- muroj/templates/muroj/muro_grupo.html
- muroj/templates/muroj/muro_organizo.html
- muroj/templates/muroj/muro_sociaprojekto.html
- muroj/templates/muroj/muro_soveto.html
Только нужно будет изменить проверку, чтобы если нет связанных сообществ, чтобы этот блок не показывался полностью, сейчас показывается с надписью "Нет данных" для демонстрации его местонахождения.
Основное, что необходимо сделать:
-
Необходимо сделать вьюху и вывод в шаблон, хотя общий код в шаблоне уже под это есть, туда в цикл можно передать нужные данные.
-
Добавляться связанные сообщества будут следующим образом:
- Автоматически, при создании нового Регионального Совета ему автоматически в Связанные сообщества должен добавляться Международный Совет Технокома, то есть совет с tipo__kodo='internacia'.
- Автоматически, при создании нового Регионального профсоюзного комитета, ему должен добавляться Международный Советский Профсоюз.
- Автоматически, при создании нового Регионального Совета, должно смотреться есть ли на него обратная связь у какого-то Регионального профсоюзного комитета, то есть у объекта модели KomunumojOrganizo по полю soveto, и если есть то этот Региональный профсоюзный комитет должен добавляться в Связанные сообщества этому Совету. Это же касается и Международного Совета Технокома, он должен найти что на него ссылается Международный Советский Профсоюз тем же образом, но там та жа модель, тоже поле.
- Как выше автоматически, но наоборот, когда создаётся Профсоюз, то есть объект модели KomunumojOrganizo с типом sindikato - что в данном случае возможно не существенно, существенно то, что заполняется поле soveto, вот тогда у этой организации - Профсоюза, в Связанные сообщества должен быть добавлен этот Совет.
- Необходимо отметить, что сначала, обычно, создаются Советы, а потом Профсоюзы, значит это приведёт к тому, что множество Советов при создании не найдут свои Профсоюзы. Даже если будет так, что при следующем редактировании карточки Совета он будет повторять поиск, может пройти много времени пока это случится. Кроме того, уже создано много объектов, Советов и Профсоюзов, значит нужно написать скрипт, который запустить в рамках реализации этого ТЗ, чтобы все уже созданные сущности связать между собой и потом его регулярно запускать, после каждой серии созданий. Можно конечно, так же сделать, чтобы при создании Профсоюза, так же проверяло, есть ли обратная связь на него у этого Совета в Связанных сообществах, и если нет (а её не может быть, так как этого Профсоюза не существовало), то и для этого Совета, чтобы создавало связь по Связанным сообществам.
- В будущем, в другом ТЗ, будут описано, что ещё нужно добавлять автоматически, но пока самое важное добавим вручную через админку. Так же, когда мы сейчас перейдём на новую систему шаблонов, позже в разделе администрирования Сообществ, мы так же создадим такой функционал, для ручного добавления, но это будет написано в отдельной задаче.
- При выполнении этой задачи, необходимо помнить, что когда у какого-то сообщества есть связанные сообщества, это связь не работает обратно. То есть, если мы устанавливаем в Региональных Советах, что у них есть связанное сообщество Международный Совет Технокома, в него в свою очередь в блоке Связанные сообщества, НЕ должны отображаться все эти сотни связанных сообществ. То есть, чтобы между двумя сообществами установить перекрёстную связь, нужно у обоих сообществ создать такую связь (в данном случае получится две записи связей).