Fixed issues in object dependencies
[plstackapi.git] / planetstack / observer / syncstep.py
index 0cdcf13..4116d65 100644 (file)
@@ -1,5 +1,6 @@
 import os
 import base64
+from datetime import datetime
 from planetstack.config import Config
 
 class FailedDependency(Exception):
@@ -37,25 +38,27 @@ class SyncStep:
         return
 
     def fetch_pending(self):
-        #return Sliver.objects.filter(ip=None)
         return []
+        #return Sliver.objects.filter(ip=None)
     
-    def check_dependencies(self, obj):
+    def check_dependencies(self, obj, failed):
         for dep in self.dependencies:
-            peer_object = getattr(obj, dep.name.lowercase())
-            if (peer_object.pk==dep.pk):
+            peer_object = getattr(obj, dep.lower())
+            if (peer_object.pk==failed.pk):
                 raise DependencyFailed
 
     def call(self, failed=[]):
         pending = self.fetch_pending()
         for o in pending:
             try:
-                check_dependencies(o) # Raises exception if failed                    
+                for f in failed:
+                    self.check_dependencies(o,f) # Raises exception if failed                    
                 self.sync_record(o)
                 o.enacted = datetime.now() # Is this the same timezone? XXX
                 o.save(update_fields=['enacted'])
             except:
                 failed.append(o)
+
         return failed
 
     def __call__(self, **args):