Finished document source setup views
This commit is contained in:
@@ -9,6 +9,7 @@ from converter import formats_list
|
||||
from documents import document_type_views
|
||||
from metadata import setup_metadata_type_list, metadata_type_setup_views
|
||||
from metadata import setup_metadata_set_list, metadata_set_setup_views
|
||||
from sources import source_list, source_views
|
||||
|
||||
from main.conf.settings import SIDE_BAR_SEARCH
|
||||
from main.conf.settings import DISABLE_HOME_VIEW
|
||||
@@ -45,18 +46,19 @@ if not SIDE_BAR_SEARCH:
|
||||
|
||||
register_top_menu('tools', link=tools_menu, children_views=['statistics', 'history_list', 'formats_list'])
|
||||
#register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children=setup_views)
|
||||
register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children_path_regex=[r'^settings/', r'^user_management/', r'^permissions', r'^documents/type', r'^metadata/setup'])
|
||||
register_top_menu('setup_menu', link={'text': _(u'setup'), 'view': 'setting_list', 'famfam': 'cog'}, children_path_regex=[r'^settings/', r'^user_management/', r'^permissions', r'^documents/type', r'^metadata/setup', r'sources/setup'])
|
||||
register_top_menu('about', link={'text': _(u'about'), 'view': 'about', 'famfam': 'information'})
|
||||
|
||||
register_links(['tools_menu', 'statistics', 'history_list', 'history_view', 'formats_list'], [tools_menu, statistics, history_list, formats_list, sentry], menu_name='secondary_menu')
|
||||
|
||||
setup_links = [check_settings, role_list, user_list, group_list, document_types, setup_metadata_type_list, setup_metadata_set_list, admin_site]
|
||||
setup_links = [check_settings, role_list, user_list, group_list, document_types, setup_metadata_type_list, setup_metadata_set_list, source_list, admin_site]
|
||||
register_links(['setting_list'], setup_links, menu_name='secondary_menu')
|
||||
register_links(permission_views, setup_links, menu_name='secondary_menu')
|
||||
register_links(user_management_views, setup_links, menu_name='secondary_menu')
|
||||
register_links(document_type_views, setup_links, menu_name='secondary_menu')
|
||||
register_links(metadata_type_setup_views, setup_links, menu_name='secondary_menu')
|
||||
register_links(metadata_set_setup_views, setup_links, menu_name='secondary_menu')
|
||||
register_links(source_views, setup_links, menu_name='secondary_menu')
|
||||
|
||||
|
||||
def get_version():
|
||||
|
||||
@@ -5,8 +5,33 @@ from navigation.api import register_links, \
|
||||
register_sidebar_template
|
||||
|
||||
from sources.staging import StagingFile
|
||||
from sources.models import WebForm, StagingFolder
|
||||
|
||||
staging_file_preview = {'text': _(u'preview'), 'class': 'fancybox-noscaling', 'view': 'staging_file_preview', 'args': ['source.source_type', 'source.pk', 'object.id'], 'famfam': 'zoom'}
|
||||
staging_file_delete = {'text': _(u'delete'), 'view': 'staging_file_delete', 'args': ['source.source_type', 'source.pk', 'object.id'], 'famfam': 'delete'}
|
||||
|
||||
setup_web_form_list = {'text': _(u'web forms'), 'view': 'setup_web_form_list', 'famfam': 'application_form'}
|
||||
setup_web_form_edit = {'text': _(u'edit'), 'view': 'setup_web_form_edit', 'args': 'object.pk', 'famfam': 'application_form_edit'}
|
||||
setup_web_form_delete = {'text': _(u'delete'), 'view': 'setup_web_form_delete', 'args': 'object.pk', 'famfam': 'application_form_delete'}
|
||||
setup_web_form_create = {'text': _(u'add new'), 'view': 'setup_web_form_create', 'famfam': 'application_form_add'}
|
||||
|
||||
setup_staging_folder_list = {'text': _(u'staging folders'), 'view': 'setup_staging_folder_list', 'famfam': 'folder_magnify'}
|
||||
setup_staging_folder_edit = {'text': _(u'edit'), 'view': 'setup_staging_folder_edit', 'args': 'object.pk', 'famfam': 'folder_edit'}
|
||||
setup_staging_folder_delete = {'text': _(u'delete'), 'view': 'setup_staging_folder_delete', 'args': 'object.pk', 'famfam': 'folder_delete'}
|
||||
setup_staging_folder_create = {'text': _(u'add new'), 'view': 'setup_staging_folder_create', 'famfam': 'folder_add'}
|
||||
|
||||
source_list = {'text': _(u'Document sources'), 'view': 'setup_web_form_list', 'famfam': 'page_add'}
|
||||
|
||||
register_links(StagingFile, [staging_file_preview, staging_file_delete])
|
||||
|
||||
register_links(['setup_web_form_list', 'setup_web_form_create', 'setup_staging_folder_list', 'setup_staging_folder_create'], [setup_web_form_list, setup_staging_folder_list], menu_name='form_header')
|
||||
|
||||
register_links(WebForm, [setup_web_form_list, setup_staging_folder_list], menu_name='form_header')
|
||||
register_links(WebForm, [setup_web_form_edit, setup_web_form_delete])
|
||||
register_links(['setup_web_form_list', 'setup_web_form_edit', 'setup_web_form_delete', 'setup_web_form_create'], [setup_web_form_create], menu_name='sidebar')
|
||||
|
||||
register_links(StagingFolder, [setup_web_form_list, setup_staging_folder_list], menu_name='form_header')
|
||||
register_links(StagingFolder, [setup_staging_folder_edit, setup_staging_folder_delete])
|
||||
register_links(['setup_staging_folder_list', 'setup_staging_folder_edit', 'setup_staging_folder_delete', 'setup_staging_folder_create'], [setup_staging_folder_create], menu_name='sidebar')
|
||||
|
||||
source_views = ['setup_web_form_list', 'setup_web_form_edit', 'setup_web_form_delete', 'setup_web_form_create', 'setup_staging_folder_list', 'setup_staging_folder_edit', 'setup_staging_folder_delete', 'setup_staging_folder_create']
|
||||
|
||||
@@ -4,6 +4,8 @@ from django.utils.translation import ugettext
|
||||
|
||||
from documents.forms import DocumentForm
|
||||
|
||||
from sources.models import WebForm, StagingFolder
|
||||
|
||||
|
||||
class StagingDocumentForm(DocumentForm):
|
||||
"""
|
||||
@@ -48,3 +50,13 @@ class WebFormForm(DocumentForm):
|
||||
label=_(u'Expand compressed files'), required=False,
|
||||
help_text=ugettext(u'Upload a compressed file\'s contained files as individual documents')
|
||||
)
|
||||
|
||||
|
||||
class WebFormSetupForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = WebForm
|
||||
|
||||
|
||||
class StagingFolderSetupForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = StagingFolder
|
||||
|
||||
@@ -57,7 +57,7 @@ class BaseModel(models.Model):
|
||||
document_type = models.ForeignKey(DocumentType, blank=True, null=True, verbose_name=_(u'document type'))
|
||||
|
||||
def __unicode__(self):
|
||||
return u'%s (%s)' % (self.title, dict(SOURCE_CHOICES).get(self.source_type))
|
||||
return u'%s' % self.title
|
||||
|
||||
class Meta:
|
||||
ordering = ('title',)
|
||||
@@ -72,7 +72,7 @@ class InteractiveBaseModel(BaseModel):
|
||||
self.icon = self.default_icon
|
||||
super(BaseModel, self).save(*args, **kwargs)
|
||||
|
||||
class Meta:
|
||||
class Meta(BaseModel.Meta):
|
||||
abstract = True
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ class StagingFolder(InteractiveBaseModel):
|
||||
|
||||
return u'x'.join(dimensions)
|
||||
|
||||
class Meta:
|
||||
class Meta(InteractiveBaseModel.Meta):
|
||||
verbose_name = _(u'staging folder')
|
||||
verbose_name_plural = _(u'staging folder')
|
||||
|
||||
@@ -121,6 +121,6 @@ class WebForm(InteractiveBaseModel):
|
||||
uncompress = models.CharField(max_length=1, choices=SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, verbose_name=_(u'uncompress'))
|
||||
#Default path
|
||||
|
||||
class Meta:
|
||||
class Meta(InteractiveBaseModel.Meta):
|
||||
verbose_name = _(u'web form')
|
||||
verbose_name_plural = _(u'web forms')
|
||||
|
||||
@@ -1,9 +1,24 @@
|
||||
from django.conf.urls.defaults import patterns, url
|
||||
|
||||
from sources.models import SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_STAGING
|
||||
|
||||
urlpatterns = patterns('sources.views',
|
||||
url(r'^staging_file/type/(?P<source_type>\w+)/(?P<source_id>\d+)/(?P<staging_file_id>\w+)/preview/$', 'staging_file_preview', (), 'staging_file_preview'),
|
||||
url(r'^staging_file/type/(?P<source_type>\w+)/(?P<source_id>\d+)/(?P<staging_file_id>\w+)/delete/$', 'staging_file_delete', (), 'staging_file_delete'),
|
||||
|
||||
url(r'^upload/interactive/(?P<source_type>\w+)/(?P<source_id>\d+)/$', 'upload_interactive', (), 'upload_interactive'),
|
||||
url(r'^upload/interactive/$', 'upload_interactive', (), 'upload_interactive'),
|
||||
|
||||
#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/webforms/(?P<source_id>\w+)/edit/$', 'setup_source_edit', {'source_type': SOURCE_CHOICE_WEB_FORM}, 'setup_web_form_edit'),
|
||||
url(r'^setup/interactive/webforms/(?P<source_id>\w+)/delete/$', 'setup_source_delete', {'source_type': SOURCE_CHOICE_WEB_FORM}, 'setup_web_form_delete'),
|
||||
url(r'^setup/interactive/webforms/create/$', 'setup_source_create', {'source_type': SOURCE_CHOICE_WEB_FORM}, 'setup_web_form_create'),
|
||||
|
||||
url(r'^setup/interactive/staging_folder/list/$', 'setup_source_list', {'source_type': SOURCE_CHOICE_STAGING}, 'setup_staging_folder_list'),
|
||||
url(r'^setup/interactive/staging_folder/(?P<source_id>\w+)/edit/$', 'setup_source_edit', {'source_type': SOURCE_CHOICE_STAGING}, 'setup_staging_folder_edit'),
|
||||
url(r'^setup/interactive/staging_folder/(?P<source_id>\w+)/delete/$', 'setup_source_delete', {'source_type': SOURCE_CHOICE_STAGING}, 'setup_staging_folder_delete'),
|
||||
url(r'^setup/interactive/staging_folder/create/$', 'setup_source_create', {'source_type': SOURCE_CHOICE_STAGING}, 'setup_staging_folder_create'),
|
||||
|
||||
)
|
||||
|
||||
@@ -29,6 +29,8 @@ from sources.models import SOURCE_UNCOMPRESS_CHOICE_Y, \
|
||||
SOURCE_UNCOMPRESS_CHOICE_ASK
|
||||
from sources.staging import create_staging_file_class
|
||||
from sources.forms import StagingDocumentForm, WebFormForm
|
||||
from sources.forms import WebFormSetupForm, StagingFolderSetupForm
|
||||
|
||||
|
||||
def return_function(obj):
|
||||
return lambda context: context['source'].source_type == obj.source_type and context['source'].pk == obj.pk
|
||||
@@ -72,7 +74,7 @@ def upload_interactive(request, source_type=None, source_id=None):
|
||||
'context': {
|
||||
'title': _(u'Upload sources'),
|
||||
'paragraphs': [
|
||||
_(u'Not document sources have been defined or there are no sources enabled.')
|
||||
_(u'No interactive document sources have been defined or none have been enabled.')
|
||||
# TODO: Add link to setup
|
||||
],
|
||||
}
|
||||
@@ -309,3 +311,135 @@ def staging_file_delete(request, source_type, source_id, staging_file_id):
|
||||
'previous': previous,
|
||||
'form_icon': u'delete.png',
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def setup_source_list(request, source_type):
|
||||
#check_permissions(request.user, [PERMISSION_SOURCES_SETUP_VIEW])
|
||||
|
||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
||||
cls = WebForm
|
||||
title = _(u'web form sources')
|
||||
elif source_type == SOURCE_CHOICE_STAGING:
|
||||
cls = StagingFolder
|
||||
title = _(u'staging folder sources')
|
||||
|
||||
context = {
|
||||
'object_list': cls.objects.all(),
|
||||
'title': title,
|
||||
#'multi_select_as_buttons': True,
|
||||
#'hide_links': True,
|
||||
}
|
||||
|
||||
return render_to_response('generic_list.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def setup_source_edit(request, source_type, source_id):
|
||||
#check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
||||
|
||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
||||
cls = WebForm
|
||||
form_class = WebFormSetupForm
|
||||
title = _(u'edit web form source: %s')
|
||||
elif source_type == SOURCE_CHOICE_STAGING:
|
||||
cls = StagingFolder
|
||||
form_class = StagingFolderSetupForm
|
||||
title = _(u'edit staging folder source: %s')
|
||||
|
||||
source = get_object_or_404(cls, pk=source_id)
|
||||
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', '/')))
|
||||
|
||||
if request.method == 'POST':
|
||||
form = form_class(instance=source, data=request.POST)
|
||||
if form.is_valid():
|
||||
try:
|
||||
form.save()
|
||||
messages.success(request, _(u'Source edited successfully'))
|
||||
return HttpResponseRedirect(next)
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error editing source; %s') % e)
|
||||
else:
|
||||
form = form_class(instance=source)
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'title': title % source,
|
||||
'form': form,
|
||||
'object': source,
|
||||
'next': next,
|
||||
'object_name': _(u'source'),
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def setup_source_delete(request, source_type, source_id):
|
||||
#check_permissions(request.user, [PERMISSION_SOURCES_SETUP_DELETE])
|
||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
||||
cls = WebForm
|
||||
title = _(u'Are you sure you wish to delete the web form source: %s?')
|
||||
form_icon = u'application_form_delete.png'
|
||||
redirect_view = 'setup_web_form_list'
|
||||
elif source_type == SOURCE_CHOICE_STAGING:
|
||||
cls = StagingFolder
|
||||
title = _(u'Are you sure you wish to delete the staging folder source: %s?')
|
||||
form_icon = u'folder_delete.png'
|
||||
redirect_view = 'setup_staging_folder_list'
|
||||
|
||||
source = get_object_or_404(cls, pk=source_id)
|
||||
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
source.delete()
|
||||
messages.success(request, _(u'Source "%s" deleted successfully.') % source)
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error deleting source "%(source)s": %(error)s') % {
|
||||
'source': source, 'error': e
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(reverse(redirect_view))
|
||||
|
||||
context = {
|
||||
'title': title % source,
|
||||
'object': source,
|
||||
'object_name': _(u'source'),
|
||||
'delete_view': True,
|
||||
'previous': next,
|
||||
'next': next,
|
||||
'form_icon': form_icon,
|
||||
}
|
||||
|
||||
return render_to_response('generic_confirm.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def setup_source_create(request, source_type):
|
||||
#check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
||||
|
||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
||||
#cls = WebForm
|
||||
form_class = WebFormSetupForm
|
||||
title = _(u'Creating web form source')
|
||||
elif source_type == SOURCE_CHOICE_STAGING:
|
||||
#cls = StagingFolder
|
||||
form_class = StagingFolderSetupForm
|
||||
title = _(u'Creating staging folder source')
|
||||
|
||||
#source = get_object_or_404(cls, pk=source_id)
|
||||
|
||||
if request.method == 'POST':
|
||||
form = form_class(data=request.POST)
|
||||
if form.is_valid():
|
||||
try:
|
||||
form.save()
|
||||
messages.success(request, _(u'Source created successfully'))
|
||||
return HttpResponseRedirect(reverse('setup_web_form_list'))
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error creating source; %s') % e)
|
||||
else:
|
||||
form = form_class()
|
||||
|
||||
return render_to_response('generic_form.html', {
|
||||
'title': title,
|
||||
'form': form,
|
||||
#'object_name': _(u'source'),
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
Reference in New Issue
Block a user