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
|
||||
)
|
||||
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'])
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user