diff --git a/mayan/apps/documents/api_views.py b/mayan/apps/documents/api_views.py index 7f0d6d0d46..87c4c9bd3d 100644 --- a/mayan/apps/documents/api_views.py +++ b/mayan/apps/documents/api_views.py @@ -37,7 +37,10 @@ from .serializers import ( DocumentVersionPageSerializer ) from .settings import settings_document_page_image_cache_time -from .tasks import task_generate_document_page_image +from .tasks import ( + task_generate_document_page_image, + task_generate_document_version_page_image +) logger = logging.getLogger(__name__) @@ -169,11 +172,6 @@ class APIDocumentPageImageView(generics.RetrieveAPIView): ) return document - #def get_document_version(self): - # return get_object_or_404( - # self.get_document().versions.all(), pk=self.kwargs['version_pk'] - # ) - def get_queryset(self): return self.get_document().pages_all.all() @@ -248,7 +246,7 @@ class APIDocumentVersionPageImageView(generics.RetrieveAPIView): ) def get_queryset(self): - return self.get_document_version().pages_all.all() + return self.get_document_version().pages.all() def get_serializer(self, *args, **kwargs): return None @@ -334,11 +332,6 @@ class APIDocumentPageView(generics.RetrieveUpdateAPIView): ) return document - #def get_document_version(self): - # return get_object_or_404( - # self.get_document().versions.all(), pk=self.kwargs['version_pk'] - # ) - def get_queryset(self): return self.get_document().pages.all() @@ -544,7 +537,7 @@ class APIRecentDocumentListView(generics.ListAPIView): class APIDocumentVersionPageListView(generics.ListAPIView): - serializer_class = DocumentPageSerializer + serializer_class = DocumentVersionPageSerializer def get_document(self): document = get_object_or_404(Document, pk=self.kwargs['pk']) diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index 738395c805..95136a2a00 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -120,7 +120,7 @@ class DocumentsApp(MayanAppConfig): DeletedDocument = self.get_model(model_name='DeletedDocument') Document = self.get_model(model_name='Document') - DocumentPage = self.get_model(model_name='DocumentVersionPage') + DocumentPage = self.get_model(model_name='DocumentPage') DocumentPageResult = self.get_model(model_name='DocumentVersionPageResult') DocumentType = self.get_model(model_name='DocumentType') DocumentTypeFilename = self.get_model(model_name='DocumentTypeFilename') diff --git a/mayan/apps/documents/managers.py b/mayan/apps/documents/managers.py index 7ec57862ef..28236f109c 100644 --- a/mayan/apps/documents/managers.py +++ b/mayan/apps/documents/managers.py @@ -136,11 +136,6 @@ class DocumentVersionPageManager(models.Manager): return self.get(document_version__pk=document_version.pk, page_number=page_number) - def get_queryset(self): - return models.QuerySet( - model=self.model, using=self._db - ).filter(enabled=True) - class DuplicatedDocumentManager(models.Manager): def clean_empty_duplicate_lists(self): diff --git a/mayan/apps/documents/models/document_models.py b/mayan/apps/documents/models/document_models.py index 651254166c..0843ea0056 100644 --- a/mayan/apps/documents/models/document_models.py +++ b/mayan/apps/documents/models/document_models.py @@ -146,9 +146,9 @@ class Document(models.Model): ) def get_api_image_url(self, *args, **kwargs): - latest_version = self.latest_version - if latest_version: - return latest_version.get_api_image_url(*args, **kwargs) + first_page = self.pages.first() + if first_page: + return first_page.get_api_image_url(*args, **kwargs) @property def is_in_trash(self): @@ -179,6 +179,30 @@ class Document(models.Model): """ return self.latest_version.open(*args, **kwargs) + @property + def page_count(self): + return self.pages.count() + + @property + def pages(self): + return self.pages.all() + #try: + # return self.latest_version.pages + #except AttributeError: + # # Document has no version yet + # DocumentPage = apps.get_model( + # app_label='documents', model_name='DocumentVersionPage' + # ) + + # return DocumentPage.objects.none() + + @property + def pages_all(self): + DocumentPage = apps.get_model( + app_label='documents', model_name='DocumentPage' + ) + return DocumentPage.passthrough.filter(document=self) + def reset_pages(self): with transaction.atomic(): for page in self.pages.all(): @@ -261,34 +285,3 @@ class Document(models.Model): @property def latest_version(self): return self.versions.order_by('timestamp').last() - - @property - def page_count(self): - return self.pages.count() - #return self.latest_version.page_count - - @property - def pages_all(self): - return self.pages.all() - #try: - # return self.latest_version.pages_all - #except AttributeError: - # # Document has no version yet - # DocumentPage = apps.get_model( - # app_label='documents', model_name='DocumentPage' - # ) - - # return DocumentPage.objects.none() - - @property - def pages(self): - return self.pages.all() - #try: - # return self.latest_version.pages - #except AttributeError: - # # Document has no version yet - # DocumentPage = apps.get_model( - # app_label='documents', model_name='DocumentVersionPage' - # ) - - # return DocumentPage.objects.none() diff --git a/mayan/apps/documents/models/document_page_models.py b/mayan/apps/documents/models/document_page_models.py index 87cac77f7a..1a7747f35f 100644 --- a/mayan/apps/documents/models/document_page_models.py +++ b/mayan/apps/documents/models/document_page_models.py @@ -89,10 +89,6 @@ class DocumentPage(models.Model): # page_number=self.page_number # ) - #@property - #def document(self): - # return self.document_version.document - def generate_image(self, user=None, **kwargs): transformation_list = self.get_combined_transformation_list(user=user, **kwargs) combined_cache_filename = BaseTransformation.combine(transformation_list) @@ -138,9 +134,7 @@ class DocumentPage(models.Model): final_url.args = kwargs final_url.path = reverse( viewname='rest_api:documentpage-image', kwargs={ - 'pk': self.document.pk, - #'version_pk': self.document_version.pk, - 'page_pk': self.pk + 'pk': self.document.pk, 'page_pk': self.pk } ) final_url.args['_hash'] = transformations_hash @@ -229,17 +223,23 @@ class DocumentPage(models.Model): try: #with self.document_version.get_intermediate_file() as file_object: #Render or get cached document version page + + #self.content_object.generate_image() self.content_object.get_image() cache_filename = 'base_image' cache_file = self.content_object.cache_partition.get_file(filename=cache_filename) + with cache_file.open() as file_object: converter = get_converter_class()( file_object=file_object ) - converter.seek_page(page_number=self.page_number - 1) + converter.seek_page(page_number=0) + #self.page_number - 1) page_image = converter.get_page() + cache_filename = 'document_page' + # Since open "wb+" doesn't create files, create it explicitly with self.cache_partition.create_file(filename=cache_filename) as file_object: file_object.write(page_image.getvalue()) diff --git a/mayan/apps/documents/models/document_version_models.py b/mayan/apps/documents/models/document_version_models.py index 7a398fecb1..b8cb7bd533 100644 --- a/mayan/apps/documents/models/document_version_models.py +++ b/mayan/apps/documents/models/document_version_models.py @@ -246,17 +246,6 @@ class DocumentVersion(models.Model): return result - #@property - #def pages_all(self): - # DocumentPage = apps.get_model( - # app_label='documents', model_name='DocumentVersionPage' - # ) - # return DocumentPage.passthrough.filter(document_version=self) - - #@property - #def pages(self): - # return self.pages.all() - @property def page_count(self): """ diff --git a/mayan/apps/documents/views/document_page_views.py b/mayan/apps/documents/views/document_page_views.py index 614cba4585..ba425f2252 100644 --- a/mayan/apps/documents/views/document_page_views.py +++ b/mayan/apps/documents/views/document_page_views.py @@ -21,7 +21,7 @@ from mayan.apps.converter.literals import DEFAULT_ROTATION, DEFAULT_ZOOM_LEVEL from ..forms import DocumentPageForm from ..icons import icon_document_pages from ..links import link_document_update_page_count -from ..models import Document, DocumentVersionPage +from ..models import Document, DocumentPage, DocumentVersionPage from ..permissions import permission_document_edit, permission_document_view from ..settings import ( setting_rotation_step, setting_zoom_percent_step, setting_zoom_max_level, @@ -69,7 +69,7 @@ class DocumentPageListView(ExternalObjectMixin, SingleObjectListView): class DocumentPageNavigationBase(ExternalObjectMixin, RedirectView): - external_object_class = DocumentVersionPage + external_object_class = DocumentPage external_object_permission = permission_document_view external_object_pk_url_kwarg = 'pk' @@ -164,7 +164,7 @@ class DocumentPageNavigationPrevious(DocumentPageNavigationBase): class DocumentPageView(ExternalObjectMixin, SimpleView): - external_object_class = DocumentVersionPage + external_object_class = DocumentPage external_object_permission = permission_document_view external_object_pk_url_kwarg = 'pk' template_name = 'appearance/generic_form.html' @@ -204,7 +204,7 @@ class DocumentPageViewResetView(RedirectView): class DocumentPageInteractiveTransformation(ExternalObjectMixin, RedirectView): - external_object_class = DocumentVersionPage + external_object_class = DocumentPage external_object_permission = permission_document_view external_object_pk_url_kwarg = 'pk' @@ -289,7 +289,7 @@ class DocumentPageDisable(MultipleObjectConfirmActionView): return result def get_source_queryset(self): - return DocumentVersionPage.passthrough.all() + return DocumentPage.passthrough.all() def object_action(self, form, instance): instance.enabled = False @@ -319,7 +319,7 @@ class DocumentPageEnable(MultipleObjectConfirmActionView): return result def get_source_queryset(self): - return DocumentVersionPage.passthrough.all() + return DocumentPage.passthrough.all() def object_action(self, form, instance): instance.enabled = True diff --git a/mayan/apps/redactions/apps.py b/mayan/apps/redactions/apps.py index 732262545f..a7460b817d 100644 --- a/mayan/apps/redactions/apps.py +++ b/mayan/apps/redactions/apps.py @@ -28,7 +28,7 @@ class RedactionsApp(MayanAppConfig): super(RedactionsApp, self).ready() DocumentPage = apps.get_model( - app_label='documents', model_name='DocumentVersionPage' + app_label='documents', model_name='DocumentPage' ) link_redaction_list = link_transformation_list.copy(