Moved 3 functions from views.py to utils.py
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
import os
|
||||
import tempfile
|
||||
from urllib import unquote_plus
|
||||
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
|
||||
from documents import TEMPORARY_DIRECTORY
|
||||
|
||||
|
||||
from models import DocumentMetadata, MetadataType
|
||||
|
||||
#http://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python
|
||||
def copyfile(source, dest, buffer_size=1024*1024):
|
||||
"""
|
||||
@@ -59,3 +64,39 @@ def from_descriptor_to_new_tempfile(input_descriptor, buffer_size=1024*1024):
|
||||
input_descriptor.close()
|
||||
os.close(output_descriptor)
|
||||
return tmp_filename
|
||||
|
||||
|
||||
def decode_metadata_from_url(url_dict):
|
||||
metadata_dict = {
|
||||
'id':{},
|
||||
'value':{}
|
||||
}
|
||||
metadata_list = []
|
||||
#Match out of order metadata_type ids with metadata values from request
|
||||
for key, value in url_dict.items():
|
||||
if 'metadata' in key:
|
||||
index, element = key[8:].split('_')
|
||||
metadata_dict[element][index] = value
|
||||
|
||||
#Convert the nested dictionary into a list of id+values dictionaries
|
||||
for order, id in metadata_dict['id'].items():
|
||||
if order in metadata_dict['value'].keys():
|
||||
metadata_list.append({'id':id, 'value':metadata_dict['value'][order]})
|
||||
|
||||
return metadata_list
|
||||
|
||||
|
||||
def save_metadata_list(metadata_list, document):
|
||||
for item in metadata_list:
|
||||
save_metadata(item, document)
|
||||
|
||||
|
||||
def save_metadata(metadata_dict, document):
|
||||
#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']),
|
||||
)
|
||||
#Handle 'plus sign as space' in the url
|
||||
document_metadata.value=unquote_plus(metadata_dict['value'])
|
||||
document_metadata.save()
|
||||
|
||||
Reference in New Issue
Block a user