diff --git a/apps/documents/conf/settings.py b/apps/documents/conf/settings.py index 1abd6200bd..9c91c9b03d 100644 --- a/apps/documents/conf/settings.py +++ b/apps/documents/conf/settings.py @@ -1,14 +1,11 @@ import datetime import hashlib import uuid -import tempfile from django.conf import settings from django.contrib.auth.models import User from django.utils.translation import ugettext_lazy as _ -from converter.api import get_page_count - from storage.backends.filebasedstorage import FileBasedStorage default_available_functions = { @@ -40,7 +37,6 @@ UNCOMPRESS_COMPRESSED_STAGING_FILES = getattr(settings, 'DOCUMENTS_UNCOMPRESS_CO # Saving CHECKSUM_FUNCTION = getattr(settings, 'DOCUMENTS_CHECKSUM_FUNCTION', lambda x: hashlib.sha256(x).hexdigest()) UUID_FUNCTION = getattr(settings, 'DOCUMENTS_UUID_FUNCTION', lambda:unicode(uuid.uuid4())) -PAGE_COUNT_FUNCTION = getattr(settings, 'DOCUMENTS_PAGE_COUNT_FUNCTION', lambda x: get_page_count(x.save_to_file(tempfile.mkstemp()[1]))) # Storage STORAGE_BACKEND = getattr(settings, 'DOCUMENTS_STORAGE_BACKEND', FileBasedStorage) diff --git a/apps/documents/models.py b/apps/documents/models.py index bdd3ff3280..e012c78633 100644 --- a/apps/documents/models.py +++ b/apps/documents/models.py @@ -1,20 +1,22 @@ import os from datetime import datetime import sys -from python_magic import magic +import tempfile from django.conf import settings from django.db import models from django.utils.translation import ugettext_lazy as _ from django.db.models import Q +from python_magic import magic + from dynamic_search.api import register +from converter.api import get_page_count from documents.conf.settings import AVAILABLE_FUNCTIONS from documents.conf.settings import AVAILABLE_MODELS from documents.conf.settings import CHECKSUM_FUNCTION from documents.conf.settings import UUID_FUNCTION -from documents.conf.settings import PAGE_COUNT_FUNCTION from documents.conf.settings import STORAGE_BACKEND from documents.conf.settings import AVAILABLE_TRANSFORMATIONS from documents.conf.settings import DEFAULT_TRANSFORMATIONS @@ -118,12 +120,22 @@ class Document(models.Model): if save: self.save() - + def update_page_count(self, save=True): - total_pages = PAGE_COUNT_FUNCTION(self) + handle, filepath = tempfile.mkstemp() + self.save_to_file(filepath) + total_pages = get_page_count(filepath) + for page_number in range(total_pages): document_page, created = DocumentPage.objects.get_or_create( document=self, page_number=page_number+1) + + os.close(handle) + try: + os.remove(filepath) + except OSError: + pass + if save: self.save()