1 from django.db.models.signals import post_save
2 from django.dispatch import receiver
4 from core.models import *
5 from dependency_walker import *
7 from util.logger import logger
9 modelPolicyEnabled = True
11 def EnableModelPolicy(x):
12 global modelPolicyEnabled
13 modelPolicyEnabled = x
17 if (d.updated < o.updated):
18 d.save(update_fields=['updated'])
19 except AttributeError,e:
23 def delete_if_inactive(d, o):
24 #print "Deleting %s (%s)"%(d,d.__class__.__name__)
29 def post_save_handler(sender, instance, **kwargs):
30 if not modelPolicyEnabled:
33 sender_name = sender.__name__
34 policy_name = 'model_policy_%s'%sender_name
36 if (not kwargs['update_fields']):
38 walk_inv_deps(update_dep, instance)
41 policy_handler = getattr(model_policies, policy_name, None)
42 if policy_handler is not None:
43 policy_handler.handle(instance)
45 logger.log_exc("Model Policy Error:")
46 elif 'deleted' in kwargs['update_fields']:
47 walk_inv_deps(delete_if_inactive, instance)