Issue 83, simplify sources app navigation and views

This commit is contained in:
Roberto Rosario
2014-10-21 03:13:51 -04:00
parent b0c76eab42
commit f8fe2ada0e
6 changed files with 42 additions and 108 deletions

View File

@@ -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':

View File

@@ -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]}

View File

@@ -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'

View File

@@ -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)

View File

@@ -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<source_id>\d+)/edit/$', 'setup_source_edit', (), 'setup_source_edit'),
url(r'^setup/(?P<source_id>\d+)/delete/$', 'setup_source_delete', (), 'setup_source_delete'),
url(r'^setup/(?P<source_type>\w+)/create/$', 'setup_source_create', (), 'setup_source_create'),
url(r'^setup/interactive/(?P<source_type>\w+)/list/$', 'setup_source_list', (), 'setup_source_list'),
url(r'^setup/interactive/(?P<source_id>\d+)/edit/$', 'setup_source_edit', (), 'setup_source_edit'),
url(r'^setup/interactive/(?P<source_id>\d+)/delete/$', 'setup_source_delete', (), 'setup_source_delete'),
url(r'^setup/interactive/(?P<source_type>\w+)/create/$', 'setup_source_create', (), 'setup_source_create'),
url(r'^setup/interactive/(?P<source_id>\d+)/transformation/list/$', 'setup_source_transformation_list', (), 'setup_source_transformation_list'),
url(r'^setup/interactive/(?P<source_id>\d+)/transformation/create/$', 'setup_source_transformation_create', (), 'setup_source_transformation_create'),
url(r'^setup/interactive/source/transformation/(?P<transformation_id>\d+)/edit/$', 'setup_source_transformation_edit', (), 'setup_source_transformation_edit'),
url(r'^setup/interactive/source/transformation/(?P<transformation_id>\d+)/delete/$', 'setup_source_transformation_delete', (), 'setup_source_transformation_delete'),
url(r'^setup/(?P<source_id>\d+)/transformation/list/$', 'setup_source_transformation_list', (), 'setup_source_transformation_list'),
url(r'^setup/(?P<source_id>\d+)/transformation/create/$', 'setup_source_transformation_create', (), 'setup_source_transformation_create'),
url(r'^setup/source/transformation/(?P<transformation_id>\d+)/edit/$', 'setup_source_transformation_edit', (), 'setup_source_transformation_edit'),
url(r'^setup/source/transformation/(?P<transformation_id>\d+)/delete/$', 'setup_source_transformation_delete', (), 'setup_source_transformation_delete'),
# Document create views

View File

@@ -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('<a href="%s">%s</a>' % (reverse('sources:setup_web_form_list'), ugettext(u'Here')))
source_setup_link = mark_safe('<a href="%s">%s</a>' % (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: