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)
+