diff --git a/apps/sources/__init__.py b/apps/sources/__init__.py index 77cb2a0a63..84f7bf307e 100644 --- a/apps/sources/__init__.py +++ b/apps/sources/__init__.py @@ -5,33 +5,41 @@ from navigation.api import register_links, \ register_sidebar_template from sources.staging import StagingFile -from sources.models import WebForm, StagingFolder +from sources.models import WebForm, StagingFolder, SourceTransformation 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', 'keep_query': True} -setup_web_form_list = {'text': _(u'web forms'), 'view': 'setup_web_form_list', 'famfam': 'application_form', 'children_url_regex': [r'sources/setup/interactive/webforms']} -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_list = {'text': _(u'web forms'), 'view': 'setup_web_form_list', 'famfam': 'application_form', 'children_url_regex': [r'sources/setup/interactive/webforms'], 'children_classes': [WebForm]} +setup_web_form_edit = {'text': _(u'edit'), 'view': 'setup_web_form_edit', 'args': 'source.pk', 'famfam': 'application_form_edit'} +setup_web_form_delete = {'text': _(u'delete'), 'view': 'setup_web_form_delete', 'args': 'source.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', 'children_url_regex': [r'sources/setup/interactive/staging_folder']} -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_web_form_transformation_list = {'text': _(u'transformations'), 'view': 'setup_web_form_transformation_list', 'args': 'source.pk', 'famfam': 'shape_move_front'} + +setup_staging_folder_list = {'text': _(u'staging folders'), 'view': 'setup_staging_folder_list', 'famfam': 'folder_magnify', 'children_classes': [StagingFolder], 'children_url_regex': [r'sources/setup/interactive/staging_folder']}, +setup_staging_folder_edit = {'text': _(u'edit'), 'view': 'setup_staging_folder_edit', 'args': 'source.pk', 'famfam': 'folder_edit'} +setup_staging_folder_delete = {'text': _(u'delete'), 'view': 'setup_staging_folder_delete', 'args': 'source.pk', 'famfam': 'folder_delete'} setup_staging_folder_create = {'text': _(u'add new'), 'view': 'setup_staging_folder_create', 'famfam': 'folder_add'} +setup_staging_folder_transformation_list = {'text': _(u'transformations'), 'view': 'setup_staging_folder_transformation_list', 'args': 'source.pk', 'famfam': 'shape_move_front'} + +setup_source_transformation_edit = {'text': _(u'edit'), 'view': 'setup_source_transformation_edit', 'args': 'transformation.pk', 'famfam': 'shape_square_edit'}#, 'children_url_regex': [r'sources/setup/interactive/staging_folder']} + source_list = {'text': _(u'Document sources'), 'view': 'setup_web_form_list', 'famfam': 'page_add', 'children_url_regex': [r'sources/setup']} register_links(StagingFile, [staging_file_preview, staging_file_delete]) +register_links(SourceTransformation, [setup_source_transformation_edit]) + 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(WebForm, [setup_web_form_transformation_list, 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(StagingFolder, [setup_staging_folder_transformation_list, 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'] +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', 'setup_web_form_transformation_list'] diff --git a/apps/sources/forms.py b/apps/sources/forms.py index 6da2d7853f..d4eb81d1c0 100644 --- a/apps/sources/forms.py +++ b/apps/sources/forms.py @@ -91,6 +91,7 @@ class SourceTransformationForm(forms.ModelForm): class Meta: model = SourceTransformation - #def __init__(self, *args, **kwargs): - # super(SourceTransformationForm, self).__init__(*args, **kwargs) - # self.fields['document_page'].widget = forms.HiddenInput() + def __init__(self, *args, **kwargs): + super(SourceTransformationForm, self).__init__(*args, **kwargs) + self.fields['content_type'].widget = forms.HiddenInput() + self.fields['object_id'].widget = forms.HiddenInput() diff --git a/apps/sources/urls.py b/apps/sources/urls.py index f8a9794684..a21b1c4ad9 100644 --- a/apps/sources/urls.py +++ b/apps/sources/urls.py @@ -21,5 +21,7 @@ urlpatterns = patterns('sources.views', url(r'^setup/interactive/staging_folder/(?P\w+)/edit/$', 'setup_source_edit', {'source_type': SOURCE_CHOICE_STAGING}, 'setup_staging_folder_edit'), url(r'^setup/interactive/staging_folder/(?P\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'), + url(r'^setup/interactive/staging_folder/(?P\w+)/transformation/list/$', 'setup_source_transformation_list', {'source_type': SOURCE_CHOICE_STAGING}, 'setup_staging_folder_transformation_list'), + url(r'^setup/interactive/source/transformation/(?P\w+)/edit/$', 'setup_source_transformation_edit', (), 'setup_source_transformation_edit'), ) diff --git a/apps/sources/views.py b/apps/sources/views.py index a2cf68b0d6..114e29d9a5 100644 --- a/apps/sources/views.py +++ b/apps/sources/views.py @@ -348,6 +348,7 @@ def setup_source_list(request, source_type): 'object_list': cls.objects.all(), 'title': title, 'hide_link': True, + 'list_object_variable_name': 'source' } return render_to_response('generic_list.html', context, @@ -384,7 +385,8 @@ def setup_source_edit(request, source_type, source_id): return render_to_response('generic_form.html', { 'title': title % source, 'form': form, - 'object': source, + 'source': source, + 'navigation_object_name': 'source', 'next': next, 'object_name': _(u'source'), }, @@ -419,8 +421,9 @@ def setup_source_delete(request, source_type, source_id): context = { 'title': title % source, - 'object': source, + 'source': source, 'object_name': _(u'source'), + 'navigation_object_name': 'source', 'delete_view': True, 'previous': reverse(redirect_view), 'form_icon': form_icon, @@ -478,8 +481,11 @@ def setup_source_transformation_list(request, source_type, source_id): context = { 'object_list': SourceTransformation.objects.get_for_object(source), - 'title': _(u'default transformations for: %s') % source, - 'object': source, + 'title': _(u'transformations for: %s') % source, + 'source': source, + 'object_name': _(u'source'), + 'navigation_object_name': 'source', + 'list_object_variable_name': 'transformation', 'extra_columns': [ {'name': _(u'order'), 'attribute': 'order'}, {'name': _(u'transformation'), 'attribute': lambda x: x.get_transformation_display()}, @@ -493,22 +499,38 @@ def setup_source_transformation_list(request, source_type, source_id): context_instance=RequestContext(request)) -def setup_source_transformation_edit(request, source_transformation_id): - #check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM]) +def setup_source_transformation_edit(request, transformation_id): + #check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT]) + + source_transformation = get_object_or_404(SourceTransformation, pk=transformation_id) + next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', '/'))) - source_transformation = get_object_or_404(SourceTransformation, pk=source_transformation_id) - return update_object(request, template_name='generic_form.html', - form_class=DocumentPageTransformationForm, - object_id=document_page_transformation_id, - post_save_redirect=reverse('document_page_view', args=[document_page_transformation.document_page_id]), - extra_context={ - 'object_name': _(u'transformation'), - 'title': _(u'Edit transformation "%(transformation)s" for: %(document_page)s') % { - 'transformation': document_page_transformation.get_transformation_display(), - 'document_page': document_page_transformation.document_page}, - 'web_theme_hide_menus': True, - } - ) + if request.method == 'POST': + form = SourceTransformationForm(instance=source_transformation, data=request.POST) + if form.is_valid(): + try: + form.save() + messages.success(request, _(u'Source transformation edited successfully')) + return HttpResponseRedirect(next) + except Exception, e: + messages.error(request, _(u'Error editing source transformation; %s') % e) + else: + form = SourceTransformationForm(instance=source_transformation) + + return render_to_response('generic_form.html', { + 'title': _(u'Edit transformation: %s') % source_transformation, + 'form': form, + 'source': source_transformation.content_object, + 'transformation': source_transformation, + #'navigation_object_name_list': ['source', 'transformation'], + 'navigation_object_list': [ + {'object': 'source', 'name': _(u'source')}, + {'object': 'transformation', 'name': _(u'transformation')} + ], + #'object_name_list': [_(u'source'), _(u'transformation')], + 'next': next, + }, + context_instance=RequestContext(request)) ''' def document_page_transformation_create(request, document_page_id): check_permissions(request.user, [PERMISSION_DOCUMENT_TRANSFORM])