Спасибо за ваш ответ
Я действительно думал об использовании ACL Group и ссылочного механизма, когда задавал вопрос.
Это помогло бы разрешению и обмену.
Для каждого отношения создайте группу для каждого пользователя (Друзья пользователя)
Когда пользователь создан>
- Создание групп пользователей>
- Создание ссылок между пользователем и группами с использованием reference_catalog (чего я не знаю, как это вообще возможно)
- Добавление локальных ролей для новых групп в папке пользователя (карта ролевых отношений может быть настроена через панель управления)
Когда создаются отношения -> Создать новые группы для всех пользователей (это займет время, но будет использоваться редко)
Добавить / удалить отношение -> Добавить / удалить пользователя из связанных групп
ОБНОВЛЕНИЕ: Кажется, что почти все, что мне нужно, реализовано с помощью пакета plone.app.relations .