Merged ansible branch into master
diff --git a/planetstack/model_policy.py b/planetstack/model_policy.py
index 9224c50..38cc4df 100644
--- a/planetstack/model_policy.py
+++ b/planetstack/model_policy.py
@@ -2,6 +2,7 @@
from django.dispatch import receiver
import pdb
from core.models import *
+from dependency_walker import *
import model_policies
modelPolicyEnabled = True
@@ -10,18 +11,33 @@
global modelPolicyEnabled
modelPolicyEnabled = x
+def update_dep(d, o):
+ if (d.updated < o.updated):
+ d.save(update_fields=['updated'])
+
+def delete_if_inactive(d, o):
+ #print "Deleting %s (%s)"%(d,d.__class__.__name__)
+ d.delete()
+ return
+
@receiver(post_save)
def post_save_handler(sender, instance, **kwargs):
- sender_name = sender.__name__
- policy_name = 'model_policy_%s'%sender_name
-
if not modelPolicyEnabled:
return
+
+ sender_name = sender.__name__
+ policy_name = 'model_policy_%s'%sender_name
if (not kwargs['update_fields']):
+ # Automatic dirtying
+ walk_inv_deps(update_dep, instance)
+
try:
policy_handler = getattr(model_policies, policy_name, None)
if policy_handler is not None:
policy_handler.handle(instance)
except:
pass
+ elif 'deleted' in kwargs['update_fields']:
+ walk_inv_deps(delete_if_inactive, instance)
+