diff --git a/bower.json b/bower.json index e0a1d9c..56538a1 100644 --- a/bower.json +++ b/bower.json @@ -3,7 +3,7 @@ "description": "Satellite Transmitter Suggestions App", "version": "0.1.0", "homepage": "https://github.com/satnogs/satnogs-db", - "license": "AGPLv3", + "license": "AGPL-3.0", "dependencies": { "jquery": "2.1.x", "bootstrap": "3.3.x", diff --git a/db/base/tasks.py b/db/base/tasks.py index 730cacc..1d902f0 100644 --- a/db/base/tasks.py +++ b/db/base/tasks.py @@ -1,4 +1,5 @@ import csv +from datetime import datetime, timedelta from celery.task import task from orbit import satellite @@ -34,21 +35,35 @@ def update_all_tle(): @task -def export_frames(norad, email, uid): +def export_frames(norad, email, uid, period=None): """Task to export satellite frames in csv.""" - frames = DemodData.objects.filter(satellite__norad_cat_id=norad) - filename = '{0}-{1}.csv'.format(norad, uid) + now = datetime.utcnow() + if period: + if period == '1': + q = datetime.now() - timedelta(days=7) + suffix = 'week' + else: + q = datetime.now() - timedelta(days=30) + suffix = 'month' + frames = DemodData.objects.filter(satellite__norad_cat_id=norad, + timestamp__gte=q) + else: + frames = DemodData.objects.filter(satellite__norad_cat_id=norad) + suffix = 'all' + filename = '{0}-{1}-{2}-{3}.csv'.format(norad, uid, now.strftime('%Y%m%dT%H%M%SZ'), suffix) 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()]) + writer.writerow([obj.timestamp.strftime('%Y%m%dT%H:%M:%SZ'), + obj.observer, obj.display_frame()]) # Notify user subject = '[satnogs] Your request for exported frames is ready!' template = 'emails/exported_frames.txt' data = { - 'url': '{0}{1}download/{2}'.format(settings.SITE_URL, settings.MEDIA_URL, filename), + 'url': '{0}{1}download/{2}'.format(settings.SITE_URL, + settings.MEDIA_URL, filename), 'norad': norad } message = render_to_string(template, {'data': data}) diff --git a/db/base/urls.py b/db/base/urls.py index c1886f9..6f31f02 100644 --- a/db/base/urls.py +++ b/db/base/urls.py @@ -8,7 +8,10 @@ base_urlpatterns = ([ url(r'^about/$', views.about, name='about'), url(r'^faq/$', views.faq, name='faq'), url(r'^satellite/(?P[0-9]+)/$', views.satellite, name='satellite'), - url(r'^frames/(?P[0-9]+)/$', views.request_export, name='request_export'), + url(r'^frames/(?P[0-9]+)/$', views.request_export, + name='request_export_all'), + url(r'^frames/(?P[0-9]+)/(?P[0-9]+)/$', views.request_export, + name='request_export'), url(r'^satellite_position/(?P[0-9]+)/$', views.satellite_position, name='satellite_position'), url(r'^suggestion/$', views.suggestion, name='suggestion'), diff --git a/db/base/views.py b/db/base/views.py index ea1a046..0825d59 100644 --- a/db/base/views.py +++ b/db/base/views.py @@ -111,9 +111,9 @@ def satellite(request, norad): @login_required -def request_export(request, norad): +def request_export(request, norad, period=None): """View to request frames export download.""" - export_frames.delay(norad, request.user.email, request.user.pk) + export_frames.delay(norad, request.user.email, request.user.pk, period) messages.success(request, ('Your download request was received. ' 'You will get an email when it\'s ready')) return redirect(reverse('satellite', kwargs={'norad': norad})) diff --git a/db/settings.py b/db/settings.py index 6d44383..7898886 100644 --- a/db/settings.py +++ b/db/settings.py @@ -22,6 +22,7 @@ THIRD_PARTY_APPS = ( 'avatar', 'rest_framework', 'rest_framework.authtoken', + 'django_filters', 'allauth', 'allauth.account', 'crispy_forms', diff --git a/db/templates/base/satellite.html b/db/templates/base/satellite.html index c8b3ff5..8ad1d72 100644 --- a/db/templates/base/satellite.html +++ b/db/templates/base/satellite.html @@ -272,13 +272,13 @@ - + + + {% comment %} + {% if satellite.telemetry_data.count %} + {% endcomment %} + +