| from plstackapi.core.models import Slice |
| |
| class SliceImporter: |
| |
| 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 |
| |
| db_slices = Slice.objects.all() |
| 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: |
| 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'], |
| instantiation=slice['instantiation'], |
| omf_friendly = False, |
| description = slice['description'], |
| slice_url = slice['url'], |
| site = site) |
| new_slice.save() |
| count += 1 |
| self.local_slices[new_slice.name] = new_slice |
| print "Imported %s slices" % count |
| |
| |
| |