Add the options --metadata and --document_type to the bulk uploader
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import os
|
||||
import os, sys
|
||||
from optparse import make_option
|
||||
|
||||
from django.core.management.base import BaseCommand, CommandError, LabelCommand
|
||||
from django.utils.simplejson import loads, dumps
|
||||
|
||||
from metadata.api import convert_dict_to_dict_list
|
||||
from documents.models import DocumentType
|
||||
|
||||
from ...models import OutOfProcess
|
||||
from ...compressed_file import CompressedFile, NotACompressedFile
|
||||
@@ -16,20 +20,48 @@ class Command(LabelCommand):
|
||||
make_option('--noinput', action='store_false', dest='interactive',
|
||||
default=True, help='Do not ask the user for confirmation before '
|
||||
'starting.'),
|
||||
#make_option('--metadata', action='store', dest='metadata',
|
||||
# help='A metadata dictionary to apply to the documents.'),
|
||||
make_option('--metadata', action='store', dest='metadata',
|
||||
help='A metadata dictionary list to apply to the documents.'),
|
||||
make_option('--document_type', action='store', dest='document_type_name',
|
||||
help='The document type to apply to the uploaded documents.'),
|
||||
)
|
||||
|
||||
def handle_label(self, label, **options):
|
||||
if not os.access(label, os.R_OK):
|
||||
raise CommandError("File '%s' is not readable." % label)
|
||||
|
||||
if options['metadata']:
|
||||
try:
|
||||
metadata_dict = loads(options['metadata'])
|
||||
metadata_dict_list = convert_dict_to_dict_list(metadata_dict)
|
||||
except Exception, e:
|
||||
sys.exit('Metadata error: %s' % e)
|
||||
else:
|
||||
metadata_dict_list = None
|
||||
|
||||
if options['document_type_name']:
|
||||
try:
|
||||
document_type = DocumentType.objects.get(name=options['document_type_name'])
|
||||
except DocumentType.DoesNotExist:
|
||||
sys.exit('Unknown document type')
|
||||
else:
|
||||
document_type = None
|
||||
|
||||
if _confirm(options['interactive']) == 'yes':
|
||||
print 'Beginning upload...'
|
||||
fd = open(label)
|
||||
if metadata_dict_list:
|
||||
print 'Using the metadata values:'
|
||||
for key, value in metadata_dict.items():
|
||||
print '%s: %s' % (key, value)
|
||||
|
||||
if document_type:
|
||||
print 'Uploaded document will be of type: %s' % options['document_type_name']
|
||||
|
||||
source = OutOfProcess()
|
||||
fd = open(label)
|
||||
try:
|
||||
result = source.upload_file(fd, filename=None, use_file_name=False, document_type=None, expand=True, metadata_dict_list=None, user=None, document=None, new_version_data=None, verbose=True)
|
||||
result = source.upload_file(fd, filename=None, use_file_name=False, document_type=document_type, expand=True, metadata_dict_list=metadata_dict_list, user=None, document=None, new_version_data=None, verbose=True)
|
||||
pass
|
||||
except NotACompressedFile:
|
||||
print '%s is not a compressed file.'
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user