From da3bd654bce9ef10b6aaaf6ffa1d597a773a30a6 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 8 May 2011 03:08:06 -0400 Subject: [PATCH] Enabled adding and removing of user group as role members --- apps/permissions/views.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/apps/permissions/views.py b/apps/permissions/views.py index ea444d3d05..8f331b98f1 100644 --- a/apps/permissions/views.py +++ b/apps/permissions/views.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext as _ +from django.utils.translation import ugettext_lazy as _ from django.http import HttpResponseRedirect from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext @@ -8,7 +8,7 @@ from django.core.urlresolvers import reverse from django.views.generic.create_update import create_object, delete_object, update_object from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist -from django.contrib.auth.models import User +from django.contrib.auth.models import User, Group from permissions.models import Role, Permission, PermissionHolder, RoleMember from permissions.forms import RoleForm, RoleForm_view, ChoiceForm @@ -125,15 +125,15 @@ def permission_grant_revoke(request, permission_id, app_label, module_name, pk, if action == 'grant': check_permissions(request.user, 'permissions', [PERMISSION_PERMISSION_GRANT]) - title = _('Are you sure you wish to grant the permission "%(permission)s" to %(ct_name)s: %(requester)s') % { + title = _(u'Are you sure you wish to grant the permission "%(permission)s" to %(ct_name)s: %(requester)s') % { 'permission': permission, 'ct_name': ct.name, 'requester': requester} elif action == 'revoke': check_permissions(request.user, 'permissions', [PERMISSION_PERMISSION_REVOKE]) - title = _('Are you sure you wish to revoke the permission "%(permission)s" from %(ct_name)s: %(requester)s') % { + title = _(u'Are you sure you wish to revoke the permission "%(permission)s" from %(ct_name)s: %(requester)s') % { 'permission': permission, 'ct_name': ct.name, 'requester': requester} else: - return HttpResponseRedirect('/') + return HttpResponseRedirect(u'/') next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None))) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) @@ -170,25 +170,30 @@ def generate_choices_w_labels(choices): results = [] for choice in choices: ct_label = ContentType.objects.get_for_model(choice).name + verbose_name = unicode(getattr(choice._meta, u'verbose_name', ct_label)) label = unicode(choice) if isinstance(choice, User): label = choice.get_full_name() if choice.get_full_name() else choice - results.append(('%s,%s' % (ct_label, choice.pk), '%s: %s' % (ct_label, label))) + results.append((u'%s,%s' % (ct_label, choice.pk), u'%s: %s' % (verbose_name, label))) #Sort results by the label not the key value return sorted(results, key=lambda x: x[1]) def get_role_members(role): - return [member.member_object for member in role.rolemember_set.filter(member_type=ContentType.objects.get(model='user'))] + user_ct = ContentType.objects.get(model='user') + group_ct = ContentType.objects.get(model='group') + return [member.member_object for member in role.rolemember_set.filter(member_type__in=[user_ct, group_ct])] def get_non_role_members(role): #non members = all users - members - staff - super users staff_users = User.objects.filter(is_staff=True) super_users = User.objects.filter(is_superuser=True) - return list(set(User.objects.exclude(pk__in=[member.id for member in get_role_members(role)])) - set(staff_users) - set(super_users)) + users = set(User.objects.exclude(pk__in=[member.pk for member in get_role_members(role)])) - set(staff_users) - set(super_users) + groups = set(Group.objects.exclude(pk__in=[member.pk for member in get_role_members(role)])) + return list(users | groups) def role_members(request, role_id): @@ -240,14 +245,14 @@ def role_members(request, role_id): 'form_list': [ { 'form': unselected_users_form, - 'title': _(u'non members of role'), + 'title': _(u'non members of role: %s') % role, 'grid': 6, 'grid_clear': False, 'submit_label': _(u'Add'), }, { 'form': selected_users_form, - 'title': _(u'members of role'), + 'title': _(u'members of role: %s') % role, 'grid': 6, 'grid_clear': True, 'submit_label': _(u'Remove'),