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

47 lines
1.6 KiB
Python

from optparse import make_option
from django.core.management.base import BaseCommand, CommandError
from satellite_tle import fetch_tle_from_celestrak
from network.base.models import Satellite
class Command(BaseCommand):
option_list = BaseCommand.option_list + (
make_option('--delete',
action='store_true',
dest='delete',
default=False,
help='Delete Satellite'),
)
args = '<Satellite Identifiers>'
help = 'Updates/Inserts TLEs for certain Satellites'
def handle(self, *args, **options):
for item in args:
if options['delete']:
try:
Satellite.objects.get(norad_cat_id=item).delete()
self.stdout.write('Satellite {}: deleted'.format(item))
continue
except Satellite.DoesNotExist:
raise CommandError('Satellite with Identifier {} does not exist'.format(item))
try:
tle = fetch_tle_from_celestrak(item)
except LookupError:
raise CommandError('Satellite with Identifier {} does not exist'.format(item))
try:
obj = Satellite.objects.get(norad_cat_id=item)
except Satellite.DoesNotExist:
obj = Satellite(norad_cat_id=item)
obj.name = tle[0]
obj.tle0 = tle[0]
obj.tle1 = tle[1]
obj.tle2 = tle[2]
obj.save()
self.stdout.write('fetched data for {}: {}'.format(obj.norad_cat_id, obj.name))