X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fmodel_policy.py;h=7aef79307c59fcfa0bfea1959aae115710ac1d17;hb=a354d644f199bcebd5ec8d16c40ab42cec43d3e5;hp=de6f73d49cf84db4a751a2e3d9eb65855c2511aa;hpb=62370da2ec08b055ae9b651d09fad9462110669c;p=plstackapi.git diff --git a/planetstack/model_policy.py b/planetstack/model_policy.py index de6f73d..7aef793 100644 --- a/planetstack/model_policy.py +++ b/planetstack/model_policy.py @@ -4,6 +4,8 @@ import pdb from core.models import * from dependency_walker import * import model_policies +from util.logger import logger + modelPolicyEnabled = True @@ -16,7 +18,6 @@ def update_dep(d, o): if (d.updated < o.updated): d.save(update_fields=['updated']) except AttributeError,e: - pdb.set_trace() raise e def delete_if_inactive(d, o): @@ -24,24 +25,37 @@ def delete_if_inactive(d, o): d.delete() return -@receiver(post_save) -def post_save_handler(sender, instance, **kwargs): - if not modelPolicyEnabled: - return - - sender_name = sender.__name__ - policy_name = 'model_policy_%s'%sender_name - - if (not kwargs['update_fields']): +def execute_model_policy(policy_name, instance, update_fields_empty, deleted): + if (update_fields_empty): # Automatic dirtying - walk_inv_deps(update_dep, instance) + #walk_inv_deps(update_dep, instance) try: policy_handler = getattr(model_policies, policy_name, None) + logger.error("POLICY HANDLER: %s %s" % (policy_name, policy_handler)) if policy_handler is not None: policy_handler.handle(instance) except: - pass - elif 'deleted' in kwargs['update_fields']: + logger.log_exc("Model Policy Error:") + print "Policy Exceution Error" + elif deleted: walk_inv_deps(delete_if_inactive, instance) + + +@receiver(post_save) +def post_save_handler(sender, instance, **kwargs): + if not modelPolicyEnabled: + return + + sender_name = sender.__name__ + policy_name = 'model_policy_%s'%sender_name + if (not kwargs['update_fields']): + noargs = True + deleted = False + else: + noargs = False + deleted = True + + execute_model_policy(policy_name, instance, noargs, deleted) +