From 4543f06ca2d6c7cb9ead0df89708507c35dd0598 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 30 Oct 2014 13:24:09 -0400 Subject: [PATCH] Warn and redirect users to the source setup view if none exists --- mayan/apps/sources/views.py | 18 +++++------------- mayan/apps/sources/wizards.py | 9 +++++++++ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/mayan/apps/sources/views.py b/mayan/apps/sources/views.py index 3a5f4434ec..a019d5fc69 100644 --- a/mayan/apps/sources/views.py +++ b/mayan/apps/sources/views.py @@ -102,6 +102,10 @@ class UploadBaseView(MultiFormView): else: self.source = InteractiveSource.objects.filter(enabled=True).select_subclasses().first() + if InteractiveSource.objects.filter(enabled=True).count() == 0: + messages.error(request, _(u'No interactive document sources have been defined or none have been enabled, create one before proceeding.')) + return HttpResponseRedirect(reverse('sources:setup_source_list')) + return super(UploadBaseView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): @@ -110,18 +114,6 @@ class UploadBaseView(MultiFormView): context['source'] = self.source - if InteractiveSource.objects.filter(enabled=True).count() == 0: - subtemplates_list.append( - { - 'name': 'main/generic_subtemplate.html', - 'context': { - 'title': _(u'Upload sources'), - 'paragraphs': [ - _(u'No interactive document sources have been defined or none have been enabled.'), - ], - } - }) - if isinstance(self.source, StagingFolderSource): try: staging_filelist = list(self.source.get_files()) @@ -443,7 +435,7 @@ def setup_source_delete(request, source_id): messages.error(request, _(u'Error deleting source "%(source)s": %(error)s') % { 'source': source, 'error': exception }) - return HttpResponseRedirect(reverse(redirect_view)) + return HttpResponseRedirect(redirect_view) context = { 'title': _(u'Are you sure you wish to delete the source: %s?') % source, diff --git a/mayan/apps/sources/wizards.py b/mayan/apps/sources/wizards.py index 87fd3e822a..54e2d93189 100644 --- a/mayan/apps/sources/wizards.py +++ b/mayan/apps/sources/wizards.py @@ -1,5 +1,6 @@ from __future__ import absolute_import +from django.contrib import messages from django.contrib.formtools.wizard.views import SessionWizardView from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect @@ -11,6 +12,8 @@ from documents.forms import DocumentTypeSelectForm from documents.permissions import PERMISSION_DOCUMENT_CREATE from metadata.forms import MetadataFormSet +from .models import InteractiveSource + class DocumentCreateWizard(MayanPermissionCheckMixin, SessionWizardView): form_list = [DocumentTypeSelectForm, MetadataFormSet] @@ -26,6 +29,12 @@ class DocumentCreateWizard(MayanPermissionCheckMixin, SessionWizardView): except TypeError: return False + def dispatch(self, request, *args, **kwargs): + if InteractiveSource.objects.filter(enabled=True).count() == 0: + messages.error(request, _(u'No interactive document sources have been defined or none have been enabled, create one before proceeding.')) + return HttpResponseRedirect(reverse('sources:setup_source_list')) + return super(DocumentCreateWizard, self).dispatch(request, *args, **kwargs) + def __init__(self, *args, **kwargs): super(DocumentCreateWizard, self).__init__(*args, **kwargs)