Initial commit to support per page search.

This commit is contained in:
Roberto Rosario
2016-10-27 02:48:40 -04:00
parent f66f815ba6
commit b8b2e0e929
14 changed files with 278 additions and 95 deletions
+33 -1
View File
@@ -68,13 +68,14 @@ from .permissions import (
permission_document_trash, permission_document_version_revert,
permission_document_view
)
from .search import document_search, document_page_search
from .settings import setting_thumbnail_size
from .statistics import (
new_documents_per_month, new_document_pages_per_month,
new_document_versions_per_month, total_document_per_month,
total_document_page_per_month, total_document_version_per_month
)
from .widgets import document_thumbnail
from .widgets import document_html_widget, document_thumbnail
class DocumentsApp(MayanAppConfig):
@@ -90,6 +91,7 @@ class DocumentsApp(MayanAppConfig):
DeletedDocument = self.get_model('DeletedDocument')
Document = self.get_model('Document')
DocumentPage = self.get_model('DocumentPage')
DocumentPageResult = self.get_model('DocumentPageResult')
DocumentType = self.get_model('DocumentType')
DocumentTypeFilename = self.get_model('DocumentTypeFilename')
DocumentVersion = self.get_model('DocumentVersion')
@@ -159,6 +161,36 @@ class DocumentsApp(MayanAppConfig):
source=Document, label=_('Type'), attribute='document_type'
)
SourceColumn(
source=DocumentPage, label=_('Thumbnail'),
func=lambda context: document_html_widget(
document_page=context['object'],
click_view='documents:document_display',
click_view_arguments=(context['object'].document.pk,),
gallery_name='documents:document_page_list',
preview_click_view='documents:document_page_view',
size=setting_thumbnail_size.value,
title=unicode(context['object']),
)
)
SourceColumn(
source=DocumentPageResult, label=_('Thumbnail'),
func=lambda context: document_html_widget(
document_page=context['object'],
click_view='documents:document_display',
click_view_arguments=(context['object'].document.pk,),
gallery_name='documents:document_page_list',
preview_click_view='documents:document_page_view',
size=setting_thumbnail_size.value,
title=unicode(context['object']),
)
)
SourceColumn(
source=DocumentPageResult, label=_('Type'),
attribute='document_version.document.document_type'
)
SourceColumn(
source=DocumentType, label=_('Documents'),
func=lambda context: context['object'].get_document_count(
+8
View File
@@ -774,6 +774,14 @@ class DocumentPage(models.Model):
return '{}-{}'.format(self.document_version.uuid, self.pk)
class DocumentPageResult(DocumentPage):
class Meta:
ordering = ('document_version__document', 'page_number')
proxy = True
verbose_name = _('Document page')
verbose_name_plural = _('Document pages')
class NewVersionBlock(models.Model):
document = models.ForeignKey(Document, verbose_name=_('Document'))
+23 -1
View File
@@ -7,7 +7,8 @@ from dynamic_search.classes import SearchModel
from .permissions import permission_document_view
document_search = SearchModel(
'documents', 'Document', permission=permission_document_view,
app_label='documents', model_name='Document',
permission=permission_document_view,
serializer_string='documents.serializers.DocumentSerializer'
)
@@ -19,3 +20,24 @@ document_search.add_model_field(
)
document_search.add_model_field(field='label', label=_('Label'))
document_search.add_model_field(field='description', label=_('Description'))
document_page_search = SearchModel(
app_label='documents', model_name='DocumentPageResult',
permission=permission_document_view,
serializer_string='documents.serializers.DocumentPageSerializer'
)
document_page_search.add_model_field(
field='document_version__document__document_type__label',
label=_('Document type')
)
document_page_search.add_model_field(
field='document_version__document__versions__mimetype',
label=_('MIME type')
)
document_page_search.add_model_field(
field='document_version__document__label', label=_('Label')
)
document_page_search.add_model_field(
field='document_version__document__description', label=_('Description')
)
+10 -3
View File
@@ -83,7 +83,7 @@ class DocumentPagesCarouselWidget(forms.widgets.Widget):
def document_thumbnail(document, **kwargs):
return document_html_widget(
document.latest_version.pages.first(),
document_page=document.latest_version.pages.first(),
click_view='documents:document_display', **kwargs
)
@@ -94,7 +94,7 @@ def document_link(document):
)
def document_html_widget(document_page, click_view=None, click_view_arguments=None, zoom=DEFAULT_ZOOM_LEVEL, rotation=DEFAULT_ROTATION, gallery_name=None, fancybox_class='fancybox', image_class='lazy-load', title=None, size=setting_thumbnail_size.value, nolazyload=False, post_load_class=None, disable_title_link=False):
def document_html_widget(document_page, click_view=None, click_view_arguments=None, zoom=DEFAULT_ZOOM_LEVEL, rotation=DEFAULT_ROTATION, gallery_name=None, fancybox_class='fancybox', image_class='lazy-load', title=None, size=setting_thumbnail_size.value, nolazyload=False, post_load_class=None, disable_title_link=False, preview_click_view=None):
result = []
alt_text = _('Document page image')
@@ -110,6 +110,7 @@ def document_html_widget(document_page, click_view=None, click_view_arguments=No
'zoom': zoom,
'rotation': rotation,
'size': size,
'page': document_page.page_number
}
if gallery_name:
@@ -132,7 +133,13 @@ def document_html_widget(document_page, click_view=None, click_view_arguments=No
if title:
if not disable_title_link:
preview_click_link = document.get_absolute_url()
if not preview_click_view:
preview_click_link = document.get_absolute_url()
else:
preview_click_link = reverse(
preview_click_view, args=(document_page.pk,)
)
title_template = 'data-caption="<a class=\'a-caption\' href=\'{url}\'>{title}</a>"'.format(
title=strip_tags(title), url=preview_click_link or '#'
)