From c6a5ba8d3b93ed60275ac47f7775d573c45e6647 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 26 Jun 2014 18:01:56 -0400 Subject: [PATCH] Convert the role creation, editing and deletion views to use the new class based views --- mayan/apps/permissions/urls.py | 10 ++++--- mayan/apps/permissions/views.py | 46 ++++++++++++++++++++++++--------- 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/mayan/apps/permissions/urls.py b/mayan/apps/permissions/urls.py index f6a89af9ba..50730af3c4 100644 --- a/mayan/apps/permissions/urls.py +++ b/mayan/apps/permissions/urls.py @@ -1,11 +1,15 @@ +from __future__ import absolute_import + from django.conf.urls import patterns, url +from .views import RoleCreateView, RoleDeleteView, RoleEditView + urlpatterns = patterns('permissions.views', url(r'^role/list/$', 'role_list', (), 'role_list'), - url(r'^role/create/$', 'role_create', (), 'role_create'), + url(r'^role/create/$', RoleCreateView.as_view(), name='role_create'), url(r'^role/(?P\d+)/permissions/$', 'role_permissions', (), 'role_permissions'), - url(r'^role/(?P\d+)/edit/$', 'role_edit', (), 'role_edit'), - url(r'^role/(?P\d+)/delete/$', 'role_delete', (), 'role_delete'), + url(r'^role/(?P\d+)/edit/$', RoleEditView.as_view(), name='role_edit'), + url(r'^role/(?P\d+)/delete/$', RoleDeleteView.as_view(), name='role_delete'), url(r'^role/(?P\d+)/members/$', 'role_members', (), 'role_members'), url(r'^permissions/multiple/grant/$', 'permission_grant', (), 'permission_multiple_grant'), diff --git a/mayan/apps/permissions/views.py b/mayan/apps/permissions/views.py index 75b828b5da..e811a2d0af 100644 --- a/mayan/apps/permissions/views.py +++ b/mayan/apps/permissions/views.py @@ -6,7 +6,7 @@ import operator from django.contrib import messages from django.contrib.auth.models import User, Group from django.contrib.contenttypes.models import ContentType -from django.core.urlresolvers import reverse +from django.core.urlresolvers import reverse, reverse_lazy from django.http import HttpResponseRedirect, Http404 from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext @@ -14,10 +14,9 @@ from django.utils.simplejson import loads from django.utils.translation import ugettext_lazy as _ from acls.classes import EncapsulatedObject -from common.backport.generic.list_detail import object_list -from common.backport.generic.create_update import create_object, delete_object, update_object from common.models import AnonymousUserSingleton from common.views import assign_remove +from common.views import SingleObjectCreateView, SingleObjectDeleteView, SingleObjectEditView from common.utils import encapsulate, get_object_name from common.widgets import two_state_template @@ -28,18 +27,41 @@ from .permissions import (PERMISSION_ROLE_VIEW, PERMISSION_ROLE_EDIT, PERMISSION_PERMISSION_GRANT, PERMISSION_PERMISSION_REVOKE) +class RoleCreateView(SingleObjectCreateView): + extra_context = {'object_name': _(u'role')} + form_class = RoleForm + model = Role + permissions_required = [PERMISSION_ROLE_CREATE] + success_url = reverse_lazy('role_list') + + +class RoleDeleteView(SingleObjectDeleteView): + model = Role + permissions_required = [PERMISSION_ROLE_DELETE] + extra_context = { + 'object_name': _(u'role'), + 'form_icon': u'medal_gold_delete.png' + } + success_url = reverse_lazy('role_list') + + +class RoleEditView(SingleObjectEditView): + extra_context={'object_name': _(u'role')} + model=Role + permissions_required=[PERMISSION_ROLE_EDIT] + + def role_list(request): Permission.objects.check_permissions(request.user, [PERMISSION_ROLE_VIEW]) - return object_list( - request, - queryset=Role.objects.all(), - template_name='generic_list.html', - extra_context={ - 'title': _(u'roles'), - 'hide_link': True, - }, - ) + context = { + 'object_list': Role.objects.all(), + 'title': _(u'roles'), + 'hide_link': True, + } + + return render_to_response('generic_list.html', context, + context_instance=RequestContext(request)) def role_permissions(request, role_id):