Add proper document creation API endpoint
This commit is contained in:
@@ -1,11 +1,16 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from ast import literal_eval
|
||||
import logging
|
||||
|
||||
from django.db import models, transaction
|
||||
|
||||
from common.compressed_files import CompressedFile, NotACompressedFile
|
||||
|
||||
from .settings import RECENT_COUNT
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DocumentPageTransformationManager(models.Manager):
|
||||
def get_for_document_page(self, document_page):
|
||||
@@ -54,9 +59,38 @@ class DocumentTypeManager(models.Manager):
|
||||
|
||||
|
||||
class DocumentManager(models.Manager):
|
||||
def new_document(self, document_type, file_object, label, command_line=False, description=None, expand=False, language=None, user=None):
|
||||
documents_created = []
|
||||
is_compressed = None
|
||||
|
||||
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, fp)
|
||||
documents_created.append(self.upload_single_document(document_type=document_type, file_object=compressed_file_child, description=description, label=unicode(fp), language=language, user=user))
|
||||
compressed_file_child.close()
|
||||
count += 1
|
||||
|
||||
except NotACompressedFile:
|
||||
is_compressed = False
|
||||
logging.debug('Exception: NotACompressedFile')
|
||||
if command_line:
|
||||
raise
|
||||
documents_created.append(self.upload_single_document(document_type=document_type, file_object=file_object, description=description, label=label, language=language, user=user))
|
||||
else:
|
||||
is_compressed = True
|
||||
else:
|
||||
documents_created.append(self.upload_single_document(document_type=document_type, file_object=file_object, description=description, label=label, language=language, user=user))
|
||||
|
||||
file_object.close()
|
||||
return documents_created
|
||||
|
||||
@transaction.atomic
|
||||
def new_document(self, file_object, document_type, label, user=None, description=None, language=None):
|
||||
document = self.model(document_type=document_type, label=label,
|
||||
description=description, language=language)
|
||||
def upload_single_document(self, document_type, file_object, label, description=None, language=None, user=None):
|
||||
document = self.model(description=description, document_type=document_type, language=language, label=label)
|
||||
document.save(user=user)
|
||||
return document.new_version(file=file_object, user=user)
|
||||
document.new_version(file=file_object, user=user)
|
||||
return document
|
||||
|
||||
Reference in New Issue
Block a user