diff --git a/apps/document_indexing/__init__.py b/apps/document_indexing/__init__.py index 44021889d7..8c79a8f3f9 100644 --- a/apps/document_indexing/__init__.py +++ b/apps/document_indexing/__init__.py @@ -1,13 +1,18 @@ from __future__ import absolute_import +import logging + from django.utils.translation import ugettext_lazy as _ +from django.db.models.signals import pre_save, post_save, pre_delete +from django.dispatch import receiver from navigation.api import (register_top_menu, register_sidebar_template, register_links) from main.api import register_maintenance_links from documents.permissions import PERMISSION_DOCUMENT_VIEW -from documents.models import Document +from documents.models import Document, DocumentVersion +from metadata.models import DocumentMetadata from project_setup.api import register_setup from .models import (Index, IndexTemplateNode, IndexInstanceNode) @@ -18,7 +23,7 @@ from .permissions import (PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_INDEXING_EDIT, PERMISSION_DOCUMENT_INDEXING_DELETE ) - +from .api import update_indexes, delete_indexes def is_root_node(context): return context['node'].parent is None @@ -27,6 +32,7 @@ def is_root_node(context): def is_not_instance_root_node(context): return context['object'].parent is not None +logger = logging.getLogger(__name__) index_setup = {'text': _(u'indexes'), 'view': 'index_setup_list', 'icon': 'tab.png', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP], 'children_view_regex': [r'^index_setup', r'^template_node']} index_setup_list = {'text': _(u'index list'), 'view': 'index_setup_list', 'famfam': 'tab', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]} @@ -63,3 +69,29 @@ register_links([Index, 'index_setup_list', 'index_setup_create', 'template_node_ register_links(Index, [index_setup_edit, index_setup_delete, index_setup_view]) register_links(IndexTemplateNode, [template_node_create, template_node_edit, template_node_delete]) + + +def delete_indexes_handler(sender, instance, **kwargs): + if isinstance(instance, DocumentVersion): + logger.debug('received pre save signal - document version') + logger.debug('instance: %s' % instance) + delete_indexes(instance.document) + elif isinstance(instance, DocumentMetadata): + logger.debug('received pre save signal - document metadata') + logger.debug('instance: %s' % instance) + delete_indexes(instance.document) + + +@receiver(post_save, dispatch_uid='update_indexes_handler') +def update_indexes_handler(sender, instance, **kwargs): + if isinstance(instance, DocumentVersion): + logger.debug('received post save signal - document version') + logger.debug('instance: %s' % instance) + update_indexes(instance.document) + elif isinstance(instance, DocumentMetadata): + logger.debug('received post save signal - document metadata') + logger.debug('instance: %s' % instance) + update_indexes(instance.document) + +pre_save.connect(delete_indexes_handler, dispatch_uid='delete_indexes_handler_on_update') +pre_delete.connect(delete_indexes_handler, dispatch_uid='delete_indexes_handler_on_delete') diff --git a/apps/documents/__init__.py b/apps/documents/__init__.py index cae0edd960..d3873ad600 100644 --- a/apps/documents/__init__.py +++ b/apps/documents/__init__.py @@ -167,7 +167,7 @@ register_maintenance_links([document_find_all_duplicates, document_update_page_c register_model_list_columns(Document, [ {'name':_(u'thumbnail'), 'attribute': - encapsulate(lambda x: document_thumbnail(x)) + encapsulate(lambda x: document_thumbnail(x, gallery_name='document_list', title=x.filename)) }, {'name':_(u'metadata'), 'attribute': encapsulate(lambda x: get_metadata_string(x)) diff --git a/apps/documents/forms.py b/apps/documents/forms.py index 62bd3fa00d..5fb55ec04e 100644 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -97,7 +97,7 @@ class DocumentPageForm_edit(forms.ModelForm): # Document forms class DocumentPagesCarouselWidget(forms.widgets.Widget): """ - Display many small representations of a document pages + Display many small representations of document pages """ def render(self, name, value, attrs=None): output = [] @@ -115,6 +115,7 @@ class DocumentPagesCarouselWidget(forms.widgets.Widget): page=page.page_number, gallery_name='document_pages', fancybox_class='fancybox-noscaling', + title=ugettext(u'Page %d of %d') % (page.page_number, len(value.pages.all())) ) ) output.append(u'
' % (preview_view, settings.STATIC_URL, alt_text))
result.append(u'' % (preview_view, alt_text))
diff --git a/apps/linking/forms.py b/apps/linking/forms.py
index 46e92454d6..16400ece57 100644
--- a/apps/linking/forms.py
+++ b/apps/linking/forms.py
@@ -48,7 +48,7 @@ class SmartLinkImageWidget(forms.widgets.Widget):
output.append(u'