Add commented code for ideas
This commit is contained in:
@@ -28,3 +28,52 @@ class HolderSelectionForm(forms.Form):
|
||||
#if holder_list:
|
||||
self.fields['holder_gid'].choices = [(AccessHolder.encapsulate(holder).gid, get_object_name(holder)) for holder in holder_list]
|
||||
|
||||
|
||||
'''
|
||||
def get_role_members(role):
|
||||
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)
|
||||
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 add_role_member(role, selection):
|
||||
model, pk = selection.split(u',')
|
||||
ct = ContentType.objects.get(model=model)
|
||||
new_member, created = RoleMember.objects.get_or_create(role=role, member_type=ct, member_id=pk)
|
||||
if not created:
|
||||
raise Exception
|
||||
|
||||
|
||||
def remove_role_member(role, selection):
|
||||
model, pk = selection.split(u',')
|
||||
ct = ContentType.objects.get(model=model)
|
||||
member = RoleMember.objects.get(role=role, member_type=ct, member_id=pk)
|
||||
member.delete()
|
||||
|
||||
def role_members(request, role_id):
|
||||
check_permissions(request.user, [PERMISSION_ROLE_EDIT])
|
||||
role = get_object_or_404(Role, pk=role_id)
|
||||
|
||||
return assign_remove(
|
||||
request,
|
||||
left_list=lambda: generate_choices_w_labels(get_non_role_members(role)),
|
||||
right_list=lambda: generate_choices_w_labels(get_role_members(role)),
|
||||
add_method=lambda x: add_role_member(role, x),
|
||||
remove_method=lambda x: remove_role_member(role, x),
|
||||
left_list_title=_(u'non members of role: %s') % role,
|
||||
right_list_title=_(u'members of role: %s') % role,
|
||||
extra_context={
|
||||
'object': role,
|
||||
'object_name': _(u'role'),
|
||||
}
|
||||
)
|
||||
'''
|
||||
|
||||
Reference in New Issue
Block a user