Files
mayan-edms/mayan/apps/metadata/handlers.py
Roberto Rosario 5798cabd7c Add support to update the document indexes from workflow state changes.
Add a new workflow field called internal_name for easier workflow
reference in document index templates.
Generalize the PropertyHelper class.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2017-06-06 20:07:15 -04:00

60 lines
1.8 KiB
Python

from __future__ import unicode_literals
from django.apps import apps
import logging
from document_indexing.tasks import task_index_document
from .tasks import task_add_required_metadata_type, task_remove_metadata_type
logger = logging.getLogger(__name__)
def post_document_type_metadata_type_add(sender, instance, created, **kwargs):
logger.debug('instance: %s', instance)
if created and instance.required:
task_add_required_metadata_type.apply_async(
kwargs={
'document_type_id': instance.document_type.pk,
'metadata_type_id': instance.metadata_type.pk
}
)
def post_document_type_metadata_type_delete(sender, instance, **kwargs):
logger.debug('instance: %s', instance)
task_remove_metadata_type.apply_async(
kwargs={
'document_type_id': instance.document_type.pk,
'metadata_type_id': instance.metadata_type.pk
}
)
def post_post_document_type_change_metadata(sender, instance, **kwargs):
logger.debug('received post_document_type_change')
logger.debug('instance: %s', instance)
# Delete existing document metadata
for metadata in instance.metadata.all():
metadata.delete(enforce_required=False)
DocumentMetadata = apps.get_model(
app_label='metadata', model_name='DocumentMetadata'
)
# Add new document type metadata types to document
for document_type_metadata_type in instance.document_type.metadata.filter(required=True):
DocumentMetadata.objects.create(
document=instance,
metadata_type=document_type_metadata_type.metadata_type,
value=None
)
def handler_index_document(sender, **kwargs):
task_index_document.apply_async(
kwargs=dict(document_id=kwargs['instance'].document.pk)
)