diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index d5bd566dac..3eeb6e6515 100755 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -17,12 +17,13 @@ document_create_sibling = {'text':_('upload using same metadata'), 'view':'docum 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'} +document_edit_metadata = {'text':_('edit metadata'), 'view':'document_edit_metadata', 'args':'object.id', 'famfam':'page_edit'} document_preview = {'text':_('preview'), 'class':'fancybox', 'view':'document_preview', 'args':'object.id', 'famfam':'magnifier'} document_download = {'text':_('download'), 'view':'document_download', 'args':'object.id', 'famfam':'page_save'} 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_edit, document_edit_metadata, document_delete, document_preview, document_download]) 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') diff --git a/apps/documents/models.py b/apps/documents/models.py index 92e061ae1b..2a260ecaf0 100755 --- a/apps/documents/models.py +++ b/apps/documents/models.py @@ -209,7 +209,7 @@ available_functions_string = (_(u' Available functions: %s') % ','.join(['%s()' available_models_string = (_(u' Available models: %s') % ','.join([name for name, model in AVAILABLE_MODELS.items()])) if AVAILABLE_MODELS else '' class MetadataType(models.Model): - name = models.CharField(max_length=48, verbose_name=_(u'name')) + name = models.CharField(max_length=48, verbose_name=_(u'name'), help_text=_(u'Do not use python reserved words.')) title = models.CharField(max_length=48, verbose_name=_(u'title'), blank=True, null=True) default = models.CharField(max_length=128, blank=True, null=True, verbose_name=_(u'default'), diff --git a/apps/documents/urls.py b/apps/documents/urls.py index 2915bc46a5..64a82f9990 100755 --- a/apps/documents/urls.py +++ b/apps/documents/urls.py @@ -12,6 +12,7 @@ urlpatterns = patterns('documents.views', url(r'^document/(?P\d+)/$', 'document_view', (), 'document_view'), url(r'^document/(?P\d+)/delete/$', 'document_delete', (), 'document_delete'), url(r'^document/(?P\d+)/edit/$', 'document_edit', (), 'document_edit'), + url(r'^document/(?P\d+)/edit/metadata/$', 'document_edit_metadata', (), 'document_edit_metadata'), 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'), diff --git a/apps/documents/views.py b/apps/documents/views.py index 7a4458574c..b966bbb41c 100755 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -23,7 +23,7 @@ from utils import from_descriptor_to_tempfile from models import Document, DocumentMetadata, DocumentType, MetadataType from forms import DocumentTypeSelectForm, DocumentCreateWizard, \ MetadataForm, DocumentForm, DocumentForm_edit, DocumentForm_view, \ - StagingDocumentForm + StagingDocumentForm, DocumentTypeMetadataType from staging import StagingFile @@ -296,6 +296,51 @@ def document_edit(request, document_id): }, context_instance=RequestContext(request)) +def document_edit_metadata(request, document_id): + document = get_object_or_404(Document, pk=document_id) + MetadataFormSet = formset_factory(MetadataForm, extra=0) + + initial=[] + for item in DocumentTypeMetadataType.objects.filter(document_type=document.document_type): + initial.append({ + 'metadata_type':item.metadata_type, + 'document_type':document.document_type, + 'metadata_options':item, + }) + formset = MetadataFormSet(initial=initial) + if request.method == 'POST': + formset = MetadataFormSet(request.POST) + if formset.is_valid(): + for item in formset.cleaned_data: + pass + #print item + #_save_metadata(request.GET, document) + try: + document.delete_fs_links() + except Exception, e: + messages.error(request, e) + return HttpResponseRedirect(reverse('document_list')) + + messages.success(request, _(u'Document metadata edited successfully.')) + + try: + document.create_fs_links() + messages.success(request, _(u'Document filesystem links updated successfully.')) + except Exception, e: + messages.error(request, e) + return HttpResponseRedirect(reverse('document_list')) + + return HttpResponseRedirect(reverse('document_list')) + + + return render_to_response('generic_form.html', { + 'form_display_mode_table':True, + 'form':formset, + 'object':document, + + }, context_instance=RequestContext(request)) + + def get_document_image(request, document_id, size=PREVIEW_SIZE): document = get_object_or_404(Document, pk=document_id)