Add support to add and remove a user from many groups at once from the user edit view
This commit is contained in:
@@ -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])
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user