2015-05-10 04:31:19 -06:00
|
|
|
import json
|
|
|
|
import urllib2
|
2015-05-09 03:50:57 -06:00
|
|
|
|
|
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
from network.base.models import Satellite, Transponder
|
|
|
|
|
|
|
|
|
|
|
|
class Command(BaseCommand):
|
|
|
|
help = 'Provide DB API endpoint'
|
|
|
|
|
|
|
|
def handle(self, *args, **options):
|
|
|
|
apiurl = settings.DB_API_ENDPOINT
|
|
|
|
satellites_url = "{0}satellites".format(apiurl)
|
|
|
|
transponders_url = "{0}transponders".format(apiurl)
|
2015-07-22 05:16:15 -06:00
|
|
|
self.stdout.write("Fetching from: {0}".format(satellites_url))
|
2015-05-09 03:50:57 -06:00
|
|
|
try:
|
|
|
|
satellites = urllib2.urlopen(satellites_url).read()
|
|
|
|
transponders = urllib2.urlopen(transponders_url).read()
|
|
|
|
except:
|
|
|
|
raise CommandError('API is unreachable')
|
|
|
|
|
|
|
|
for satellite in json.loads(satellites):
|
|
|
|
norad_cat_id = satellite['norad_cat_id']
|
|
|
|
name = satellite['name']
|
|
|
|
try:
|
|
|
|
sat = Satellite.objects.get(norad_cat_id=norad_cat_id)
|
2015-07-22 05:16:15 -06:00
|
|
|
self.stdout.write('Satellite {0}-{1} already exists'.format(norad_cat_id, name))
|
2015-05-09 03:50:57 -06:00
|
|
|
except:
|
|
|
|
sat = Satellite(norad_cat_id=norad_cat_id, name=name)
|
|
|
|
sat.save()
|
2015-07-22 05:16:15 -06:00
|
|
|
self.stdout.write('Satellite {0}-{1} added'.format(norad_cat_id, name))
|
2015-05-09 03:50:57 -06:00
|
|
|
|
|
|
|
for transponder in json.loads(transponders):
|
|
|
|
norad_cat_id = transponder['norad_cat_id']
|
|
|
|
uuid = transponder['uuid']
|
2015-07-22 05:16:15 -06:00
|
|
|
description = transponder['description']
|
2015-05-09 03:50:57 -06:00
|
|
|
|
|
|
|
try:
|
|
|
|
sat = Satellite.objects.get(norad_cat_id=norad_cat_id)
|
|
|
|
except:
|
|
|
|
self.stdout.write('Satellite {0} not present'.format(norad_cat_id))
|
|
|
|
transponder.pop('norad_cat_id')
|
|
|
|
try:
|
|
|
|
existing_transponder = Transponder.objects.get(uuid=uuid)
|
|
|
|
existing_transponder.__dict__.update(transponder)
|
|
|
|
existing_transponder.satellite = sat
|
2015-07-22 05:16:15 -06:00
|
|
|
self.stdout.write('Transponder {0}-{1} updated'.format(uuid, description))
|
2015-05-09 03:50:57 -06:00
|
|
|
except Transponder.DoesNotExist:
|
|
|
|
new_transponder = Transponder.objects.create(**transponder)
|
2015-05-09 07:51:40 -06:00
|
|
|
new_transponder.satellite = sat
|
|
|
|
new_transponder.save()
|
2015-07-22 05:16:15 -06:00
|
|
|
self.stdout.write('Transponder {0}-{1} created'.format(uuid, description))
|