Initial commit of new document upload workflow which allows for document promises to be returned after POST request, gh-issue #194. Add new signal when a document is uploaded and finally ready, gh-issue #193 and gh-issue #213.

This commit is contained in:
Roberto Rosario
2015-07-05 03:33:27 -04:00
parent 8f30932b6f
commit 8cc05bbefb
14 changed files with 204 additions and 110 deletions
-35
View File
@@ -4,8 +4,6 @@ import logging
from django.db import models, transaction
from common.compressed_files import CompressedFile, NotACompressedFile
from .settings import setting_recent_count, setting_language
logger = logging.getLogger(__name__)
@@ -44,39 +42,6 @@ class DocumentManager(models.Manager):
for document in self.model.objects.all():
document.invalidate_cache()
@transaction.atomic
def new_document(self, document_type, file_object, label=None, command_line=False, description=None, expand=False, language=None, user=None):
versions_created = []
if expand:
try:
compressed_file = CompressedFile(file_object)
count = 1
for compressed_file_child in compressed_file.children():
if command_line:
print 'Uploading file #%d: %s' % (count, compressed_file_child)
versions_created.append(self.upload_single_document(document_type=document_type, file_object=compressed_file_child, description=description, label=unicode(compressed_file_child), language=language or setting_language.value, user=user))
compressed_file_child.close()
count += 1
except NotACompressedFile:
logging.debug('Exception: NotACompressedFile')
if command_line:
raise
versions_created.append(self.upload_single_document(document_type=document_type, file_object=file_object, description=description, label=label, language=language or setting_language.value, user=user))
else:
versions_created.append(self.upload_single_document(document_type=document_type, file_object=file_object, description=description, label=label, language=language or setting_language.value, user=user))
return versions_created
@transaction.atomic
def upload_single_document(self, document_type, file_object, label=None, description=None, language=None, user=None):
document = self.model(description=description, document_type=document_type, language=language, label=label or unicode(file_object))
document.save(user=user)
version = document.new_version(file_object=file_object, user=user)
document.set_document_type(document_type, force=True)
return version
class PassthroughManager(models.Manager):
pass