general: attach edit_role and subpages_edit_role attributes to Page (#56188)

This commit is contained in:
Frédéric Péters 2021-08-09 15:39:30 +02:00
parent 90aa90b991
commit af5caa199a
7 changed files with 90 additions and 1 deletions

View File

@ -0,0 +1,40 @@
# Generated by Django 2.2.21 on 2021-08-09 13:25
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('data', '0047_auto_20210723_1318'),
]
operations = [
migrations.AddField(
model_name='page',
name='edit_role',
field=models.ForeignKey(
blank=True,
default=None,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name='+',
to='auth.Group',
verbose_name='Edit Role',
),
),
migrations.AddField(
model_name='page',
name='subpages_edit_role',
field=models.ForeignKey(
blank=True,
default=None,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name='+',
to='auth.Group',
verbose_name='Subpages Edit Role',
),
),
]

View File

@ -203,6 +203,25 @@ class Page(models.Model):
picture = models.ImageField(_('Picture'), upload_to='page-pictures/', null=True)
edit_role = models.ForeignKey(
Group,
blank=True,
null=True,
default=None,
related_name='+',
verbose_name=_('Edit Role'),
on_delete=models.SET_NULL,
)
subpages_edit_role = models.ForeignKey(
Group,
blank=True,
null=True,
default=None,
related_name='+',
verbose_name=_('Subpages Edit Role'),
on_delete=models.SET_NULL,
)
# mark temporarily restored snapshots, it is required to save objects
# (pages and cells) for real for viewing past snapshots as many cells are
# asynchronously loaded and must refer to a real Page object.

View File

@ -192,6 +192,22 @@ class PageEditRedirectionForm(forms.ModelForm):
return page
class PageEditRolesForm(forms.ModelForm):
edit_role = forms.ModelChoiceField(
label=_('Edit Role'), required=False, queryset=Group.objects.all().order_by('name')
)
subpages_edit_role = forms.ModelChoiceField(
label=_('Subpages Edit Role'), required=False, queryset=Group.objects.all().order_by('name')
)
class Meta:
model = Page
fields = (
'edit_role',
'subpages_edit_role',
)
class PageEditIncludeInNavigationForm(forms.ModelForm):
include_in_navigation = forms.BooleanField(label=_('Include in navigation menus'), required=False)

View File

@ -2,7 +2,9 @@
{% load i18n %}
{% block appbar %}
{% if object.id %}
{% if view.page_title %}
<h2>{{ view.page_title }}</h2>
{% elif object.id %}
<h2>{% trans "Edit Page" %}</h2>
{% else %}
<h2>{% trans "New Page" %}</h2>

View File

@ -12,6 +12,7 @@
<li><a class="action-history" href="{% url 'combo-manager-page-history' pk=object.id %}">{% trans 'History' %}</a></li>
<li><a {% if page_has_subpages %}rel="popup" data-autoclose-dialog="true" {% endif %}class="action-export" href="{% url 'combo-manager-page-export' pk=object.id %}">{% trans 'Export' %}</a></li>
<li><a class="action-add-child" rel="popup" href="{% url 'combo-manager-page-add-child' pk=object.id %}">{% trans 'Add a child page' %}</a></li>
<li><a class="action-edit-roles" rel="popup" href="{% url 'combo-manager-page-edit-roles' pk=object.id %}">{% trans 'Manage edit roles' %}</a></li>
<li><a rel="popup" class="action-duplicate" href="{% url 'combo-manager-page-duplicate' pk=object.id %}">{% trans 'Duplicate' %}</a></li>
<li><a class="action-delete" rel="popup" href="{% url 'combo-manager-page-delete' pk=object.id %}">{% trans 'Delete' %}</a></li>
</ul>

View File

@ -63,6 +63,7 @@ urlpatterns = [
url(r'^pages/(?P<pk>\d+)/export$', views.page_export, name='combo-manager-page-export'),
url(r'^pages/(?P<pk>\d+)/add/$', views.page_add_child, name='combo-manager-page-add-child'),
url(r'^pages/(?P<pk>\d+)/duplicate$', views.page_duplicate, name='combo-manager-page-duplicate'),
url(r'^pages/(?P<pk>\d+)/edit-roles/$', views.page_edit_roles, name='combo-manager-page-edit-roles'),
url(r'^pages/(?P<pk>\d+)/history$', views.page_history, name='combo-manager-page-history'),
url(
r'^pages/(?P<page_pk>\d+)/history/(?P<pk>\d+)/$',

View File

@ -56,6 +56,7 @@ from .forms import (
PageEditIncludeInNavigationForm,
PageEditPictureForm,
PageEditRedirectionForm,
PageEditRolesForm,
PageEditSlugForm,
PageEditTitleForm,
PageExportForm,
@ -258,6 +259,15 @@ class PageEditRedirectionView(PageEditView):
page_edit_redirection = PageEditRedirectionView.as_view()
class PageEditRolesView(PageEditView):
page_title = _('Edit roles management')
form_class = PageEditRolesForm
comment = _('changed edit roles')
page_edit_roles = PageEditRolesView.as_view()
class PageEditIncludeInNavigationView(PageEditView):
form_class = PageEditIncludeInNavigationForm
comment = _('changed navigation inclusion')