From fe9db003d2785c569449d9dc674c2219c978a929 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 9 Jan 2012 08:32:49 -0400 Subject: [PATCH 1/3] Improve navigation feedback when granting or revoking a role permission --- apps/permissions/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/permissions/__init__.py b/apps/permissions/__init__.py index 6eb0d68be5..12c5be29aa 100644 --- a/apps/permissions/__init__.py +++ b/apps/permissions/__init__.py @@ -25,7 +25,7 @@ permission_grant = {'text': _(u'grant'), 'view': 'permission_multiple_grant', 'f permission_revoke = {'text': _(u'revoke'), 'view': 'permission_multiple_revoke', 'famfam': 'key_delete', 'permissions': [PERMISSION_PERMISSION_REVOKE]} register_links(Role, [role_edit, role_delete, role_permissions, role_members]) -register_links(['role_members', 'role_list', 'role_view', 'role_create', 'role_edit', 'role_permissions', 'role_delete'], [role_list, role_create], menu_name='secondary_menu') +register_links([Role, 'role_list', 'role_create'], [role_list, role_create], menu_name='secondary_menu') register_multi_item_links(['role_permissions'], [permission_grant, permission_revoke]) permission_views = ['role_list', 'role_create', 'role_edit', 'role_members', 'role_permissions', 'role_delete'] From 8216953beddc94e9973a175da923c642ce855b80 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 9 Jan 2012 08:33:20 -0400 Subject: [PATCH 2/3] Add anonymous user content type support to RoleMembers class --- apps/permissions/models.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/permissions/models.py b/apps/permissions/models.py index a518bff358..b21cdbf7ae 100644 --- a/apps/permissions/models.py +++ b/apps/permissions/models.py @@ -239,7 +239,12 @@ class RoleMember(models.Model): role = models.ForeignKey(Role, verbose_name=_(u'role')) member_type = models.ForeignKey(ContentType, related_name='role_member', - limit_choices_to={'model__in': ('user', 'group')}) + limit_choices_to={ + 'model__in': ( + 'user', 'group', 'anonymoususersingleton' + ) + } + ) member_id = models.PositiveIntegerField() member_object = generic.GenericForeignKey(ct_field='member_type', fk_field='member_id') From 665ec099a97d0e35dffaeb825aa1d0b5f4697b67 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 9 Jan 2012 08:33:44 -0400 Subject: [PATCH 3/3] Add anonymous user support to the role member add and remove views --- apps/permissions/views.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/apps/permissions/views.py b/apps/permissions/views.py index 40c5b62691..a7e2df41fb 100644 --- a/apps/permissions/views.py +++ b/apps/permissions/views.py @@ -245,6 +245,9 @@ def permission_revoke(request): return render_to_response('generic_confirm.html', context, context_instance=RequestContext(request)) +from common.models import AnonymousUserSingleton + + class Member(EncapsulatedObject): source_object_name = u'member_object' @@ -255,12 +258,14 @@ def _as_choice_list(items): def get_role_members(role, separate=False): user_ct = ContentType.objects.get(model='user') group_ct = ContentType.objects.get(model='group') + anonymous = ContentType.objects.get(model='anonymoususersingleton') users = role.members(filter_dict={'member_type': user_ct}) groups = role.members(filter_dict={'member_type': group_ct}) + anonymous = role.members(filter_dict={'member_type': anonymous}) if separate: - return users, groups + return users, groups, anonymous else: members = [] @@ -269,19 +274,23 @@ def get_role_members(role, separate=False): if groups: members.append((_(u'Groups'), _as_choice_list(list(groups)))) - + + if anonymous: + members.append((_(u'Special'), _as_choice_list(list(anonymous)))) + return members def get_non_role_members(role): #non members = all users - members - staff - super users - member_users, member_groups = get_role_members(role, separate=True) + member_users, member_groups, member_anonymous = get_role_members(role, separate=True) staff_users = User.objects.filter(is_staff=True) super_users = User.objects.filter(is_superuser=True) users = set(User.objects.all()) - set(member_users) - set(staff_users) - set(super_users) groups = set(Group.objects.all()) - set(member_groups) + anonymous = set([AnonymousUserSingleton.objects.get()]) - set(member_anonymous) non_members = [] if users: @@ -289,6 +298,11 @@ def get_non_role_members(role): if groups: non_members.append((_(u'Groups'), _as_choice_list(list(groups)))) + + if anonymous: + non_members.append((_(u'Special'), _as_choice_list(list(anonymous)))) + + #non_holder_list.append((_(u'Special'), _as_choice_list([AnonymousUserSingleton.objects.get()]))) return non_members