Merge branch 'feature/anonymous_support_for_roles' into development
This commit is contained in:
@@ -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']
|
||||
|
||||
@@ -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')
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user