Added generic assign remove view and converted the user management and permissions apps to use it
This commit is contained in:
@@ -9,8 +9,8 @@ from django.contrib.auth.models import User, Group
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from permissions.api import check_permissions
|
||||
from common.forms import ChoiceForm
|
||||
from common.utils import generate_choices_w_labels, two_state_template
|
||||
from common.views import assign_remove
|
||||
|
||||
from user_management import PERMISSION_USER_VIEW, \
|
||||
PERMISSION_USER_EDIT, PERMISSION_USER_CREATE, \
|
||||
@@ -332,68 +332,16 @@ def get_non_group_members(group):
|
||||
def group_members(request, group_id):
|
||||
check_permissions(request.user, 'user_management', [PERMISSION_GROUP_EDIT])
|
||||
group = get_object_or_404(Group, pk=group_id)
|
||||
|
||||
if request.method == 'POST':
|
||||
if 'unselected-users-submit' in request.POST.keys():
|
||||
unselected_users_form = ChoiceForm(request.POST,
|
||||
prefix='unselected-users',
|
||||
choices=generate_choices_w_labels(get_non_group_members(group), display_object_type=False))
|
||||
if unselected_users_form.is_valid():
|
||||
for selection in unselected_users_form.cleaned_data['selection']:
|
||||
model, pk = selection.split(u',')
|
||||
ct = ContentType.objects.get(model=model)
|
||||
obj = ct.get_object_for_this_type(pk=pk)
|
||||
group.user_set.add(obj)
|
||||
messages.success(request, _(u'%(obj)s added successfully to the group: %(group)s.') % {
|
||||
'obj': generate_choices_w_labels([obj])[0][1], 'group': group})
|
||||
elif 'selected-users-submit' in request.POST.keys():
|
||||
selected_users_form = ChoiceForm(request.POST,
|
||||
prefix='selected-users',
|
||||
choices=generate_choices_w_labels(get_group_members(group), display_object_type=False))
|
||||
if selected_users_form.is_valid():
|
||||
for selection in selected_users_form.cleaned_data['selection']:
|
||||
model, pk = selection.split(u',')
|
||||
ct = ContentType.objects.get(model=model)
|
||||
obj = ct.get_object_for_this_type(pk=pk)
|
||||
try:
|
||||
group.user_set.remove(obj)
|
||||
messages.success(request, _(u'%(obj)s removed successfully from the group: %(group)s.') % {
|
||||
'obj': generate_choices_w_labels([obj])[0][1], 'group': group})
|
||||
except obj.DoesNotExist:
|
||||
messages.error(request, _(u'Unable to remove %(obj)s from the group: %(group)s.') % {
|
||||
'obj': generate_choices_w_labels([obj])[0][1], 'group': group})
|
||||
unselected_users_form = ChoiceForm(prefix='unselected-users',
|
||||
choices=generate_choices_w_labels(get_non_group_members(group), display_object_type=False))
|
||||
selected_users_form = ChoiceForm(prefix='selected-users',
|
||||
choices=generate_choices_w_labels(get_group_members(group), display_object_type=False))
|
||||
|
||||
context = {
|
||||
'object': group,
|
||||
'object_name': _(u'group'),
|
||||
'subtemplates_list': [
|
||||
{
|
||||
'name': u'generic_form_subtemplate.html',
|
||||
'context': {
|
||||
'form': unselected_users_form,
|
||||
'title': _(u'non members of group: %s') % group,
|
||||
'submit_label': _(u'Add'),
|
||||
},
|
||||
'grid': 6,
|
||||
'grid_clear': False,
|
||||
},
|
||||
{
|
||||
'name': u'generic_form_subtemplate.html',
|
||||
'context': {
|
||||
'form': selected_users_form,
|
||||
'title': _(u'members of group: %s') % group,
|
||||
'submit_label': _(u'Remove'),
|
||||
},
|
||||
'grid': 6,
|
||||
'grid_clear': True,
|
||||
},
|
||||
|
||||
],
|
||||
}
|
||||
|
||||
return render_to_response('generic_form.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
return assign_remove(
|
||||
request,
|
||||
left_list=lambda: generate_choices_w_labels(get_non_group_members(group), display_object_type=False),
|
||||
right_list=lambda: generate_choices_w_labels(get_group_members(group), display_object_type=False),
|
||||
add_method=lambda x: group.user_set.add(x),
|
||||
remove_method=lambda x: group.user_set.remove(x),
|
||||
left_list_title=_(u'non members of group: %s') % group,
|
||||
right_list_title=_(u'members of group: %s') % group,
|
||||
obj=group,
|
||||
object_name=_(u'group'),
|
||||
decode_content_type=True,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user