1
0
Fork 0
satnogs-network/network/base/management/commands/fetch_data.py

55 lines
2.2 KiB
Python
Raw Normal View History

2015-05-10 04:31:19 -06:00
import json
import urllib2
from django.core.management.base import BaseCommand, CommandError
from django.conf import settings
2015-07-23 09:18:01 -06:00
from network.base.models import Satellite, Transmitter
class Command(BaseCommand):
help = 'Provide DB API endpoint'
def handle(self, *args, **options):
apiurl = settings.DB_API_ENDPOINT
satellites_url = "{0}satellites".format(apiurl)
2015-07-23 09:18:01 -06:00
transmitters_url = "{0}transmitters".format(apiurl)
2015-07-22 05:16:15 -06:00
self.stdout.write("Fetching from: {0}".format(satellites_url))
try:
satellites = urllib2.urlopen(satellites_url).read()
2015-07-23 09:18:01 -06:00
transmitters = urllib2.urlopen(transmitters_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))
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-07-23 09:18:01 -06:00
for transmitter in json.loads(transmitters):
norad_cat_id = transmitter['norad_cat_id']
uuid = transmitter['uuid']
description = transmitter['description']
try:
sat = Satellite.objects.get(norad_cat_id=norad_cat_id)
except:
self.stdout.write('Satellite {0} not present'.format(norad_cat_id))
2015-07-23 09:18:01 -06:00
transmitter.pop('norad_cat_id')
try:
2015-07-23 09:18:01 -06:00
existing_transmitter = Transmitter.objects.get(uuid=uuid)
existing_transmitter.__dict__.update(transmitter)
existing_transmitter.satellite = sat
self.stdout.write('Transmitter {0}-{1} updated'.format(uuid, description))
except Transmitter.DoesNotExist:
new_transmitter = Transmitter.objects.create(**transmitter)
new_transmitter.satellite = sat
new_transmitter.save()
self.stdout.write('Transmitter {0}-{1} created'.format(uuid, description))