diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index 6ed79ffa1b..d5bd566dac 100755 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -13,6 +13,7 @@ from documents.conf import settings as documents_settings document_list = {'text':_(u'documents list'), 'view':'document_list', 'famfam':'page'} document_create = {'text':_('upload a document'), 'view':'document_create', 'famfam':'page_add'} document_create_multiple = {'text':_('upload multiple documents'), 'view':'document_create_multiple', 'famfam':'page_add'} +document_create_sibling = {'text':_('upload using same metadata'), 'view':'document_create_sibling', 'args':'object.id', 'famfam':'page_copy'} document_view = {'text':_('details'), 'view':'document_view', 'args':'object.id', 'famfam':'page'} document_delete = {'text':_('delete'), 'view':'document_delete', 'args':'object.id', 'famfam':'page_delete'} document_edit = {'text':_('edit'), 'view':'document_edit', 'args':'object.id', 'famfam':'page_edit'} @@ -22,7 +23,7 @@ document_download = {'text':_('download'), 'view':'document_download', 'args':'o staging_file_preview = {'text':_('preview'), 'class':'fancybox', 'view':'staging_file_preview', 'args':'object.id', 'famfam':'drive_magnify'} register_links(Document, [document_edit, document_delete, document_preview, document_download]) -register_links(Document, [document_list, document_create, document_create_multiple, document_view], menu_name='sidebar') +register_links(Document, [document_list, document_create, document_create_multiple, document_create_sibling, document_view], menu_name='sidebar') register_links(['document_list', 'document_create', 'document_create_multiple', 'upload_document_with_type', 'upload_multiple_documents_with_type'], [document_list, document_create, document_create_multiple], menu_name='sidebar') register_links(StagingFile, [staging_file_preview]) diff --git a/apps/documents/urls.py b/apps/documents/urls.py index 9b21f175fa..2915bc46a5 100755 --- a/apps/documents/urls.py +++ b/apps/documents/urls.py @@ -15,6 +15,7 @@ urlpatterns = patterns('documents.views', url(r'^document/(?P\d+)/preview/$', 'document_preview', (), 'document_preview'), url(r'^document/(?P\d+)/thumbnail/$', 'document_thumbnail', (), 'document_thumbnail'), url(r'^document/(?P\d+)/download/$', 'document_download', (), 'document_download'), + url(r'^document/(?P\d+)/create/siblings/$', 'document_create_sibling', {'multiple':True}, 'document_create_sibling'), url(r'^staging_file/(?P\w+)/preview/$', 'staging_file_preview', (), 'staging_file_preview'), diff --git a/apps/documents/views.py b/apps/documents/views.py index 7969fdb6cd..7a4458574c 100755 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -11,6 +11,7 @@ from django.views.generic.create_update import create_object, delete_object, upd from django.forms.formsets import formset_factory from django.core.files.base import File from django.conf import settings +from django.utils.http import urlencode from filetransfers.api import serve_file @@ -55,7 +56,23 @@ def document_create(request, multiple=True): wizard = DocumentCreateWizard(form_list=[DocumentTypeSelectForm, MetadataFormSet], multiple=multiple) return wizard(request) - +def document_create_sibling(request, document_id, multiple=True): + document = get_object_or_404(Document, pk=document_id) + urldata = [] + for id, metadata in enumerate(document.documentmetadata_set.all()): + if hasattr(metadata, 'value'): + urldata.append(('metadata%s_id' % id,metadata.id)) + urldata.append(('metadata%s_value' % id,metadata.value)) + + if multiple: + view = 'upload_multiple_documents_with_type' + else: + view = 'upload_document_with_type' + + url = reverse(view, args=[document.document_type.id]) + return HttpResponseRedirect('%s?%s' % (url, urlencode(urldata))) + + def _save_metadata(url_dict, document): metadata_dict = { 'id':{},