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 documents import document_type_views
|
||||||
from metadata import setup_metadata_type_list, metadata_type_setup_views
|
from metadata import setup_metadata_type_list, metadata_type_setup_views
|
||||||
from metadata import setup_metadata_set_list, metadata_set_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 SIDE_BAR_SEARCH
|
||||||
from main.conf.settings import DISABLE_HOME_VIEW
|
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('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=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_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')
|
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(['setting_list'], setup_links, menu_name='secondary_menu')
|
||||||
register_links(permission_views, 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(user_management_views, setup_links, menu_name='secondary_menu')
|
||||||
register_links(document_type_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_type_setup_views, setup_links, menu_name='secondary_menu')
|
||||||
register_links(metadata_set_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():
|
def get_version():
|
||||||
|
|||||||
@@ -5,8 +5,33 @@ from navigation.api import register_links, \
|
|||||||
register_sidebar_template
|
register_sidebar_template
|
||||||
|
|
||||||
from sources.staging import StagingFile
|
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_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'}
|
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(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 documents.forms import DocumentForm
|
||||||
|
|
||||||
|
from sources.models import WebForm, StagingFolder
|
||||||
|
|
||||||
|
|
||||||
class StagingDocumentForm(DocumentForm):
|
class StagingDocumentForm(DocumentForm):
|
||||||
"""
|
"""
|
||||||
@@ -48,3 +50,13 @@ class WebFormForm(DocumentForm):
|
|||||||
label=_(u'Expand compressed files'), required=False,
|
label=_(u'Expand compressed files'), required=False,
|
||||||
help_text=ugettext(u'Upload a compressed file\'s contained files as individual documents')
|
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'))
|
document_type = models.ForeignKey(DocumentType, blank=True, null=True, verbose_name=_(u'document type'))
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return u'%s (%s)' % (self.title, dict(SOURCE_CHOICES).get(self.source_type))
|
return u'%s' % self.title
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('title',)
|
ordering = ('title',)
|
||||||
@@ -72,7 +72,7 @@ class InteractiveBaseModel(BaseModel):
|
|||||||
self.icon = self.default_icon
|
self.icon = self.default_icon
|
||||||
super(BaseModel, self).save(*args, **kwargs)
|
super(BaseModel, self).save(*args, **kwargs)
|
||||||
|
|
||||||
class Meta:
|
class Meta(BaseModel.Meta):
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ class StagingFolder(InteractiveBaseModel):
|
|||||||
|
|
||||||
return u'x'.join(dimensions)
|
return u'x'.join(dimensions)
|
||||||
|
|
||||||
class Meta:
|
class Meta(InteractiveBaseModel.Meta):
|
||||||
verbose_name = _(u'staging folder')
|
verbose_name = _(u'staging folder')
|
||||||
verbose_name_plural = _(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'))
|
uncompress = models.CharField(max_length=1, choices=SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, verbose_name=_(u'uncompress'))
|
||||||
#Default path
|
#Default path
|
||||||
|
|
||||||
class Meta:
|
class Meta(InteractiveBaseModel.Meta):
|
||||||
verbose_name = _(u'web form')
|
verbose_name = _(u'web form')
|
||||||
verbose_name_plural = _(u'web forms')
|
verbose_name_plural = _(u'web forms')
|
||||||
|
|||||||
@@ -1,9 +1,24 @@
|
|||||||
from django.conf.urls.defaults import patterns, url
|
from django.conf.urls.defaults import patterns, url
|
||||||
|
|
||||||
|
from sources.models import SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_STAGING
|
||||||
|
|
||||||
urlpatterns = patterns('sources.views',
|
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+)/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'^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/(?P<source_type>\w+)/(?P<source_id>\d+)/$', 'upload_interactive', (), 'upload_interactive'),
|
||||||
url(r'^upload/interactive/$', '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
|
SOURCE_UNCOMPRESS_CHOICE_ASK
|
||||||
from sources.staging import create_staging_file_class
|
from sources.staging import create_staging_file_class
|
||||||
from sources.forms import StagingDocumentForm, WebFormForm
|
from sources.forms import StagingDocumentForm, WebFormForm
|
||||||
|
from sources.forms import WebFormSetupForm, StagingFolderSetupForm
|
||||||
|
|
||||||
|
|
||||||
def return_function(obj):
|
def return_function(obj):
|
||||||
return lambda context: context['source'].source_type == obj.source_type and context['source'].pk == obj.pk
|
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': {
|
'context': {
|
||||||
'title': _(u'Upload sources'),
|
'title': _(u'Upload sources'),
|
||||||
'paragraphs': [
|
'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
|
# TODO: Add link to setup
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@@ -309,3 +311,135 @@ def staging_file_delete(request, source_type, source_id, staging_file_id):
|
|||||||
'previous': previous,
|
'previous': previous,
|
||||||
'form_icon': u'delete.png',
|
'form_icon': u'delete.png',
|
||||||
}, context_instance=RequestContext(request))
|
}, 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