Разрешить CREATE и PUBLISH, но отключить EDIT и DELETE в Wagtail - PullRequest
0 голосов
/ 04 мая 2018

У меня есть группа, которая запрашивает тип контента, в котором я должен разрешить пользователю добавлять и публиковать страницы, но отключать любые изменения. После публикации опубликованная страница должна быть «только для чтения». Есть ли способ добиться этого с помощью инструментов разрешения в трясогузке?

У меня есть LabPage, и я зарегистрировал разрешения, которые будут отражены на дисплее групп:

wagtail_hooks.py

@hooks.register('register_permissions')
def register_labpage_permissions():
    return Permission.objects.filter(
        content_type__app_label='my_app',
        codename__in=['add_labpage', 'change_labpage', 'delete_labpage']
    )

Я установил только разрешения на добавление для LabPage. «изменить» и «удалить» не установлены:

LabPage permissions

Но мой LabPage содержится на сайте, и разрешения переопределяются общими правами на страницу сайта:

General site permissions

У меня вопрос: как разрешить члену этой конкретной группы иметь разрешения по умолчанию для сайта, но в конкретном случае LabPage можно добавлять и публиковать, но не редактировать или удалять?

Более общий вопрос: Как установить разрешения только для определенного типа контента (например, LabPage) для конкретной группы, без переопределения их настройками родительской группы ? Как этого добиться с помощью крючков от трясогузки?

1 Ответ

0 голосов
/ 07 мая 2018

Я нашел решение, которое решает мою проблему на 90%. В основном это сводится к изменению владельца на None после создания страницы.

Детали решения:

Создать 2 группы:

Группа администраторов enter image description here

Группа пользователей enter image description here

Обычно пользователь в «группе пользователей» может создавать и публиковать свои собственные страницы.

Чтобы заблокировать это, я создал хук в wagtail_hooks.py:

@hooks.register('after_create_page')
def set_read_only_lab_page(request, page):
if page.specific_class == MyPage:
    page.owner = None
    page.save()
    return messages.info(request, "Created read only My Page.")

Таким образом, член ограниченной группы «Член» теряет право собственности после создания страницы, но член «Административной группы» все еще может редактировать все документы на сайте.

Единственным недостатком этого решения является то, что член с ограниченными правами по-прежнему имеет разрешения на отмену публикации всех других страниц сайта.

Другим вариантом будет удаление разрешения «публиковать» для пользователей с ограниченными правами, но тогда администраторам придется модерировать представленные страницы.

Это некрасиво, но работает. Есть лучшие предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...