From ba550c7f03dbff480e47f3359f744c78c60aa2e7 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 26 Jul 2012 06:14:42 -0400 Subject: [PATCH] Remove direct index updating and delete from metadata and source apps and move it to document indexing app via signals --- apps/document_indexing/__init__.py | 26 +++++++++++++++++++++++--- apps/metadata/views.py | 27 --------------------------- apps/sources/models.py | 2 -- settings.py | 2 +- 4 files changed, 24 insertions(+), 33 deletions(-) diff --git a/apps/document_indexing/__init__.py b/apps/document_indexing/__init__.py index cce1676648..80c4bcadbe 100644 --- a/apps/document_indexing/__init__.py +++ b/apps/document_indexing/__init__.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from django.utils.translation import ugettext_lazy as _ from django.dispatch import receiver -from django.db.models.signals import post_save, pre_delete +from django.db.models.signals import post_save, pre_delete, post_delete from navigation.api import (register_top_menu, register_sidebar_template, register_links) @@ -10,6 +10,7 @@ from navigation.api import (register_top_menu, register_sidebar_template, from main.api import register_maintenance_links from documents.permissions import PERMISSION_DOCUMENT_VIEW from documents.models import Document +from metadata.models import DocumentMetadata from project_setup.api import register_setup from .models import (Index, IndexTemplateNode, IndexInstanceNode) @@ -70,12 +71,31 @@ register_links(IndexTemplateNode, [template_node_create, template_node_edit, tem @receiver(post_save, dispatch_uid='document_index_update', sender=Document) def document_index_update(sender, **kwargs): - # TODO: save result in user msg queue + # TODO: save result in index log delete_indexes(kwargs['instance']) update_indexes(kwargs['instance']) @receiver(pre_delete, dispatch_uid='document_index_delete', sender=Document) def document_index_delete(sender, **kwargs): - # TODO: save result in user msg queue + # TODO: save result in index log delete_indexes(kwargs['instance']) + + +@receiver(post_save, dispatch_uid='document_metadata_index_update', sender=DocumentMetadata) +def document_metadata_index_update(sender, **kwargs): + # TODO: save result in index log + delete_indexes(kwargs['instance'].document) + update_indexes(kwargs['instance'].document) + + +@receiver(pre_delete, dispatch_uid='document_metadata_index_delete', sender=DocumentMetadata) +def document_metadata_index_delete(sender, **kwargs): + # TODO: save result in index log + delete_indexes(kwargs['instance'].document) + + +@receiver(post_delete, dispatch_uid='document_metadata_index_post_delete', sender=DocumentMetadata) +def document_metadata_index_post_delete(sender, **kwargs): + # TODO: save result in index log + update_indexes(kwargs['instance'].document) diff --git a/apps/metadata/views.py b/apps/metadata/views.py index 31e9a74549..b380b81025 100644 --- a/apps/metadata/views.py +++ b/apps/metadata/views.py @@ -13,7 +13,6 @@ from django.core.exceptions import PermissionDenied from documents.permissions import PERMISSION_DOCUMENT_TYPE_EDIT from documents.models import Document, RecentDocument, DocumentType from permissions.models import Permission -from document_indexing.api import update_indexes, delete_indexes from acls.models import AccessEntry from common.utils import generate_choices_w_labels, encapsulate, get_object_name @@ -80,12 +79,6 @@ def metadata_edit(request, document_id=None, document_id_list=None): formset = MetadataFormSet(request.POST) if formset.is_valid(): for document in documents: - - warnings = delete_indexes(document) - if request.user.is_staff or request.user.is_superuser: - for warning in warnings: - messages.warning(request, _(u'Error deleting document indexes; %s') % warning) - errors = [] for form in formset.forms: if form.cleaned_data['update']: @@ -101,13 +94,6 @@ def metadata_edit(request, document_id=None, document_id_list=None): else: messages.success(request, _(u'Metadata for document %s edited successfully.') % document) - warnings = update_indexes(document) - if warnings and (request.user.is_staff or request.user.is_superuser): - for warning in warnings: - messages.warning(request, _(u'Error updating document indexes; %s') % warning) - else: - messages.success(request, _(u'Document indexes updated successfully.')) - return HttpResponseRedirect(next) context = { @@ -244,12 +230,6 @@ def metadata_remove(request, document_id=None, document_id_list=None): formset = MetadataRemoveFormSet(request.POST) if formset.is_valid(): for document in documents: - - warnings = delete_indexes(document) - if request.user.is_staff or request.user.is_superuser: - for warning in warnings: - messages.warning(request, _(u'Error deleting document indexes; %s') % warning) - for form in formset.forms: if form.cleaned_data['update']: metadata_type = get_object_or_404(MetadataType, pk=form.cleaned_data['id']) @@ -262,13 +242,6 @@ def metadata_remove(request, document_id=None, document_id_list=None): messages.error(request, _(u'Error removing metadata type: %(metadata_type)s from document: %(document)s.') % { 'metadata_type': metadata_type, 'document': document}) - warnings = update_indexes(document) - if warnings and (request.user.is_staff or request.user.is_superuser): - for warning in warnings: - messages.warning(request, _(u'Error updating document indexes; %s') % warning) - else: - messages.success(request, _(u'Document indexes updated successfully.')) - return HttpResponseRedirect(next) context = { diff --git a/apps/sources/models.py b/apps/sources/models.py index 7351fc73a4..db632e5464 100644 --- a/apps/sources/models.py +++ b/apps/sources/models.py @@ -14,7 +14,6 @@ from converter.api import get_available_transformations_choices from converter.literals import DIMENSION_SEPARATOR from documents.models import Document from documents.events import history_document_created -from document_indexing.api import update_indexes from metadata.api import save_metadata_list from scheduler.api import register_interval_job, remove_job from acls.utils import apply_default_acls @@ -130,7 +129,6 @@ class BaseModel(models.Model): if metadata_dict_list and new_document: # Only do for new documents save_metadata_list(metadata_dict_list, document, create=True) - warnings = update_indexes(document) class Meta: ordering = ('title',) diff --git a/settings.py b/settings.py index b442a74f8a..a5eff1e634 100644 --- a/settings.py +++ b/settings.py @@ -170,7 +170,6 @@ INSTALLED_APPS = ( 'metadata', 'documents', 'linking', - 'document_indexing', 'bootstrap', 'document_acls', 'ocr', @@ -180,6 +179,7 @@ INSTALLED_APPS = ( 'rest_api', 'document_signatures', 'checkouts', + 'document_indexing', # Has to be last so the other apps can register it's signals 'signaler',