From c97208f60993a136d2fd326e6e9cb4fa939e866d Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Tue, 17 May 2016 05:02:57 -0400 Subject: [PATCH] Ensure that the automatic index is created after the default document type is created. --- mayan/apps/document_indexing/apps.py | 10 +++++--- mayan/apps/document_indexing/handlers.py | 32 ++++++++++++------------ mayan/apps/documents/handlers.py | 10 +++++++- mayan/apps/documents/literals.py | 1 + mayan/apps/documents/signals.py | 3 +++ 5 files changed, 36 insertions(+), 20 deletions(-) diff --git a/mayan/apps/document_indexing/apps.py b/mayan/apps/document_indexing/apps.py index ec9d1e8ee6..7796b732a1 100644 --- a/mayan/apps/document_indexing/apps.py +++ b/mayan/apps/document_indexing/apps.py @@ -17,7 +17,7 @@ from common import ( from common.classes import Package from common.signals import post_initial_setup from common.widgets import two_state_template -from documents.signals import post_document_created +from documents.signals import post_document_created, post_initial_document_type from mayan.celery import app from navigation import SourceColumn from rest_api.classes import APIEndPoint @@ -56,6 +56,10 @@ class DocumentIndexingApp(MayanAppConfig): app_label='documents', model_name='Document' ) + DocumentType = apps.get_model( + app_label='documents', model_name='DocumentType' + ) + DocumentMetadata = apps.get_model( app_label='metadata', model_name='DocumentMetadata' ) @@ -234,9 +238,9 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. document_created_index_update, dispatch_uid='document_created_index_update', sender=Document ) - post_initial_setup.connect( + post_initial_document_type.connect( create_default_document_index, - dispatch_uid='create_default_document_index' + dispatch_uid='create_default_document_index', sender=DocumentType ) post_save.connect( document_metadata_index_update, diff --git a/mayan/apps/document_indexing/handlers.py b/mayan/apps/document_indexing/handlers.py index eadc8fbceb..ecf1604892 100644 --- a/mayan/apps/document_indexing/handlers.py +++ b/mayan/apps/document_indexing/handlers.py @@ -3,6 +3,8 @@ from __future__ import unicode_literals from django.apps import apps from django.utils.translation import ugettext_lazy as _ +from documents.literals import DEFAULT_DOCUMENT_TYPE_LABEL + from .tasks import task_delete_empty_index_nodes, task_index_document @@ -14,23 +16,21 @@ def create_default_document_index(sender, **kwargs): app_label='document_indexing', model_name='Index' ) - if not Index.objects.count(): - index = Index.objects.create( - label=_('Creation date'), slug='creation_date' - ) - for document_type in DocumentType.objects.all(): - index.document_types.add(document_type) - - root_template_node = index.template_root - node = root_template_node.get_children().create( - expression='{{ document.date_added|date:"Y" }}', index=index, - parent=root_template_node - ) - node.get_children().create( - expression='{{ document.date_added|date:"m" }}', - index=index, link_documents=True, parent=node - ) + index = Index.objects.create( + label=_('Creation date'), slug='creation_date' + ) + for document_type in DocumentType.objects.all(): + index.document_types.add(document_type) + root_template_node = index.template_root + node = root_template_node.get_children().create( + expression='{{ document.date_added|date:"Y" }}', index=index, + parent=root_template_node + ) + node.get_children().create( + expression='{{ document.date_added|date:"m" }}', + index=index, link_documents=True, parent=node + ) def document_created_index_update(sender, **kwargs): diff --git a/mayan/apps/documents/handlers.py b/mayan/apps/documents/handlers.py index bcde760c69..0182ee86eb 100644 --- a/mayan/apps/documents/handlers.py +++ b/mayan/apps/documents/handlers.py @@ -3,6 +3,9 @@ from __future__ import unicode_literals from django.apps import apps from django.utils.translation import ugettext_lazy as _ +from .literals import DEFAULT_DOCUMENT_TYPE_LABEL +from .signals import post_initial_document_type + def create_default_document_type(sender, **kwargs): DocumentType = apps.get_model( @@ -10,4 +13,9 @@ def create_default_document_type(sender, **kwargs): ) if not DocumentType.objects.count(): - DocumentType.objects.create(label=_('Default')) + document_type = DocumentType.objects.create( + label=DEFAULT_DOCUMENT_TYPE_LABEL + ) + post_initial_document_type.send( + sender=DocumentType, instance=document_type + ) diff --git a/mayan/apps/documents/literals.py b/mayan/apps/documents/literals.py index d32efaee0a..8d8da36711 100644 --- a/mayan/apps/documents/literals.py +++ b/mayan/apps/documents/literals.py @@ -11,6 +11,7 @@ DELETE_STALE_STUBS_INTERVAL = 60 * 10 # 10 minutes DEFAULT_DELETE_PERIOD = 30 DEFAULT_DELETE_TIME_UNIT = TIME_DELTA_UNIT_DAYS DEFAULT_ZIP_FILENAME = 'document_bundle.zip' +DEFAULT_DOCUMENT_TYPE_LABEL = _('Default') DOCUMENT_IMAGE_TASK_TIMEOUT = 20 STUB_EXPIRATION_INTERVAL = 60 * 60 * 24 # 24 hours UPDATE_PAGE_COUNT_RETRY_DELAY = 10 diff --git a/mayan/apps/documents/signals.py b/mayan/apps/documents/signals.py index b0832d66bf..0ec434bee1 100644 --- a/mayan/apps/documents/signals.py +++ b/mayan/apps/documents/signals.py @@ -7,3 +7,6 @@ post_document_type_change = Signal( providing_args=('instance',), use_caching=True ) post_document_created = Signal(providing_args=('instance',), use_caching=True) +post_initial_document_type = Signal( + providing_args=('instance',), use_caching=True +)