From c92b78fdfa843661e63a783c9d4ef61c564ec419 Mon Sep 17 00:00:00 2001 From: Nick Smith Date: Mon, 7 Jul 2014 17:03:06 +0100 Subject: [PATCH] Extend inline chooser panel templates to group create views --- wagtail/wagtailusers/forms.py | 2 +- .../templates/wagtailusers/groups/create.html | 11 ++++++++++- .../wagtailusers/templatetags/wagtailusers_tags.py | 2 +- wagtail/wagtailusers/views/groups.py | 13 ++++++++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/wagtail/wagtailusers/forms.py b/wagtail/wagtailusers/forms.py index cdcb561c5..06ae6bbbf 100644 --- a/wagtail/wagtailusers/forms.py +++ b/wagtail/wagtailusers/forms.py @@ -179,7 +179,7 @@ class GroupForm(forms.ModelForm): # be clobbered by this form. try: untouchable_permissions = self.instance.permissions.exclude(pk__in=self.registered_permissions) - except AttributeError: + except ValueError: # this form is not bound; we're probably creating a new group untouchable_permissions = Permission.objects.none() group = super(GroupForm, self).save() diff --git a/wagtail/wagtailusers/templates/wagtailusers/groups/create.html b/wagtail/wagtailusers/templates/wagtailusers/groups/create.html index dd9f34806..5ea5fd4bd 100644 --- a/wagtail/wagtailusers/templates/wagtailusers/groups/create.html +++ b/wagtail/wagtailusers/templates/wagtailusers/groups/create.html @@ -1,5 +1,6 @@ {% extends "wagtailadmin/base.html" %} {% load image_tags %} +{% load wagtailusers_tags %} {% load i18n %} {% block titletag %}{% trans "Add group" %}{% endblock %} {% block bodyclass %}menu-groups{% endblock %} @@ -13,9 +14,17 @@
{% endblock %} +{% block extra_js %} + {% include "wagtailadmin/pages/_editor_js.html" %} + + +{% endblock %} diff --git a/wagtail/wagtailusers/templatetags/wagtailusers_tags.py b/wagtail/wagtailusers/templatetags/wagtailusers_tags.py index 074700460..cee2f722e 100644 --- a/wagtail/wagtailusers/templatetags/wagtailusers_tags.py +++ b/wagtail/wagtailusers/templatetags/wagtailusers_tags.py @@ -30,7 +30,7 @@ def format_permissions(permission_bound_field): permissions = permission_bound_field.field._queryset # get a distinct list of the content types that these permissions relate to content_type_ids = set(permissions.values_list('content_type_id', flat=True)) - initial = permission_bound_field.form.initial['permissions'] + initial = permission_bound_field.form.initial.get('permissions', []) object_perms = [] other_perms = [] diff --git a/wagtail/wagtailusers/views/groups.py b/wagtail/wagtailusers/views/groups.py index 1c6347239..796b678f3 100644 --- a/wagtail/wagtailusers/views/groups.py +++ b/wagtail/wagtailusers/views/groups.py @@ -80,19 +80,30 @@ def index(request): @permission_required(change_user_perm) def create(request): + GroupPagePermissionFormSet = inlineformset_factory( + Group, + GroupPagePermission, + formset=BaseGroupPagePermissionFormSet, + extra=0 + ) if request.POST: form = GroupForm(request.POST) - if form.is_valid(): + formset = GroupPagePermissionFormSet(request.POST) + if form.is_valid() and formset.is_valid(): group = form.save() + formset.instance = group + formset.save() messages.success(request, _("Group '{0}' created.").format(group)) return redirect('wagtailusers_groups_index') else: messages.error(request, _("The group could not be created due to errors.")) else: form = GroupForm() + formset = GroupPagePermissionFormSet() return render(request, 'wagtailusers/groups/create.html', { 'form': form, + 'formset': formset, })