diff --git a/mayan/apps/sources/__init__.py b/mayan/apps/sources/__init__.py index d0ef0458d9..b8fcd33677 100644 --- a/mayan/apps/sources/__init__.py +++ b/mayan/apps/sources/__init__.py @@ -10,50 +10,31 @@ from rest_api.classes import APIEndPoint from .classes import StagingFile from .links import (document_create_multiple, document_create_siblings, - setup_imap_email_list, setup_pop3_email_list, - setup_sources, setup_web_form_list, setup_source_create, + setup_sources, setup_source_create_imap_email, + setup_source_create_pop3_email, + setup_source_create_webform, + setup_source_create_staging_folder, setup_source_delete, setup_source_edit, setup_source_transformation_create, setup_source_transformation_delete, setup_source_transformation_edit, setup_source_transformation_list, - setup_staging_folder_list, setup_watch_folder_list, staging_file_delete, upload_version) -from .models import (IMAPEmail, POP3Email, SourceTransformation, - StagingFolderSource, WatchFolderSource, WebFormSource) +from .models import Source, SourceTransformation from .urls import api_urls from .widgets import staging_file_thumbnail register_links([StagingFile], [staging_file_delete]) +register_links([Source, 'sources:setup_source_list', 'sources:setup_source_create'], [setup_sources, setup_source_create_webform, setup_source_create_staging_folder, setup_source_create_pop3_email, setup_source_create_imap_email], menu_name='secondary_menu') +register_links([Source], [setup_source_edit, setup_source_delete, setup_source_transformation_list]) + register_links(SourceTransformation, [setup_source_transformation_edit, setup_source_transformation_delete]) - -register_links(['sources:setup_imap_email_list', 'sources:setup_pop3_email_list', 'sources:setup_web_form_list', 'sources:setup_staging_folder_list', 'sources:setup_watch_folder_list', 'sources:setup_source_create'], [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') - -register_links(WebFormSource, [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') -register_links(WebFormSource, [setup_source_transformation_list, setup_source_edit, setup_source_delete]) - -register_links(['sources:setup_imap_email_list', 'sources:setup_pop3_email_list', 'sources:setup_web_form_list', 'sources:setup_staging_folder_list', 'sources:setup_watch_folder_list', 'sources:setup_source_edit', 'sources:setup_source_delete', 'sources:setup_source_create'], [setup_sources, setup_source_create], menu_name='sidebar') - -register_links(StagingFolderSource, [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') -register_links(StagingFolderSource, [setup_source_transformation_list, setup_source_edit, setup_source_delete]) - -register_links(POP3Email, [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') -register_links(POP3Email, [setup_source_transformation_list, setup_source_edit, setup_source_delete]) - -register_links(IMAPEmail, [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') -register_links(IMAPEmail, [setup_source_transformation_list, setup_source_edit, setup_source_delete]) - -register_links(WatchFolderSource, [setup_web_form_list, setup_staging_folder_list, setup_pop3_email_list, setup_imap_email_list], menu_name='form_header') -register_links(WatchFolderSource, [setup_source_transformation_list, setup_source_edit, setup_source_delete]) +register_links(['sources:setup_source_transformation_create', 'sources:setup_source_transformation_edit', 'sources:setup_source_transformation_delete', 'sources:setup_source_transformation_list'], [setup_source_transformation_create], menu_name='sidebar') # Document version register_links(['documents:document_version_list', 'documents:upload_version', 'documents:document_version_revert'], [upload_version], menu_name='sidebar') -register_links(['sources:setup_source_transformation_create', 'sources:setup_source_transformation_edit', 'sources:setup_source_transformation_delete', 'sources:setup_source_transformation_list'], [setup_source_transformation_create], menu_name='sidebar') - -source_views = ['sources:setup_imap_email_list', 'sources:setup_pop3_email_list', 'sources:setup_web_form_list', 'sources:setup_staging_folder_list', 'sources:setup_watch_folder_list', 'sources:setup_source_edit', 'sources:setup_source_delete', 'sources:setup_source_create', 'sources:setup_source_transformation_list', 'sources:setup_source_transformation_edit', 'sources:setup_source_transformation_delete', 'sources:setup_source_transformation_create'] - register_model_list_columns(StagingFile, [ { 'name': _(u'Thumbnail'), 'attribute': diff --git a/mayan/apps/sources/links.py b/mayan/apps/sources/links.py index 730b9228a8..b7e5394cc4 100644 --- a/mayan/apps/sources/links.py +++ b/mayan/apps/sources/links.py @@ -5,8 +5,9 @@ from django.utils.translation import ugettext_lazy as _ from documents.permissions import (PERMISSION_DOCUMENT_CREATE, PERMISSION_DOCUMENT_NEW_VERSION) -from .models import (IMAPEmail, POP3Email, StagingFolderSource, - WatchFolderSource, WebFormSource) +from .literals import (SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_EMAIL_IMAP, + SOURCE_CHOICE_EMAIL_POP3, SOURCE_CHOICE_STAGING, + SOURCE_CHOICE_WATCH) from .permissions import (PERMISSION_SOURCES_SETUP_CREATE, PERMISSION_SOURCES_SETUP_DELETE, PERMISSION_SOURCES_SETUP_EDIT, @@ -17,16 +18,14 @@ document_create_siblings = {'text': _(u'Clone metadata'), 'view': 'sources:docum staging_file_delete = {'text': _(u'Delete'), 'view': 'sources:staging_file_delete', 'args': ['source.pk', 'object.encoded_filename'], 'famfam': 'delete', 'keep_query': True, 'permissions': [PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE]} -setup_sources = {'text': _(u'Sources'), 'view': 'sources:setup_web_form_list', 'famfam': 'application_form', 'icon': 'application_form.png', 'children_classes': [WebFormSource], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW], 'children_view_regex': [r'setup_web_form', r'setup_staging_folder', r'setup_source_']} -setup_web_form_list = {'text': _(u'Web forms'), 'view': 'sources:setup_web_form_list', 'famfam': 'application_form', 'icon': 'application_form.png', 'children_classes': [WebFormSource], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]} -setup_staging_folder_list = {'text': _(u'Staging folders'), 'view': 'sources:setup_staging_folder_list', 'famfam': 'folder_camera', 'children_classes': [StagingFolderSource], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]} -setup_watch_folder_list = {'text': _(u'Watch folders'), 'view': 'sources:setup_watch_folder_list', 'famfam': 'folder_magnify', 'children_classes': [WatchFolderSource], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]} -setup_pop3_email_list = {'text': _(u'POP3 emails'), 'view': 'sources:setup_pop3_email_list', 'famfam': 'email', 'children_classes': [POP3Email], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]} -setup_imap_email_list = {'text': _(u'IMAP emails'), 'view': 'sources:setup_imap_email_list', 'famfam': 'email', 'children_classes': [IMAPEmail], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]} - -setup_source_edit = {'text': _(u'Edit'), 'view': 'sources:setup_source_edit', 'args': ['source.pk'], 'famfam': 'application_form_edit', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]} +setup_sources = {'text': _(u'Sources'), 'view': 'sources:setup_source_list', 'famfam': 'application_form', 'icon': 'application_form.png', 'permissions': [PERMISSION_SOURCES_SETUP_VIEW], 'children_view_regex': [r'setup_web_form', r'setup_staging_folder', r'setup_source_']} +setup_source_create_webform = {'text': _(u'Add new webform source'), 'view': 'sources:setup_source_create', 'args': '"%s"' % SOURCE_CHOICE_WEB_FORM, 'famfam': 'application_form_add', 'permissions': [PERMISSION_SOURCES_SETUP_CREATE]} +setup_source_create_staging_folder = {'text': _(u'Add new staging folders'), 'view': 'sources:setup_source_create', 'args': '"%s"' % SOURCE_CHOICE_STAGING, 'famfam': 'folder_camera', 'permissions': [PERMISSION_SOURCES_SETUP_CREATE]} +setup_source_create_watch_folder_list = {'text': _(u'Add new watch folders'), 'view': 'sources:setup_source_create', 'args': '"%s"' % SOURCE_CHOICE_WATCH, 'famfam': 'folder_magnify', 'permissions': [PERMISSION_SOURCES_SETUP_CREATE]} +setup_source_create_pop3_email = {'text': _(u'Add new POP3 emails'), 'view': 'sources:setup_source_create', 'args': '"%s"' % SOURCE_CHOICE_EMAIL_POP3, 'famfam': 'email', 'permissions': [PERMISSION_SOURCES_SETUP_CREATE]} +setup_source_create_imap_email = {'text': _(u'Add new IMAP emails'), 'view': 'sources:setup_source_create', 'args': '"%s"' % SOURCE_CHOICE_EMAIL_IMAP, 'famfam': 'email', 'permissions': [PERMISSION_SOURCES_SETUP_CREATE]} setup_source_delete = {'text': _(u'Delete'), 'view': 'sources:setup_source_delete', 'args': ['source.pk'], 'famfam': 'application_form_delete', 'permissions': [PERMISSION_SOURCES_SETUP_DELETE]} -setup_source_create = {'text': _(u'Add new source'), 'view': 'sources:setup_source_create', 'args': 'source_type', 'famfam': 'application_form_add', 'permissions': [PERMISSION_SOURCES_SETUP_CREATE]} +setup_source_edit = {'text': _(u'Edit'), 'view': 'sources:setup_source_edit', 'args': ['source.pk'], 'famfam': 'application_form_edit', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]} setup_source_transformation_list = {'text': _(u'Transformations'), 'view': 'sources:setup_source_transformation_list', 'args': ['source.pk'], 'famfam': 'shape_move_front', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]} setup_source_transformation_create = {'text': _(u'Add transformation'), 'view': 'sources:setup_source_transformation_create', 'args': ['source.pk'], 'famfam': 'shape_square_add', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]} diff --git a/mayan/apps/sources/literals.py b/mayan/apps/sources/literals.py index e16b6d7db7..69acc4af6b 100644 --- a/mayan/apps/sources/literals.py +++ b/mayan/apps/sources/literals.py @@ -29,14 +29,6 @@ SOURCE_CHOICES = ( (SOURCE_CHOICE_EMAIL_IMAP, _(u'IMAP email')), ) -# TODO: remove PLURALS -SOURCE_CHOICES_PLURAL = ( - (SOURCE_CHOICE_WEB_FORM, _(u'Web forms')), - (SOURCE_CHOICE_STAGING, _(u'Server staging folders')), - (SOURCE_CHOICE_WATCH, _(u'Server watch folders')), - (SOURCE_CHOICE_EMAIL_POP3, _(u'POP3 emails')), - (SOURCE_CHOICE_EMAIL_IMAP, _(u'IMAP emails')),) - DEFAULT_INTERVAL = 60 DEFAULT_POP3_TIMEOUT = 60 DEFAULT_IMAP_MAILBOX = 'INBOX' diff --git a/mayan/apps/sources/models.py b/mayan/apps/sources/models.py index dc9d0c3f39..d5ef004c53 100644 --- a/mayan/apps/sources/models.py +++ b/mayan/apps/sources/models.py @@ -27,8 +27,8 @@ from metadata.api import save_metadata_list from .classes import Attachment, StagingFile from .literals import (DEFAULT_INTERVAL, DEFAULT_POP3_TIMEOUT, DEFAULT_IMAP_MAILBOX, SOURCE_CHOICES, - SOURCE_CHOICES_PLURAL, SOURCE_CHOICE_STAGING, - SOURCE_CHOICE_WATCH, SOURCE_CHOICE_WEB_FORM, + SOURCE_CHOICE_STAGING, SOURCE_CHOICE_WATCH, + SOURCE_CHOICE_WEB_FORM, SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, SOURCE_UNCOMPRESS_CHOICES, SOURCE_UNCOMPRESS_CHOICE_Y, SOURCE_CHOICE_EMAIL_IMAP, SOURCE_CHOICE_EMAIL_POP3) @@ -50,10 +50,6 @@ class Source(models.Model): def class_fullname(cls): return unicode(dict(SOURCE_CHOICES).get(cls.source_type)) - @classmethod - def class_fullname_plural(cls): - return unicode(dict(SOURCE_CHOICES_PLURAL).get(cls.source_type)) - def __unicode__(self): return u'%s' % self.title @@ -296,7 +292,7 @@ class POP3Email(EmailBaseModel): if self.ssl: mailbox = poplib.POP3_SSL(self.host, self.port) else: - mailbox = poplib.POP3(self.host, self.port, timeout=POP3_TIMEOUT) + mailbox = poplib.POP3(self.host, self.port, timeout=self.timeout) mailbox.getwelcome() mailbox.user(self.username) diff --git a/mayan/apps/sources/urls.py b/mayan/apps/sources/urls.py index 382cff78f4..c1e4664d8b 100644 --- a/mayan/apps/sources/urls.py +++ b/mayan/apps/sources/urls.py @@ -5,9 +5,6 @@ from django.conf.urls import patterns, url from .api_views import (APIDocumentCreateView, APIStagingSourceFileView, APIStagingSourceFileImageView, APIStagingSourceListView, APIStagingSourceView) -from .literals import (SOURCE_CHOICE_EMAIL_POP3, SOURCE_CHOICE_EMAIL_IMAP, - SOURCE_CHOICE_STAGING, SOURCE_CHOICE_WATCH, - SOURCE_CHOICE_WEB_FORM) from .wizards import DocumentCreateWizard urlpatterns = patterns('sources.views', @@ -21,21 +18,15 @@ urlpatterns = patterns('sources.views', # Setup views - 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/%s/list/$' % SOURCE_CHOICE_STAGING, 'setup_source_list', {'source_type': SOURCE_CHOICE_STAGING}, 'setup_staging_folder_list'), - url(r'^setup/interactive/%s/list/$' % SOURCE_CHOICE_WATCH, 'setup_source_list', {'source_type': SOURCE_CHOICE_WATCH}, 'setup_watch_folder_list'), - url(r'^setup/interactive/%s/list/$' % SOURCE_CHOICE_EMAIL_POP3, 'setup_source_list', {'source_type': SOURCE_CHOICE_EMAIL_POP3}, 'setup_pop3_email_list'), - url(r'^setup/interactive/%s/list/$' % SOURCE_CHOICE_EMAIL_IMAP, 'setup_source_list', {'source_type': SOURCE_CHOICE_EMAIL_IMAP}, 'setup_imap_email_list'), + url(r'^setup/list/$', 'setup_source_list', (), 'setup_source_list'), + url(r'^setup/(?P\d+)/edit/$', 'setup_source_edit', (), 'setup_source_edit'), + url(r'^setup/(?P\d+)/delete/$', 'setup_source_delete', (), 'setup_source_delete'), + url(r'^setup/(?P\w+)/create/$', 'setup_source_create', (), 'setup_source_create'), - url(r'^setup/interactive/(?P\w+)/list/$', 'setup_source_list', (), 'setup_source_list'), - url(r'^setup/interactive/(?P\d+)/edit/$', 'setup_source_edit', (), 'setup_source_edit'), - url(r'^setup/interactive/(?P\d+)/delete/$', 'setup_source_delete', (), 'setup_source_delete'), - url(r'^setup/interactive/(?P\w+)/create/$', 'setup_source_create', (), 'setup_source_create'), - - url(r'^setup/interactive/(?P\d+)/transformation/list/$', 'setup_source_transformation_list', (), 'setup_source_transformation_list'), - url(r'^setup/interactive/(?P\d+)/transformation/create/$', 'setup_source_transformation_create', (), 'setup_source_transformation_create'), - url(r'^setup/interactive/source/transformation/(?P\d+)/edit/$', 'setup_source_transformation_edit', (), 'setup_source_transformation_edit'), - url(r'^setup/interactive/source/transformation/(?P\d+)/delete/$', 'setup_source_transformation_delete', (), 'setup_source_transformation_delete'), + url(r'^setup/(?P\d+)/transformation/list/$', 'setup_source_transformation_list', (), 'setup_source_transformation_list'), + url(r'^setup/(?P\d+)/transformation/create/$', 'setup_source_transformation_create', (), 'setup_source_transformation_create'), + url(r'^setup/source/transformation/(?P\d+)/edit/$', 'setup_source_transformation_edit', (), 'setup_source_transformation_edit'), + url(r'^setup/source/transformation/(?P\d+)/delete/$', 'setup_source_transformation_delete', (), 'setup_source_transformation_delete'), # Document create views diff --git a/mayan/apps/sources/views.py b/mayan/apps/sources/views.py index 819e3c9a4c..be0f0a1930 100644 --- a/mayan/apps/sources/views.py +++ b/mayan/apps/sources/views.py @@ -114,20 +114,10 @@ def get_active_tab_links(document=None): for staging_folder in staging_folders: tab_links.append(get_tab_link_for_source(staging_folder, document)) - pop3_emails = POP3Email.objects.filter(enabled=True) - for source_instance in pop3_emails: - tab_links.append(get_tab_link_for_source(source_instance, document)) - - imap_emails = IMAPEmail.objects.filter(enabled=True) - for source_instance in imap_emails: - tab_links.append(get_tab_link_for_source(source_instance, document)) - return { 'tab_links': tab_links, SOURCE_CHOICE_WEB_FORM: web_forms, SOURCE_CHOICE_STAGING: staging_folders, - SOURCE_CHOICE_EMAIL_POP3: pop3_emails, - SOURCE_CHOICE_EMAIL_IMAP: imap_emails } @@ -151,7 +141,7 @@ def upload_interactive(request, source_id=None, document_pk=None): # TODO: use InteractiveSource.objects.count() instead if results[SOURCE_CHOICE_WEB_FORM].count() == 0 and results[SOURCE_CHOICE_STAGING].count() == 0: - source_setup_link = mark_safe('%s' % (reverse('sources:setup_web_form_list'), ugettext(u'Here'))) + source_setup_link = mark_safe('%s' % (reverse('sources:setup_source_list'), ugettext(u'Here'))) subtemplates_list.append( { 'name': 'main/generic_subtemplate.html', @@ -405,18 +395,20 @@ def staging_file_delete(request, staging_folder_pk, encoded_filename): # Setup views -def setup_source_list(request, source_type): +def setup_source_list(request): Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_VIEW]) - cls = get_class(source_type) - - # TODO: remove plurals context = { - 'object_list': cls.objects.all(), - 'title': cls.class_fullname_plural(), + 'object_list': Source.objects.select_subclasses(), + 'title': _('Sources'), 'hide_link': True, 'list_object_variable_name': 'source', - 'source_type': source_type, + 'extra_columns': [ + { + 'name': _('Type'), + 'attribute': encapsulate(lambda x: x.class_fullname()) + }, + ] } return render_to_response('main/generic_list.html', context, @@ -457,23 +449,7 @@ def setup_source_edit(request, source_id): def setup_source_delete(request, source_id): Permission.objects.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', args=[source.source_type]) - - if isinstance(source, WebFormSource): - form_icon = u'application_form_delete.png' - redirect_view = 'sources:setup_web_form_list' - elif isinstance(source, StagingFolderSource): - form_icon = u'folder_delete.png' - redirect_view = 'sources:setup_staging_folder_list' - elif isinstance(source, WatchFolderSource): - form_icon = u'folder_delete.png' - redirect_view = 'sources:setup_watch_folder_list' - elif isinstance(source, POP3Email): - form_icon = u'folder_delete.png' - redirect_view = 'sources:setup_pop3_email_list' - elif isinstance(source, IMAPEmail): - form_icon = u'folder_delete.png' - redirect_view = 'sources:setup_imap_email_list' + redirect_view = reverse('sources:setup_source_list') previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_view))) @@ -494,7 +470,6 @@ def setup_source_delete(request, source_id): 'navigation_object_name': 'source', 'delete_view': True, 'previous': previous, - 'form_icon': form_icon, 'source_type': source.source_type, } @@ -514,7 +489,7 @@ def setup_source_create(request, source_type): try: form.save() messages.success(request, _(u'Source created successfully')) - return HttpResponseRedirect(reverse('sources:setup_web_form_list')) + return HttpResponseRedirect(reverse('sources:setup_source_list')) except Exception as exception: messages.error(request, _(u'Error creating source; %s') % exception) else: