Finished document source setup views

This commit is contained in:
Roberto Rosario
2011-07-06 16:38:15 -04:00
parent 0afa35b256
commit 0b4df31726
6 changed files with 195 additions and 7 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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