52 lines
2.1 KiB
Python
52 lines
2.1 KiB
Python
import requests
|
|
from django.conf import settings
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
|
|
from network.base.models import Satellite, Transmitter
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Fetch Modes, Satellites and Transmitters from satnogs-db'
|
|
|
|
def handle(self, *args, **options):
|
|
db_api_url = settings.DB_API_ENDPOINT
|
|
if len(db_api_url) == 0:
|
|
self.stdout.write("Zero length api url, fetching is stopped")
|
|
return
|
|
satellites_url = "{}satellites".format(db_api_url)
|
|
transmitters_url = "{}transmitters".format(db_api_url)
|
|
|
|
try:
|
|
self.stdout.write("Fetching Satellites from {}".format(satellites_url))
|
|
r_satellites = requests.get(satellites_url)
|
|
|
|
self.stdout.write("Fetching Transmitters from {}".format(transmitters_url))
|
|
r_transmitters = requests.get(transmitters_url)
|
|
except requests.exceptions.ConnectionError:
|
|
raise CommandError('API is unreachable')
|
|
|
|
# Fetch Satellites
|
|
for satellite in r_satellites.json():
|
|
norad_cat_id = satellite['norad_cat_id']
|
|
name = satellite['name']
|
|
satellite.pop('decayed', None)
|
|
try:
|
|
existing_satellite = Satellite.objects.get(norad_cat_id=norad_cat_id)
|
|
existing_satellite.__dict__.update(satellite)
|
|
existing_satellite.save()
|
|
self.stdout.write('Satellite {0}-{1} updated'.format(norad_cat_id, name))
|
|
except Satellite.DoesNotExist:
|
|
Satellite.objects.create(**satellite)
|
|
self.stdout.write('Satellite {0}-{1} added'.format(norad_cat_id, name))
|
|
|
|
# Fetch Transmitters
|
|
for transmitter in r_transmitters.json():
|
|
uuid = transmitter['uuid']
|
|
|
|
try:
|
|
Transmitter.objects.get(uuid=uuid)
|
|
self.stdout.write('Transmitter {0} already exists'.format(uuid))
|
|
except Transmitter.DoesNotExist:
|
|
Transmitter.objects.create(uuid=uuid)
|
|
self.stdout.write('Transmitter {0} created'.format(uuid))
|