From 4bd208ed916a35c2e4270a60f52e6a23c5f82834 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 25 Jul 2011 00:14:49 -0400 Subject: [PATCH 1/5] Moved sources app literals to their own file --- apps/sources/literals.py | 53 +++++++++++++++++++++++++++++++++++++ apps/sources/models.py | 56 +++------------------------------------- 2 files changed, 57 insertions(+), 52 deletions(-) create mode 100644 apps/sources/literals.py diff --git a/apps/sources/literals.py b/apps/sources/literals.py new file mode 100644 index 0000000000..4cb2a80640 --- /dev/null +++ b/apps/sources/literals.py @@ -0,0 +1,53 @@ +from django.utils.translation import ugettext_lazy as _ + +SOURCE_UNCOMPRESS_CHOICE_Y = 'y' +SOURCE_UNCOMPRESS_CHOICE_N = 'n' +SOURCE_UNCOMPRESS_CHOICE_ASK = 'a' + +SOURCE_UNCOMPRESS_CHOICES = ( + (SOURCE_UNCOMPRESS_CHOICE_Y, _(u'Always')), + (SOURCE_UNCOMPRESS_CHOICE_N, _(u'Never')), +) + +SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES = ( + (SOURCE_UNCOMPRESS_CHOICE_Y, _(u'Always')), + (SOURCE_UNCOMPRESS_CHOICE_N, _(u'Never')), + (SOURCE_UNCOMPRESS_CHOICE_ASK, _(u'Ask user')) +) + +SOURCE_ICON_DISK = 'disk' +SOURCE_ICON_DATABASE = 'database' +SOURCE_ICON_DRIVE = 'drive' +SOURCE_ICON_DRIVE_NETWORK = 'drive_network' +SOURCE_ICON_DRIVE_USER = 'drive_user' +SOURCE_ICON_EMAIL = 'email' +SOURCE_ICON_FOLDER = 'folder' +SOURCE_ICON_WORLD = 'world' +SOURCE_ICON_PRINTER = 'printer' +SOURCE_ICON_PRINTER_EMPTY = 'printer_empty' + +SOURCE_ICON_CHOICES = ( + (SOURCE_ICON_DISK, _(u'Disk')), + (SOURCE_ICON_DATABASE, _(u'Database')), + (SOURCE_ICON_DRIVE, _(u'Drive')), + (SOURCE_ICON_DRIVE_NETWORK, _(u'Network drive')), + (SOURCE_ICON_DRIVE_USER, _(u'User drive')), + (SOURCE_ICON_EMAIL, _(u'Envelope')), + (SOURCE_ICON_FOLDER, _(u'Folder')), + (SOURCE_ICON_WORLD, _(u'World')), + (SOURCE_ICON_PRINTER, _(u'Printer')), + (SOURCE_ICON_PRINTER_EMPTY, _(u'Empty printer')), +) + +SOURCE_CHOICE_WEB_FORM = 'webform' +SOURCE_CHOICE_STAGING = 'staging' + +SOURCE_CHOICES = ( + (SOURCE_CHOICE_WEB_FORM, _(u'web form')), + (SOURCE_CHOICE_STAGING, _(u'server staging folder')), +) + +SOURCE_CHOICES_PLURAL = ( + (SOURCE_CHOICE_WEB_FORM, _(u'web forms')), + (SOURCE_CHOICE_STAGING, _(u'server staging folders')), +) diff --git a/apps/sources/models.py b/apps/sources/models.py index 611983e7f5..8e642b7a44 100644 --- a/apps/sources/models.py +++ b/apps/sources/models.py @@ -9,58 +9,10 @@ from converter.api import get_available_transformations_choices from converter.literals import DIMENSION_SEPARATOR from sources.managers import SourceTransformationManager - -SOURCE_UNCOMPRESS_CHOICE_Y = 'y' -SOURCE_UNCOMPRESS_CHOICE_N = 'n' -SOURCE_UNCOMPRESS_CHOICE_ASK = 'a' - -SOURCE_UNCOMPRESS_CHOICES = ( - (SOURCE_UNCOMPRESS_CHOICE_Y, _(u'Always')), - (SOURCE_UNCOMPRESS_CHOICE_N, _(u'Never')), -) - -SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES = ( - (SOURCE_UNCOMPRESS_CHOICE_Y, _(u'Always')), - (SOURCE_UNCOMPRESS_CHOICE_N, _(u'Never')), - (SOURCE_UNCOMPRESS_CHOICE_ASK, _(u'Ask user')) -) - -SOURCE_ICON_DISK = 'disk' -SOURCE_ICON_DATABASE = 'database' -SOURCE_ICON_DRIVE = 'drive' -SOURCE_ICON_DRIVE_NETWORK = 'drive_network' -SOURCE_ICON_DRIVE_USER = 'drive_user' -SOURCE_ICON_EMAIL = 'email' -SOURCE_ICON_FOLDER = 'folder' -SOURCE_ICON_WORLD = 'world' -SOURCE_ICON_PRINTER = 'printer' -SOURCE_ICON_PRINTER_EMPTY = 'printer_empty' - -SOURCE_ICON_CHOICES = ( - (SOURCE_ICON_DISK, _(u'Disk')), - (SOURCE_ICON_DATABASE, _(u'Database')), - (SOURCE_ICON_DRIVE, _(u'Drive')), - (SOURCE_ICON_DRIVE_NETWORK, _(u'Network drive')), - (SOURCE_ICON_DRIVE_USER, _(u'User drive')), - (SOURCE_ICON_EMAIL, _(u'Envelope')), - (SOURCE_ICON_FOLDER, _(u'Folder')), - (SOURCE_ICON_WORLD, _(u'World')), - (SOURCE_ICON_PRINTER, _(u'Printer')), - (SOURCE_ICON_PRINTER_EMPTY, _(u'Empty printer')), -) - -SOURCE_CHOICE_WEB_FORM = 'webform' -SOURCE_CHOICE_STAGING = 'staging' - -SOURCE_CHOICES = ( - (SOURCE_CHOICE_WEB_FORM, _(u'web form')), - (SOURCE_CHOICE_STAGING, _(u'server staging folder')), -) - -SOURCE_CHOICES_PLURAL = ( - (SOURCE_CHOICE_WEB_FORM, _(u'web forms')), - (SOURCE_CHOICE_STAGING, _(u'server staging folders')), -) +from sources.literals import SOURCE_CHOICES, SOURCE_CHOICES_PLURAL, \ + SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, SOURCE_CHOICE_WEB_FORM, \ + SOURCE_CHOICE_STAGING, SOURCE_ICON_DISK, SOURCE_ICON_DRIVE, \ + SOURCE_ICON_CHOICES class BaseModel(models.Model): From 59891082ea7a897434055f949c50ff45b972311a Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 25 Jul 2011 00:15:15 -0400 Subject: [PATCH 2/5] Removed old remarked code --- apps/sources/widgets.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/sources/widgets.py b/apps/sources/widgets.py index 0bb5b02ac2..cb44ae57de 100644 --- a/apps/sources/widgets.py +++ b/apps/sources/widgets.py @@ -26,12 +26,9 @@ class FamFamRadioSelect(forms.widgets.RadioSelect): def staging_file_thumbnail(staging_file): - #try: return mark_safe(u'%(string)s' % { 'url': reverse('staging_file_preview', args=[staging_file.source.source_type, staging_file.source.pk, staging_file.id]), 'thumbnail': reverse('staging_file_thumbnail', args=[staging_file.source.pk, staging_file.id]), 'media_url': settings.MEDIA_URL, 'string': _(u'thumbnail') }) -# except: -# return u'' From 7c47bd7b5437e4f3307d0146f7d2cf4218e3e5f6 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 25 Jul 2011 00:15:34 -0400 Subject: [PATCH 3/5] Renamed source creation link --- apps/sources/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/sources/__init__.py b/apps/sources/__init__.py index 1dbd807eb8..0e6ded885b 100644 --- a/apps/sources/__init__.py +++ b/apps/sources/__init__.py @@ -28,7 +28,7 @@ setup_staging_folder_list = {'text': _(u'staging folders'), 'view': 'setup_stagi setup_source_edit = {'text': _(u'edit'), 'view': 'setup_source_edit', 'args': ['source.source_type', 'source.pk'], 'famfam': 'application_form_edit'} setup_source_delete = {'text': _(u'delete'), 'view': 'setup_source_delete', 'args': ['source.source_type', 'source.pk'], 'famfam': 'application_form_delete'} -setup_source_create = {'text': _(u'add new'), 'view': 'setup_source_create', 'args': 'source_type', 'famfam': 'application_form_add'} +setup_source_create = {'text': _(u'add new source'), 'view': 'setup_source_create', 'args': 'source_type', 'famfam': 'application_form_add'} setup_source_transformation_list = {'text': _(u'transformations'), 'view': 'setup_source_transformation_list', 'args': ['source.source_type', 'source.pk'], 'famfam': 'shape_move_front'} setup_source_transformation_create = {'text': _(u'add transformation'), 'view': 'setup_source_transformation_create', 'args': ['source.source_type', 'source.pk'], 'famfam': 'shape_square_add'} From c3af7d8ec224e4dc828fe2b87bfaf51ed3d326e4 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 25 Jul 2011 00:16:39 -0400 Subject: [PATCH 4/5] Removed source url magic number --- apps/sources/urls.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/sources/urls.py b/apps/sources/urls.py index 969cefd1aa..4e879e5096 100644 --- a/apps/sources/urls.py +++ b/apps/sources/urls.py @@ -1,6 +1,6 @@ from django.conf.urls.defaults import patterns, url -from sources.models import SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_STAGING +from sources.literals import SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_STAGING urlpatterns = patterns('sources.views', url(r'^staging_file/type/(?P\w+)/(?P\d+)/(?P\w+)/preview/$', 'staging_file_preview', (), 'staging_file_preview'), @@ -12,9 +12,9 @@ urlpatterns = patterns('sources.views', #Setup views - url(r'^setup/interactive/webforms/list/$', 'setup_source_list', {'source_type': SOURCE_CHOICE_WEB_FORM}, 'setup_web_form_list'), + url(r'^setup/interactive/%s/list/$' % SOURCE_CHOICE_WEB_FORM, 'setup_source_list', {'source_type': SOURCE_CHOICE_WEB_FORM}, 'setup_web_form_list'), - url(r'^setup/interactive/staging_folder/list/$', 'setup_source_list', {'source_type': SOURCE_CHOICE_STAGING}, 'setup_staging_folder_list'), + url(r'^setup/interactive/%s/list/$' % SOURCE_CHOICE_STAGING, 'setup_source_list', {'source_type': SOURCE_CHOICE_STAGING}, 'setup_staging_folder_list'), url(r'^setup/interactive/(?P\w+)/list/$', 'setup_source_list', (), 'setup_source_list'), url(r'^setup/interactive/(?P\w+)/(?P\d+)/edit/$', 'setup_source_edit', (), 'setup_source_edit'), From c761f30567df3cc4a6663d609b455aad6705b4f7 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 25 Jul 2011 00:17:08 -0400 Subject: [PATCH 5/5] If no there are no available sources, tell user and provide link to create them --- apps/sources/views.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/apps/sources/views.py b/apps/sources/views.py index e7decbef3c..87cd2847b2 100644 --- a/apps/sources/views.py +++ b/apps/sources/views.py @@ -7,8 +7,10 @@ from django.template import RequestContext from django.contrib import messages from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext from django.conf import settings from django.core.files.uploadedfile import SimpleUploadedFile +from django.utils.safestring import mark_safe from converter.exceptions import UnkownConvertError, UnknownFormat from documents.literals import PICTURE_ERROR_SMALL, PICTURE_ERROR_MEDIUM, \ @@ -25,8 +27,8 @@ from permissions.api import check_permissions import sendfile from sources.models import WebForm, StagingFolder, SourceTransformation -from sources.models import SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_STAGING -from sources.models import SOURCE_UNCOMPRESS_CHOICE_Y, \ +from sources.literals import SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_STAGING +from sources.literals import SOURCE_UNCOMPRESS_CHOICE_Y, \ SOURCE_UNCOMPRESS_CHOICE_ASK from sources.staging import create_staging_file_class, StagingFile from sources.forms import StagingDocumentForm, WebFormForm @@ -68,8 +70,8 @@ def get_active_tab_links(): return { 'tab_links': tab_links, - 'web_forms': web_forms, - 'staging_folders': staging_folders + SOURCE_CHOICE_WEB_FORM: web_forms, + SOURCE_CHOICE_STAGING: staging_folders } @@ -82,15 +84,18 @@ def upload_interactive(request, source_type=None, source_id=None): results = get_active_tab_links() - if results['web_forms'].count() == 0 and results['staging_folders'].count() == 0: + if results[SOURCE_CHOICE_WEB_FORM].count() == 0 and results[SOURCE_CHOICE_STAGING].count() == 0: + source_setup_link = mark_safe('%s' % (reverse('setup_web_form_list'), ugettext(u'here'))) subtemplates_list.append( { 'name': 'generic_subtemplate.html', 'context': { 'title': _(u'Upload sources'), 'paragraphs': [ - _(u'No interactive document sources have been defined or none have been enabled.') - # TODO: Add link to setup + _(u'No interactive document sources have been defined or none have been enabled.'), + _(u'Click %(setup_link)s to add or enable some document sources.') % { + 'setup_link': source_setup_link + } ], } }) @@ -101,15 +106,13 @@ def upload_interactive(request, source_type=None, source_id=None): else: document_type = None - subtemplates_list = [] - if source_type is None and source_id is None: - if results['web_forms'].count(): - source_type = results['web_forms'][0].source_type - source_id = results['web_forms'][0].pk - elif results['staging_folders'].count(): - source_type = results['staging_folders'][0].source_type - source_id = results['staging_folders'][0].pk + if results[SOURCE_CHOICE_WEB_FORM].count(): + source_type = results[SOURCE_CHOICE_WEB_FORM][0].source_type + source_id = results[SOURCE_CHOICE_WEB_FORM][0].pk + elif results[SOURCE_CHOICE_STAGING].count(): + source_type = results[SOURCE_CHOICE_STAGING][0].source_type + source_id = results[SOURCE_CHOICE_STAGING][0].pk if source_type and source_id: if source_type == SOURCE_CHOICE_WEB_FORM: