remove Slice.instantiation field
[plstackapi.git] / plstackapi / importer / plclassic / slice_importer.py
index 02247f1..4717b3d 100644 (file)
@@ -1,25 +1,46 @@
-from PLC.Slices import Slices
-from models import Slice
+from plstackapi.core.models import Slice
 
 class SliceImporter:
 
-    def __init__(self, importer):
-        self.importer = importer
-        self.slices = {}
+    def __init__(self, api):
+        self.api = api
+        self.remote_slices = {}
+        self.local_slices = {}
+
+    def run(self, remote_sites={}, local_sites={}):
+        if not remote_sites:
+            sites = self.api.GetSites({'peer_id': None})
+            for site in sites:
+                remote_sites[site['site_id']] = site
+        
+
+        if not local_sites:
+            from plstackapi.core.models import Site
+            sites = Site.objects.all()
+            for site in sites:
+                local_sites[site.login_base] = site            
 
-    def run(self):
-        slices = Slices(self.importer.api)
         db_slices = Slice.objects.all()
-        slice_names = [s['name'] for s in db_slices]
+        for db_slice in db_slices:
+            self.local_slices[db_slice.name] = db_slice
+        print "%s local slices" % len(db_slices)
+
+        slices = self.api.GetSlices({'peer_id': None})
+        print "%s remote slices" % len(slices)
+        count = 0 
         for slice in slices:
-            if slice['name'] not in slice_names:
-                new_slices = Slice(name=slice['name'],
-                                   instantiation=slice['instantiation'],
+            self.remote_slices[slice['slice_id']] = slice
+            if slice['name'] not in self.local_slices:
+                site = local_sites[remote_sites[slice['site_id']]['login_base']]
+                new_slice = Slice(name=slice['name'],
                                    omf_friendly = False,
                                    description = slice['description'],
-                                   slice_url = slice['url'])
-                new_slice.save();
-            self.slices[slice['slice_id']] = slice
+                                   slice_url = slice['url'],
+                                   site = site)
+                new_slice.save()
+                count += 1
+                self.local_slices[new_slice.name] = new_slice
+        print "Imported %s slices" % count