mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-11 00:33:17 +00:00
Add page permissions formset to group edit view
This commit is contained in:
parent
7fcfff65bf
commit
2e3d0fd03c
3 changed files with 28 additions and 3 deletions
|
|
@ -6,7 +6,7 @@ from django.contrib.auth.models import Group, Permission
|
|||
|
||||
from wagtail.wagtailadmin import hooks
|
||||
from wagtail.wagtailusers.models import UserProfile
|
||||
from wagtail.wagtailcore.models import UserPagePermissionsProxy
|
||||
from wagtail.wagtailcore.models import UserPagePermissionsProxy, GroupPagePermission
|
||||
|
||||
|
||||
User = get_user_model()
|
||||
|
|
@ -187,6 +187,18 @@ class GroupForm(forms.ModelForm):
|
|||
return group
|
||||
|
||||
|
||||
class GroupPagePermissionForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = GroupPagePermission
|
||||
fields = ('page', 'permission_type')
|
||||
|
||||
|
||||
class BaseGroupPagePermissionFormSet(forms.models.BaseInlineFormSet):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(BaseGroupPagePermissionFormSet, self).__init__(*args, **kwargs)
|
||||
self.form = GroupPagePermissionForm
|
||||
|
||||
|
||||
class NotificationPreferencesForm(forms.ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(NotificationPreferencesForm, self).__init__(*args, **kwargs)
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
<ul class="fields">
|
||||
{% include "wagtailadmin/shared/field_as_li.html" with field=form.name %}
|
||||
{% format_permissions permission_bound_field=form.permissions %}
|
||||
{{ formset }}
|
||||
<li><input type="submit" value="{% trans 'Save' %}" /></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,9 +6,11 @@ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
|||
from django.contrib import messages
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.views.decorators.vary import vary_on_headers
|
||||
from django.forms.models import inlineformset_factory
|
||||
|
||||
from wagtail.wagtailadmin.forms import SearchForm
|
||||
from wagtail.wagtailusers.forms import GroupForm
|
||||
from wagtail.wagtailusers.forms import GroupForm, BaseGroupPagePermissionFormSet
|
||||
from wagtail.wagtailcore.models import GroupPagePermission
|
||||
from wagtail.wagtailcore.compat import AUTH_USER_APP_LABEL, AUTH_USER_MODEL_NAME
|
||||
|
||||
User = get_user_model()
|
||||
|
|
@ -97,18 +99,28 @@ def create(request):
|
|||
@permission_required(change_user_perm)
|
||||
def edit(request, group_id):
|
||||
group = get_object_or_404(Group, id=group_id)
|
||||
GroupPagePermissionFormSet = inlineformset_factory(
|
||||
Group,
|
||||
GroupPagePermission,
|
||||
formset=BaseGroupPagePermissionFormSet,
|
||||
extra=0
|
||||
)
|
||||
if request.POST:
|
||||
form = GroupForm(request.POST, instance=group)
|
||||
if form.is_valid():
|
||||
formset = GroupPagePermissionFormSet(request.POST, instance=group)
|
||||
if form.is_valid() and formset.is_valid():
|
||||
group = form.save()
|
||||
formset.save()
|
||||
messages.success(request, _("Group '{0}' updated.").format(group))
|
||||
return redirect('wagtailusers_groups_index')
|
||||
else:
|
||||
messages.error(request, _("The group could not be saved due to errors."))
|
||||
else:
|
||||
form = GroupForm(instance=group)
|
||||
formset = GroupPagePermissionFormSet(instance=group)
|
||||
|
||||
return render(request, 'wagtailusers/groups/edit.html', {
|
||||
'group': group,
|
||||
'form': form,
|
||||
'formset': formset,
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in a new issue