Convert the source edit and delete views to CBV.

This commit is contained in:
Roberto Rosario
2015-07-11 02:36:31 -04:00
parent a05888b683
commit f95c9c2aa4
2 changed files with 54 additions and 79 deletions

View File

@@ -7,8 +7,9 @@ from .api_views import (
APIStagingSourceListView, APIStagingSourceView
)
from .views import (
SetupSourceCreateView, SetupSourceListView, SourceLogListView,
UploadInteractiveVersionView, UploadInteractiveView
SetupSourceCreateView, SetupSourceDeleteView, SetupSourceEditView,
SetupSourceListView, SourceLogListView, UploadInteractiveVersionView,
UploadInteractiveView
)
from .wizards import DocumentCreateWizard
@@ -25,9 +26,9 @@ urlpatterns = patterns(
# Setup views
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+)/edit/$', SetupSourceEditView.as_view(), 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<pk>\d+)/delete/$', SetupSourceDeleteView.as_view(), name='setup_source_delete'),
url(r'^setup/(?P<source_type>\w+)/create/$', SetupSourceCreateView.as_view(), name='setup_source_create'),
# Document create views

View File

@@ -16,7 +16,7 @@ from common.models import SharedUploadedFile
from common.utils import encapsulate
from common.views import (
MultiFormView, ParentChildListView, SingleObjectCreateView,
SingleObjectListView
SingleObjectDeleteView, SingleObjectEditView, SingleObjectListView
)
from common.widgets import two_state_template
from documents.models import DocumentType, Document
@@ -371,6 +371,54 @@ def staging_file_delete(request, staging_folder_pk, encoded_filename):
# Setup views
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(),
}
class SetupSourceDeleteView(SingleObjectDeleteView):
post_action_redirect = reverse_lazy('sources:setup_source_list')
view_permission = permission_sources_setup_delete
def get_object(self):
return get_object_or_404(Source.objects.select_subclasses(), pk=self.kwargs['pk'])
def get_form_class(self):
return get_form_class(self.get_object().source_type)
def get_extra_context(self):
return {
'object': self.get_object(),
'title': _('Delete the source: %s?') % self.get_object(),
}
class SetupSourceEditView(SingleObjectEditView):
post_action_redirect = reverse_lazy('sources:setup_source_list')
view_permission = permission_sources_setup_edit
def get_object(self):
return get_object_or_404(Source.objects.select_subclasses(), pk=self.kwargs['pk'])
def get_form_class(self):
return get_form_class(self.get_object().source_type)
def get_extra_context(self):
return {
'object': self.get_object(),
'title': _('Edit source: %s') % self.get_object(),
}
class SetupSourceListView(SingleObjectListView):
view_permission = permission_sources_setup_view
queryset = Source.objects.select_subclasses()
@@ -389,77 +437,3 @@ class SetupSourceListView(SingleObjectListView):
'hide_link': True,
'title': _('Sources'),
}
def setup_source_edit(request, source_id):
Permission.check_permissions(request.user, [permission_sources_setup_edit])
source = get_object_or_404(Source.objects.select_subclasses(), pk=source_id)
form_class = get_form_class(source.source_type)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
if request.method == 'POST':
form = form_class(instance=source, data=request.POST)
if form.is_valid():
try:
form.save()
messages.success(request, _('Source edited successfully'))
return HttpResponseRedirect(next)
except Exception as exception:
messages.error(request, _('Error editing source; %s') % exception)
else:
form = form_class(instance=source)
return render_to_response('appearance/generic_form.html', {
'form': form,
'navigation_object_list': ['source'],
'next': next,
'source': source,
'source_type': source.source_type,
'title': _('Edit source: %s') % source,
}, context_instance=RequestContext(request))
def setup_source_delete(request, source_id):
Permission.check_permissions(request.user, [permission_sources_setup_delete])
source = get_object_or_404(Source.objects.select_subclasses(), pk=source_id)
redirect_view = reverse('sources:setup_source_list')
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_view)))
if request.method == 'POST':
try:
source.delete()
messages.success(request, _('Source "%s" deleted successfully.') % source)
except Exception as exception:
messages.error(request, _('Error deleting source "%(source)s": %(error)s') % {
'source': source, 'error': exception
})
return HttpResponseRedirect(redirect_view)
context = {
'delete_view': True,
'navigation_object_list': ['source'],
'previous': previous,
'source': source,
'source_type': source.source_type,
'title': _('Are you sure you wish to delete the source: %s?') % source,
}
return render_to_response('appearance/generic_confirm.html', context,
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(),
}