src/cm/denorm_engine.py
author Production Moz <dev@sopinspace.com>
Tue, 31 May 2011 17:52:28 +0200
changeset 344 9787360440db
parent 278 3d25afbd78ff
child 407 2d14a80716e2
permissions -rw-r--r--
memoize get_activity

# This is the denormalisation engine
# his goal is to leverage on django's signal to update
# denormalized fields
# this should be used with beanstalk or starling
# python client (there is 2) http://github.com/earl/beanstalkc/tree/master

import logging
from django.db.models import signals
from cm.models import TextVersion, Text

# Text denormalisation
def update_text_from_last_version(sender, **kwargs):
    """
    Update text's last version
    """
    text_version = kwargs['instance']
    try:
        text = text_version.text
        text.update_denorm_fields()
    except Text.DoesNotExist:
        pass
        #logging.warning('No text found for text_version: %i' %text_version.id)
        
        
def connect_all():
    # text updated by text_version
    signals.post_save.connect(update_text_from_last_version, sender=TextVersion)
    signals.post_delete.connect(update_text_from_last_version, sender=TextVersion)


connect_all()