Source code for concepts.signals

from django.db.models.signals import post_save
from django.dispatch import receiver

from .authorities import resolve
from .models import Concept, Type
from concepts.tasks import resolve_concept, add_concept

import logging
logging.basicConfig()
logger = logging.getLogger(__name__)
logger.setLevel('DEBUG')


### Handle Concept and Type signals. ###
@receiver(post_save, sender=Concept)
[docs]def concept_post_save_receiver(sender, **kwargs): """ When a :class:`.Concept` is saved, attempt to resolve it using one of the registered :class:`.AuthorityManager` classes if the :class:`.Concept` is not already :prop:`.resolved`\. """ instance = kwargs.get('instance', None) if instance: resolve_concept.delay(sender, instance)
@receiver(post_save, sender=Concept)
[docs]def concept_post_save_approve_receiver(sender, **kwargs): """ When a :class:`.Concept` is saved, attempt to add it using one of the registered :class:`.AuthorityManager` classes to ConceptPower if the :class:`.Concept` is :prop:`.approved`\. """ instance = kwargs.get('instance', None) if instance and instance.concept_state == Concept.APPROVED: add_concept.delay(sender, instance)
@receiver(post_save, sender=Type)
[docs]def type_post_save_receiver(sender, **kwargs): """ When a :class:`.Type` is saved, attempt to resolve it using one of the registered :class:`.AuthorityManager` classes if the :class:`.Type` is not already :prop:`.resolved`\. """ instance = kwargs.get('instance', None) if instance: resolve_concept.delay(sender, instance)