Convert the source edit and delete views to CBV.
This commit is contained in:
@@ -7,8 +7,9 @@ from .api_views import (
|
|||||||
APIStagingSourceListView, APIStagingSourceView
|
APIStagingSourceListView, APIStagingSourceView
|
||||||
)
|
)
|
||||||
from .views import (
|
from .views import (
|
||||||
SetupSourceCreateView, SetupSourceListView, SourceLogListView,
|
SetupSourceCreateView, SetupSourceDeleteView, SetupSourceEditView,
|
||||||
UploadInteractiveVersionView, UploadInteractiveView
|
SetupSourceListView, SourceLogListView, UploadInteractiveVersionView,
|
||||||
|
UploadInteractiveView
|
||||||
)
|
)
|
||||||
from .wizards import DocumentCreateWizard
|
from .wizards import DocumentCreateWizard
|
||||||
|
|
||||||
@@ -25,9 +26,9 @@ urlpatterns = patterns(
|
|||||||
# Setup views
|
# Setup views
|
||||||
|
|
||||||
url(r'^setup/list/$', SetupSourceListView.as_view(), 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+)/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<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'),
|
url(r'^setup/(?P<source_type>\w+)/create/$', SetupSourceCreateView.as_view(), name='setup_source_create'),
|
||||||
|
|
||||||
# Document create views
|
# Document create views
|
||||||
|
|||||||
+49
-75
@@ -16,7 +16,7 @@ from common.models import SharedUploadedFile
|
|||||||
from common.utils import encapsulate
|
from common.utils import encapsulate
|
||||||
from common.views import (
|
from common.views import (
|
||||||
MultiFormView, ParentChildListView, SingleObjectCreateView,
|
MultiFormView, ParentChildListView, SingleObjectCreateView,
|
||||||
SingleObjectListView
|
SingleObjectDeleteView, SingleObjectEditView, SingleObjectListView
|
||||||
)
|
)
|
||||||
from common.widgets import two_state_template
|
from common.widgets import two_state_template
|
||||||
from documents.models import DocumentType, Document
|
from documents.models import DocumentType, Document
|
||||||
@@ -371,6 +371,54 @@ def staging_file_delete(request, staging_folder_pk, encoded_filename):
|
|||||||
|
|
||||||
|
|
||||||
# Setup views
|
# 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):
|
class SetupSourceListView(SingleObjectListView):
|
||||||
view_permission = permission_sources_setup_view
|
view_permission = permission_sources_setup_view
|
||||||
queryset = Source.objects.select_subclasses()
|
queryset = Source.objects.select_subclasses()
|
||||||
@@ -389,77 +437,3 @@ class SetupSourceListView(SingleObjectListView):
|
|||||||
'hide_link': True,
|
'hide_link': True,
|
||||||
'title': _('Sources'),
|
'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(),
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user