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
10 modelPolicyEnabled = True
12 def EnableModelPolicy(x):
13 global modelPolicyEnabled
14 modelPolicyEnabled = x
18 if (d.updated < o.updated):
19 d.save(update_fields=['updated'])
20 except AttributeError,e:
23 def delete_if_inactive(d, o):
24 #print "Deleting %s (%s)"%(d,d.__class__.__name__)
28 def execute_model_policy(policy_name, instance, update_fields_empty, deleted):
29 if (update_fields_empty):
31 #walk_inv_deps(update_dep, instance)
34 policy_handler = getattr(model_policies, policy_name, None)
35 logger.error("POLICY HANDLER: %s %s" % (policy_name, policy_handler))
36 if policy_handler is not None:
37 policy_handler.handle(instance)
39 logger.log_exc("Model Policy Error:")
40 print "Policy Exceution Error"
42 walk_inv_deps(delete_if_inactive, instance)
46 def post_save_handler(sender, instance, **kwargs):
47 if not modelPolicyEnabled:
50 sender_name = sender.__name__
51 policy_name = 'model_policy_%s'%sender_name
52 if (not kwargs['update_fields']):
59 execute_model_policy(policy_name, instance, noargs, deleted)