Add support to add and remove a user from many groups at once from the user edit view

This commit is contained in:
Roberto Rosario
2012-10-09 12:34:55 -04:00
parent 5e0fba3b69
commit 5a5721c618
3 changed files with 33 additions and 2 deletions

View File

@@ -18,6 +18,7 @@ user_delete = {u'text': _('delete'), 'view': 'user_delete', 'args': 'object.id',
user_multiple_delete = {u'text': _('delete'), 'view': 'user_multiple_delete', 'famfam': 'user_delete', 'permissions': [PERMISSION_USER_DELETE]}
user_set_password = {u'text': _('reset password'), 'view': 'user_set_password', 'args': 'object.id', 'famfam': 'lock_edit', 'permissions': [PERMISSION_USER_EDIT]}
user_multiple_set_password = {u'text': _('reset password'), 'view': 'user_multiple_set_password', 'famfam': 'lock_edit', 'permissions': [PERMISSION_USER_EDIT]}
user_groups = {'text': _(u'groups'), 'view': 'user_groups', 'args': 'object.id', 'famfam': 'group_link', 'permissions': [PERMISSION_USER_EDIT]}
group_list = {'text': _(u'group list'), 'view': 'group_list', 'famfam': 'group', 'permissions': [PERMISSION_GROUP_VIEW]}
group_setup = {'text': _(u'groups'), 'view': 'group_list', 'famfam': 'group', 'icon': 'group.png', 'permissions': [PERMISSION_GROUP_VIEW], 'children_view_regex': [r'^group_']}
@@ -27,8 +28,8 @@ group_delete = {u'text': _('delete'), 'view': 'group_delete', 'args': 'object.id
group_multiple_delete = {u'text': _('delete'), 'view': 'group_multiple_delete', 'famfam': 'group_delete', 'permissions': [PERMISSION_GROUP_DELETE]}
group_members = {'text': _(u'members'), 'view': 'group_members', 'args': 'object.id', 'famfam': 'group_link', 'permissions': [PERMISSION_GROUP_EDIT]}
register_links(User, [user_edit, user_set_password, user_delete])
register_links(['user_multiple_set_password', 'user_set_password', 'user_multiple_delete', 'user_delete', 'user_edit', 'user_list', 'user_add'], [user_list, user_add], menu_name=u'secondary_menu')
register_links(User, [user_edit, user_set_password, user_groups, user_delete])
register_links([User, 'user_multiple_set_password', 'user_multiple_delete', 'user_list', 'user_add'], [user_list, user_add], menu_name=u'secondary_menu')
register_multi_item_links(['user_list'], [user_multiple_set_password, user_multiple_delete])
register_links(Group, [group_edit, group_members, group_delete])

View File

@@ -8,6 +8,7 @@ urlpatterns = patterns('user_management.views',
url(r'^user/multiple/delete/$', 'user_multiple_delete', (), 'user_multiple_delete'),
url(r'^user/(?P<user_id>\d+)/set_password/$', 'user_set_password', (), 'user_set_password'),
url(r'^user/multiple/set_password/$', 'user_multiple_set_password', (), 'user_multiple_set_password'),
url(r'^user/(?P<user_id>\d+)/groups/$', 'user_groups', (), 'user_groups'),
url(r'^group/list/$', 'group_list', (), 'group_list'),
url(r'^group/add/$', 'group_add', (), 'group_add'),

View File

@@ -216,6 +216,35 @@ def user_multiple_set_password(request):
)
def get_user_groups(user):
#return user.group_set.all()
return Group.objects.filter(user=user)
def get_user_non_groups(user):
return Group.objects.exclude(user=user)
def user_groups(request, user_id):
Permission.objects.check_permissions(request.user, [PERMISSION_USER_EDIT])
user = get_object_or_404(User, pk=user_id)
return assign_remove(
request,
left_list=lambda: generate_choices_w_labels(get_user_non_groups(user), display_object_type=False),
right_list=lambda: generate_choices_w_labels(get_user_groups(user), display_object_type=False),
add_method=lambda x: x.user_set.add(user),
remove_method=lambda x: x.user_set.remove(user),
left_list_title=_(u'non groups of user: %s') % user,
right_list_title=_(u'groups of user: %s') % user,
decode_content_type=True,
extra_context={
'object': user,
'object_name': _(u'user'),
}
)
# Group views
def group_list(request):
Permission.objects.check_permissions(request.user, [PERMISSION_GROUP_VIEW])