diff --git a/mayan/apps/user_management/urls.py b/mayan/apps/user_management/urls.py index e427920306..f11a06a3d5 100644 --- a/mayan/apps/user_management/urls.py +++ b/mayan/apps/user_management/urls.py @@ -6,11 +6,13 @@ from .api_views import ( APICurrentUserView, APIGroupListView, APIGroupView, APIUserListView, APIUserView ) -from .views import GroupMembersView, UserGroupsView +from .views import ( + GroupListView, GroupMembersView, UserGroupsView, UserListView +) urlpatterns = patterns( 'user_management.views', - url(r'^user/list/$', 'user_list', name='user_list'), + url(r'^user/list/$', UserListView.as_view(), name='user_list'), url(r'^user/add/$', 'user_add', name='user_add'), url(r'^user/(?P\d+)/edit/$', 'user_edit', name='user_edit'), url(r'^user/(?P\d+)/delete/$', 'user_delete', name='user_delete'), @@ -19,7 +21,7 @@ urlpatterns = patterns( url(r'^user/multiple/set_password/$', 'user_multiple_set_password', name='user_multiple_set_password'), url(r'^user/(?P\d+)/groups/$', UserGroupsView.as_view(), name='user_groups'), - url(r'^group/list/$', 'group_list', name='group_list'), + url(r'^group/list/$', GroupListView.as_view(), name='group_list'), url(r'^group/add/$', 'group_add', name='group_add'), url(r'^group/(?P\d+)/edit/$', 'group_edit', name='group_edit'), url(r'^group/(?P\d+)/delete/$', 'group_delete', name='group_delete'), diff --git a/mayan/apps/user_management/views.py b/mayan/apps/user_management/views.py index 3cbe306cab..ae335430be 100644 --- a/mayan/apps/user_management/views.py +++ b/mayan/apps/user_management/views.py @@ -11,7 +11,7 @@ from django.template import RequestContext from django.utils.translation import ugettext_lazy as _ from common.utils import encapsulate -from common.views import AssignRemoveView +from common.views import AssignRemoveView, SingleObjectListView from common.widgets import two_state_template from permissions import Permission @@ -23,35 +23,40 @@ from .permissions import ( ) -def user_list(request): - Permission.check_permissions(request.user, [permission_user_view]) +class UserListView(SingleObjectListView): + view_permission = permission_user_view - context = { - 'object_list': get_user_model().objects.exclude(is_superuser=True).exclude(is_staff=True).order_by('username'), - 'title': _('Users'), - 'hide_link': True, - 'extra_columns': [ - { - 'name': _('Full name'), - 'attribute': 'get_full_name' - }, - { - 'name': _('Email'), - 'attribute': 'email' - }, - { - 'name': _('Active'), - 'attribute': encapsulate(lambda x: two_state_template(x.is_active)), - }, - { - 'name': _('Has usable password?'), - 'attribute': encapsulate(lambda x: two_state_template(x.has_usable_password())), - }, - ], - } + def get_queryset(self): + return get_user_model().objects.exclude(is_superuser=True).exclude(is_staff=True).order_by('last_name', 'first_name') - return render_to_response('appearance/generic_list.html', context, - context_instance=RequestContext(request)) + def get_context_data(self, **kwargs): + context = super(UserListView, self).get_context_data(**kwargs) + context.update( + { + 'title': _('Users'), + 'hide_link': True, + 'extra_columns': [ + { + 'name': _('Full name'), + 'attribute': 'get_full_name' + }, + { + 'name': _('Email'), + 'attribute': 'email' + }, + { + 'name': _('Active'), + 'attribute': encapsulate(lambda x: two_state_template(x.is_active)), + }, + { + 'name': _('Has usable password?'), + 'attribute': encapsulate(lambda x: two_state_template(x.has_usable_password())), + }, + ], + } + ) + + return context def user_edit(request, user_id): @@ -251,23 +256,27 @@ class UserGroupsView(AssignRemoveView): # Group views -def group_list(request): - Permission.check_permissions(request.user, [permission_group_view]) +class GroupListView(SingleObjectListView): + view_permission = permission_group_view - context = { - 'object_list': Group.objects.all(), - 'title': _('Groups'), - 'hide_link': True, - 'extra_columns': [ + def get_queryset(self): + return Group.objects.all() + + def get_context_data(self, **kwargs): + context = super(GroupListView, self).get_context_data(**kwargs) + context.update( { - 'name': _('Members'), - 'attribute': 'user_set.count' - }, - ], - } - - return render_to_response('appearance/generic_list.html', context, - context_instance=RequestContext(request)) + 'title': _('Groups'), + 'hide_link': True, + 'extra_columns': [ + { + 'name': _('Members'), + 'attribute': 'user_set.count' + }, + ], + } + ) + return context def group_edit(request, group_id):