Change the source list and source create views to CBV.

This commit is contained in:
Roberto Rosario
2015-07-09 01:41:29 -04:00
parent 66b3424fbe
commit 22ebe2354d
2 changed files with 33 additions and 17 deletions

View File

@@ -7,7 +7,8 @@ from .api_views import (
APIStagingSourceListView, APIStagingSourceView
)
from .views import (
SourceLogListView, UploadInteractiveVersionView, UploadInteractiveView
SetupSourceCreateView, SetupSourceListView, SourceLogListView,
UploadInteractiveVersionView, UploadInteractiveView
)
from .wizards import DocumentCreateWizard
@@ -23,11 +24,11 @@ urlpatterns = patterns(
# Setup views
url(r'^setup/list/$', 'setup_source_list', name='setup_source_list'),
url(r'^setup/list/$', SetupSourceListView.as_view(), name='setup_source_list'),
url(r'^setup/(?P<source_id>\d+)/edit/$', 'setup_source_edit', name='setup_source_edit'),
url(r'^setup/(?P<pk>\d+)/logs/$', SourceLogListView.as_view(), name='setup_source_logs'),
url(r'^setup/(?P<source_id>\d+)/delete/$', 'setup_source_delete', name='setup_source_delete'),
url(r'^setup/(?P<source_type>\w+)/create/$', 'setup_source_create', name='setup_source_create'),
url(r'^setup/(?P<source_type>\w+)/create/$', SetupSourceCreateView.as_view(), name='setup_source_create'),
# Document create views

View File

@@ -3,7 +3,7 @@ from __future__ import absolute_import, unicode_literals
from django.conf import settings
from django.contrib import messages
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import reverse
from django.core.urlresolvers import reverse, reverse_lazy
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
@@ -14,7 +14,11 @@ from acls.models import AccessControlList
from common import menu_facet
from common.models import SharedUploadedFile
from common.utils import encapsulate
from common.views import MultiFormView, ParentChildListView
from common.views import (
MultiFormView, ParentChildListView, SingleObjectCreateView,
SingleObjectListView
)
from common.widgets import two_state_template
from documents.models import DocumentType, Document
from documents.permissions import (
permission_document_create, permission_document_new_version
@@ -367,28 +371,25 @@ def staging_file_delete(request, staging_folder_pk, encoded_filename):
# Setup views
def setup_source_list(request):
Permission.check_permissions(request.user, [permission_sources_setup_view])
class SetupSourceListView(SingleObjectListView):
view_permission = permission_sources_setup_view
queryset = Source.objects.select_subclasses()
context = {
'object_list': Source.objects.select_subclasses(),
'title': _('Sources'),
'hide_link': True,
extra_context = {
'extra_columns': [
{
'name': _('Type'),
'attribute': encapsulate(lambda x: x.class_fullname())
'attribute': encapsulate(lambda entry: entry.class_fullname())
},
{
'name': _('Enabled'),
'attribute': encapsulate(lambda x: _('Yes') if x.enabled else _('No'))
'attribute': encapsulate(lambda entry: two_state_template(entry.enabled))
},
]
],
'hide_link': True,
'title': _('Sources'),
}
return render_to_response('appearance/generic_list.html', context,
context_instance=RequestContext(request))
def setup_source_edit(request, source_id):
Permission.check_permissions(request.user, [permission_sources_setup_edit])
@@ -450,6 +451,20 @@ def setup_source_delete(request, source_id):
context_instance=RequestContext(request))
class SetupSourceCreateView(SingleObjectCreateView):
post_action_redirect = reverse_lazy('sources:setup_source_list')
view_permission = permission_sources_setup_create
def get_form_class(self):
return get_form_class(self.kwargs['source_type'])
def get_extra_context(self):
return {
'object': self.kwargs['source_type'],
'title': _('Create new source of type: %s') % get_class(self.kwargs['source_type']).class_fullname(),
}
def setup_source_create(request, source_type):
Permission.check_permissions(request.user, [permission_sources_setup_create])