Fix document page render
Solve page_number > 1 error. Add page_all to Document model. Enable redactions. Remove unused methods. Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
@@ -37,7 +37,10 @@ from .serializers import (
|
|||||||
DocumentVersionPageSerializer
|
DocumentVersionPageSerializer
|
||||||
)
|
)
|
||||||
from .settings import settings_document_page_image_cache_time
|
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__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -169,11 +172,6 @@ class APIDocumentPageImageView(generics.RetrieveAPIView):
|
|||||||
)
|
)
|
||||||
return document
|
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):
|
def get_queryset(self):
|
||||||
return self.get_document().pages_all.all()
|
return self.get_document().pages_all.all()
|
||||||
|
|
||||||
@@ -248,7 +246,7 @@ class APIDocumentVersionPageImageView(generics.RetrieveAPIView):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def get_queryset(self):
|
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):
|
def get_serializer(self, *args, **kwargs):
|
||||||
return None
|
return None
|
||||||
@@ -334,11 +332,6 @@ class APIDocumentPageView(generics.RetrieveUpdateAPIView):
|
|||||||
)
|
)
|
||||||
return document
|
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):
|
def get_queryset(self):
|
||||||
return self.get_document().pages.all()
|
return self.get_document().pages.all()
|
||||||
|
|
||||||
@@ -544,7 +537,7 @@ class APIRecentDocumentListView(generics.ListAPIView):
|
|||||||
|
|
||||||
|
|
||||||
class APIDocumentVersionPageListView(generics.ListAPIView):
|
class APIDocumentVersionPageListView(generics.ListAPIView):
|
||||||
serializer_class = DocumentPageSerializer
|
serializer_class = DocumentVersionPageSerializer
|
||||||
|
|
||||||
def get_document(self):
|
def get_document(self):
|
||||||
document = get_object_or_404(Document, pk=self.kwargs['pk'])
|
document = get_object_or_404(Document, pk=self.kwargs['pk'])
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ class DocumentsApp(MayanAppConfig):
|
|||||||
|
|
||||||
DeletedDocument = self.get_model(model_name='DeletedDocument')
|
DeletedDocument = self.get_model(model_name='DeletedDocument')
|
||||||
Document = self.get_model(model_name='Document')
|
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')
|
DocumentPageResult = self.get_model(model_name='DocumentVersionPageResult')
|
||||||
DocumentType = self.get_model(model_name='DocumentType')
|
DocumentType = self.get_model(model_name='DocumentType')
|
||||||
DocumentTypeFilename = self.get_model(model_name='DocumentTypeFilename')
|
DocumentTypeFilename = self.get_model(model_name='DocumentTypeFilename')
|
||||||
|
|||||||
@@ -136,11 +136,6 @@ class DocumentVersionPageManager(models.Manager):
|
|||||||
|
|
||||||
return self.get(document_version__pk=document_version.pk, page_number=page_number)
|
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):
|
class DuplicatedDocumentManager(models.Manager):
|
||||||
def clean_empty_duplicate_lists(self):
|
def clean_empty_duplicate_lists(self):
|
||||||
|
|||||||
@@ -146,9 +146,9 @@ class Document(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def get_api_image_url(self, *args, **kwargs):
|
def get_api_image_url(self, *args, **kwargs):
|
||||||
latest_version = self.latest_version
|
first_page = self.pages.first()
|
||||||
if latest_version:
|
if first_page:
|
||||||
return latest_version.get_api_image_url(*args, **kwargs)
|
return first_page.get_api_image_url(*args, **kwargs)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_in_trash(self):
|
def is_in_trash(self):
|
||||||
@@ -179,6 +179,30 @@ class Document(models.Model):
|
|||||||
"""
|
"""
|
||||||
return self.latest_version.open(*args, **kwargs)
|
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):
|
def reset_pages(self):
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
for page in self.pages.all():
|
for page in self.pages.all():
|
||||||
@@ -261,34 +285,3 @@ class Document(models.Model):
|
|||||||
@property
|
@property
|
||||||
def latest_version(self):
|
def latest_version(self):
|
||||||
return self.versions.order_by('timestamp').last()
|
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()
|
|
||||||
|
|||||||
@@ -89,10 +89,6 @@ class DocumentPage(models.Model):
|
|||||||
# page_number=self.page_number
|
# page_number=self.page_number
|
||||||
# )
|
# )
|
||||||
|
|
||||||
#@property
|
|
||||||
#def document(self):
|
|
||||||
# return self.document_version.document
|
|
||||||
|
|
||||||
def generate_image(self, user=None, **kwargs):
|
def generate_image(self, user=None, **kwargs):
|
||||||
transformation_list = self.get_combined_transformation_list(user=user, **kwargs)
|
transformation_list = self.get_combined_transformation_list(user=user, **kwargs)
|
||||||
combined_cache_filename = BaseTransformation.combine(transformation_list)
|
combined_cache_filename = BaseTransformation.combine(transformation_list)
|
||||||
@@ -138,9 +134,7 @@ class DocumentPage(models.Model):
|
|||||||
final_url.args = kwargs
|
final_url.args = kwargs
|
||||||
final_url.path = reverse(
|
final_url.path = reverse(
|
||||||
viewname='rest_api:documentpage-image', kwargs={
|
viewname='rest_api:documentpage-image', kwargs={
|
||||||
'pk': self.document.pk,
|
'pk': self.document.pk, 'page_pk': self.pk
|
||||||
#'version_pk': self.document_version.pk,
|
|
||||||
'page_pk': self.pk
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
final_url.args['_hash'] = transformations_hash
|
final_url.args['_hash'] = transformations_hash
|
||||||
@@ -229,17 +223,23 @@ class DocumentPage(models.Model):
|
|||||||
try:
|
try:
|
||||||
#with self.document_version.get_intermediate_file() as file_object:
|
#with self.document_version.get_intermediate_file() as file_object:
|
||||||
#Render or get cached document version page
|
#Render or get cached document version page
|
||||||
|
|
||||||
|
#self.content_object.generate_image()
|
||||||
self.content_object.get_image()
|
self.content_object.get_image()
|
||||||
cache_filename = 'base_image'
|
cache_filename = 'base_image'
|
||||||
cache_file = self.content_object.cache_partition.get_file(filename=cache_filename)
|
cache_file = self.content_object.cache_partition.get_file(filename=cache_filename)
|
||||||
|
|
||||||
with cache_file.open() as file_object:
|
with cache_file.open() as file_object:
|
||||||
converter = get_converter_class()(
|
converter = get_converter_class()(
|
||||||
file_object=file_object
|
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()
|
page_image = converter.get_page()
|
||||||
|
|
||||||
|
cache_filename = 'document_page'
|
||||||
|
|
||||||
# Since open "wb+" doesn't create files, create it explicitly
|
# Since open "wb+" doesn't create files, create it explicitly
|
||||||
with self.cache_partition.create_file(filename=cache_filename) as file_object:
|
with self.cache_partition.create_file(filename=cache_filename) as file_object:
|
||||||
file_object.write(page_image.getvalue())
|
file_object.write(page_image.getvalue())
|
||||||
|
|||||||
@@ -246,17 +246,6 @@ class DocumentVersion(models.Model):
|
|||||||
|
|
||||||
return result
|
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
|
@property
|
||||||
def page_count(self):
|
def page_count(self):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ from mayan.apps.converter.literals import DEFAULT_ROTATION, DEFAULT_ZOOM_LEVEL
|
|||||||
from ..forms import DocumentPageForm
|
from ..forms import DocumentPageForm
|
||||||
from ..icons import icon_document_pages
|
from ..icons import icon_document_pages
|
||||||
from ..links import link_document_update_page_count
|
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 ..permissions import permission_document_edit, permission_document_view
|
||||||
from ..settings import (
|
from ..settings import (
|
||||||
setting_rotation_step, setting_zoom_percent_step, setting_zoom_max_level,
|
setting_rotation_step, setting_zoom_percent_step, setting_zoom_max_level,
|
||||||
@@ -69,7 +69,7 @@ class DocumentPageListView(ExternalObjectMixin, SingleObjectListView):
|
|||||||
|
|
||||||
|
|
||||||
class DocumentPageNavigationBase(ExternalObjectMixin, RedirectView):
|
class DocumentPageNavigationBase(ExternalObjectMixin, RedirectView):
|
||||||
external_object_class = DocumentVersionPage
|
external_object_class = DocumentPage
|
||||||
external_object_permission = permission_document_view
|
external_object_permission = permission_document_view
|
||||||
external_object_pk_url_kwarg = 'pk'
|
external_object_pk_url_kwarg = 'pk'
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ class DocumentPageNavigationPrevious(DocumentPageNavigationBase):
|
|||||||
|
|
||||||
|
|
||||||
class DocumentPageView(ExternalObjectMixin, SimpleView):
|
class DocumentPageView(ExternalObjectMixin, SimpleView):
|
||||||
external_object_class = DocumentVersionPage
|
external_object_class = DocumentPage
|
||||||
external_object_permission = permission_document_view
|
external_object_permission = permission_document_view
|
||||||
external_object_pk_url_kwarg = 'pk'
|
external_object_pk_url_kwarg = 'pk'
|
||||||
template_name = 'appearance/generic_form.html'
|
template_name = 'appearance/generic_form.html'
|
||||||
@@ -204,7 +204,7 @@ class DocumentPageViewResetView(RedirectView):
|
|||||||
|
|
||||||
|
|
||||||
class DocumentPageInteractiveTransformation(ExternalObjectMixin, RedirectView):
|
class DocumentPageInteractiveTransformation(ExternalObjectMixin, RedirectView):
|
||||||
external_object_class = DocumentVersionPage
|
external_object_class = DocumentPage
|
||||||
external_object_permission = permission_document_view
|
external_object_permission = permission_document_view
|
||||||
external_object_pk_url_kwarg = 'pk'
|
external_object_pk_url_kwarg = 'pk'
|
||||||
|
|
||||||
@@ -289,7 +289,7 @@ class DocumentPageDisable(MultipleObjectConfirmActionView):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
def get_source_queryset(self):
|
def get_source_queryset(self):
|
||||||
return DocumentVersionPage.passthrough.all()
|
return DocumentPage.passthrough.all()
|
||||||
|
|
||||||
def object_action(self, form, instance):
|
def object_action(self, form, instance):
|
||||||
instance.enabled = False
|
instance.enabled = False
|
||||||
@@ -319,7 +319,7 @@ class DocumentPageEnable(MultipleObjectConfirmActionView):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
def get_source_queryset(self):
|
def get_source_queryset(self):
|
||||||
return DocumentVersionPage.passthrough.all()
|
return DocumentPage.passthrough.all()
|
||||||
|
|
||||||
def object_action(self, form, instance):
|
def object_action(self, form, instance):
|
||||||
instance.enabled = True
|
instance.enabled = True
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class RedactionsApp(MayanAppConfig):
|
|||||||
super(RedactionsApp, self).ready()
|
super(RedactionsApp, self).ready()
|
||||||
|
|
||||||
DocumentPage = apps.get_model(
|
DocumentPage = apps.get_model(
|
||||||
app_label='documents', model_name='DocumentVersionPage'
|
app_label='documents', model_name='DocumentPage'
|
||||||
)
|
)
|
||||||
|
|
||||||
link_redaction_list = link_transformation_list.copy(
|
link_redaction_list = link_transformation_list.copy(
|
||||||
|
|||||||
Reference in New Issue
Block a user