diff --git a/apps/documents/views.py b/apps/documents/views.py index 1e119b81ca..c74381b2fa 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -122,7 +122,7 @@ def _handle_save_document(request, document, form=None): document.file_filename = form.cleaned_data['document_type_available_filenames'].filename document.save() - save_metadata_list(decode_metadata_from_url(request.GET), document) + save_metadata_list(decode_metadata_from_url(request.GET), document, create=True) try: warnings = document_create_fs_links(document) if request.user.is_staff or request.user.is_superuser: diff --git a/apps/metadata/api.py b/apps/metadata/api.py index 7bfe0acff0..f55a262726 100644 --- a/apps/metadata/api.py +++ b/apps/metadata/api.py @@ -32,12 +32,12 @@ def decode_metadata_from_url(url_dict): return metadata_list -def save_metadata_list(metadata_list, document): +def save_metadata_list(metadata_list, document, create=False): """ Take a list of metadata values and associate a document to it """ for item in metadata_list: - save_metadata(item, document) + save_metadata(item, document, create) #if item['value']: # save_metadata(item, document) @@ -55,24 +55,25 @@ def save_metadata_list(metadata_list, document): # pass -def save_metadata(metadata_dict, document): +def save_metadata(metadata_dict, document, create=False): """save metadata_dict""" - # Use matched metadata now to create document metadata - #document_metadata, created = DocumentMetadata.objects.get_or_create( - # document=document, - # metadata_type=get_object_or_404( - # MetadataType, - # pk=metadata_dict['id'] - # ), - #) - - document_metadata = DocumentMetadata.objects.get( - document=document, - metadata_type=get_object_or_404( - MetadataType, - pk=metadata_dict['id'] - ), - ) + if create: + # Use matched metadata now to create document metadata + document_metadata, created = DocumentMetadata.objects.get_or_create( + document=document, + metadata_type=get_object_or_404( + MetadataType, + pk=metadata_dict['id'] + ), + ) + else: + document_metadata = DocumentMetadata.objects.get( + document=document, + metadata_type=get_object_or_404( + MetadataType, + pk=metadata_dict['id'] + ), + ) # Handle 'plus sign as space' in the url