Added new view to quickly upload a new document using another document's metadata

This commit is contained in:
Roberto Rosario
2011-02-09 16:18:44 -04:00
parent ba64dbb4e2
commit f3f763d762
3 changed files with 21 additions and 2 deletions

View File

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

View File

@@ -15,6 +15,7 @@ urlpatterns = patterns('documents.views',
url(r'^document/(?P<document_id>\d+)/preview/$', 'document_preview', (), 'document_preview'),
url(r'^document/(?P<document_id>\d+)/thumbnail/$', 'document_thumbnail', (), 'document_thumbnail'),
url(r'^document/(?P<document_id>\d+)/download/$', 'document_download', (), 'document_download'),
url(r'^document/(?P<document_id>\d+)/create/siblings/$', 'document_create_sibling', {'multiple':True}, 'document_create_sibling'),
url(r'^staging_file/(?P<staging_file_id>\w+)/preview/$', 'staging_file_preview', (), 'staging_file_preview'),

View File

@@ -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':{},