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)