1
0
Fork 0

Add API endpoint for TLE

Signed-off-by: Alfredos-Panagiotis Damkalis <fredy@fredy.gr>
spacecruft
Alfredos-Panagiotis Damkalis 2020-08-03 14:21:58 +03:00
parent e2b916f3ed
commit e1b859887f
4 changed files with 39 additions and 3 deletions

View File

@ -3,7 +3,8 @@ import django_filters
from django_filters import rest_framework as filters
from django_filters.rest_framework import FilterSet
from db.base.models import Artifact, DemodData, Mode, Satellite, Transmitter
from db.base.models import Artifact, DemodData, Mode, Satellite, Tle, \
Transmitter
class TransmitterViewFilter(FilterSet):
@ -56,6 +57,17 @@ class TelemetryViewFilter(FilterSet):
fields = ['satellite', 'app_source', 'observer', 'transmitter']
class TleViewFilter(FilterSet):
"""SatNOGS DB Tle API View Filter"""
norad_cat_id = django_filters.NumberFilter(
field_name='satellite__norad_cat_id', lookup_expr='exact'
)
class Meta:
model = Tle
fields = ['norad_cat_id']
class ArtifactViewFilter(FilterSet):
"""SatNOGS DB Artifact API View Filter"""
class Meta:

View File

@ -5,7 +5,7 @@ import h5py
from rest_framework import serializers
from db.base.models import TRANSMITTER_STATUS, Artifact, DemodData, Mode, \
Satellite, Telemetry, Transmitter
Satellite, Telemetry, Tle, Transmitter
class ModeSerializer(serializers.ModelSerializer):
@ -90,6 +90,20 @@ class TransmitterSerializer(serializers.ModelSerializer):
return obj.satellite.norad_cat_id
class TleSerializer(serializers.ModelSerializer):
"""SatNOGS DB Tle API Serializer"""
norad_cat_id = serializers.SerializerMethodField()
class Meta:
model = Tle
fields = ('tle0', 'tle1', 'tle2', 'tle_source', 'norad_cat_id', 'updated')
def get_norad_cat_id(self, obj):
"""Returns Satellite NORAD ID"""
return obj.satellite.norad_cat_id
class TelemetrySerializer(serializers.ModelSerializer):
"""SatNOGS DB Telemetry API Serializer"""
norad_cat_id = serializers.SerializerMethodField()

View File

@ -10,5 +10,6 @@ ROUTER.register(r'modes', views.ModeView)
ROUTER.register(r'satellites', views.SatelliteView)
ROUTER.register(r'transmitters', views.TransmitterView)
ROUTER.register(r'telemetry', views.TelemetryView)
ROUTER.register(r'tle', views.TleView)
API_URLPATTERNS = ROUTER.urls

View File

@ -11,7 +11,8 @@ from rest_framework.serializers import ValidationError
from db.api import filters, pagination, serializers
from db.api.perms import SafeMethodsWithPermission
from db.api.renderers import BrowserableJSONLDRenderer, JSONLDRenderer
from db.base.models import Artifact, DemodData, Mode, Satellite, Transmitter
from db.base.models import Artifact, DemodData, LatestTle, Mode, Satellite, \
Transmitter
from db.base.tasks import update_satellite
@ -46,6 +47,14 @@ class TransmitterView(viewsets.ReadOnlyModelViewSet): # pylint: disable=R0901
lookup_field = 'uuid'
class TleView(viewsets.ReadOnlyModelViewSet): # pylint: disable=R0901
"""SatNOGS DB Tle API view class"""
renderer_classes = [JSONRenderer]
queryset = LatestTle.objects.all()
serializer_class = serializers.TleSerializer
filterset_class = filters.TleViewFilter
class TelemetryView( # pylint: disable=R0901
mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.CreateModelMixin,
viewsets.GenericViewSet):