Replace user list and group list views with CBVs.

This commit is contained in:
Roberto Rosario
2015-07-01 17:11:18 -04:00
parent 23fda5561e
commit b5d2ebc781
2 changed files with 57 additions and 46 deletions

View File

@@ -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<user_id>\d+)/edit/$', 'user_edit', name='user_edit'),
url(r'^user/(?P<user_id>\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<pk>\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<group_id>\d+)/edit/$', 'group_edit', name='group_edit'),
url(r'^group/(?P<group_id>\d+)/delete/$', 'group_delete', name='group_delete'),

View File

@@ -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):