2017-04-30 14:39:46 -06:00
|
|
|
import csv
|
|
|
|
|
2017-03-31 02:32:03 -06:00
|
|
|
from celery.task import task
|
|
|
|
from orbit import satellite
|
|
|
|
|
2017-04-30 14:39:46 -06:00
|
|
|
from django.conf import settings
|
|
|
|
from django.core.mail import send_mail
|
|
|
|
from django.template.loader import render_to_string
|
|
|
|
|
|
|
|
from db.base.models import Satellite, DemodData
|
2017-03-31 02:32:03 -06:00
|
|
|
|
|
|
|
|
|
|
|
@task(ignore_result=False)
|
|
|
|
def check_celery():
|
|
|
|
"""Dummy celery task to check that everything runs smoothly."""
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
@task(ignore_result=True)
|
|
|
|
def update_all_tle():
|
2017-04-30 14:39:46 -06:00
|
|
|
"""Task to update all satellite TLEs"""
|
2017-03-31 02:32:03 -06:00
|
|
|
satellites = Satellite.objects.all()
|
|
|
|
|
|
|
|
for obj in satellites:
|
|
|
|
try:
|
|
|
|
sat = satellite(obj.norad_cat_id)
|
|
|
|
except:
|
|
|
|
continue
|
|
|
|
|
|
|
|
tle = sat.tle()
|
|
|
|
obj.tle1 = tle[1]
|
|
|
|
obj.tle2 = tle[2]
|
|
|
|
obj.save()
|
2017-04-30 14:39:46 -06:00
|
|
|
|
|
|
|
|
|
|
|
@task
|
|
|
|
def export_frames(norad, email, uid):
|
|
|
|
"""Task to export satellite frames in csv."""
|
|
|
|
frames = DemodData.objects.filter(satellite__norad_cat_id=norad)
|
|
|
|
filename = '{0}-{1}.csv'.format(norad, uid)
|
|
|
|
filepath = '{0}/download/{1}'.format(settings.MEDIA_ROOT, filename)
|
|
|
|
with open(filepath, 'w') as f:
|
|
|
|
writer = csv.writer(f)
|
|
|
|
for obj in frames:
|
|
|
|
writer.writerow([obj.timestamp, obj.display_frame()])
|
|
|
|
|
|
|
|
# Notify user
|
|
|
|
subject = '[satnogs] Your request for exported frames is ready!'
|
|
|
|
template = 'emails/exported_frames.txt'
|
|
|
|
data = {
|
2017-05-26 13:56:04 -06:00
|
|
|
'url': '{0}{1}download/{2}'.format(settings.SITE_URL, settings.MEDIA_URL, filename),
|
2017-04-30 14:39:46 -06:00
|
|
|
'norad': norad
|
|
|
|
}
|
|
|
|
message = render_to_string(template, {'data': data})
|
|
|
|
send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [email], False)
|