1
0
Fork 0

Merge pull request #55 from satnogs/api

First API iteration
merge-requests/63/head
Pierros Papadeas 2014-10-25 20:12:37 +01:00
commit 0a077979bf
7 changed files with 127 additions and 9 deletions

View File

View File

@ -0,0 +1,51 @@
from django.conf import settings
from django.contrib.sites.models import Site
from rest_framework import serializers
from base.models import (Antenna, Data, Observation, Satellite, Station,
Transponder)
class AntennaSerializer(serializers.ModelSerializer):
class Meta:
model = Antenna
fields = ('frequency', 'band', 'antenna_type')
class StationSerializer(serializers.ModelSerializer):
class Meta:
model = Station
fields = ('owner', 'name', 'image', 'alt', 'lat', 'lng',
'antenna', 'featured', 'featured_date')
image = serializers.SerializerMethodField('image_url')
def image_url(self, obj):
site = Site.objects.get_current()
return '{}{}{}'.format(site, settings.MEDIA_URL, obj.image)
class SatelliteSerializer(serializers.ModelSerializer):
class Meta:
model = Satellite
fields = ('norad_cat_id', 'name')
class TransponderSerializer(serializers.ModelSerializer):
class Meta:
model = Transponder
fields = ('description', 'alive', 'uplink_low', 'uplink_high',
'downlink_low', 'downlink_high', 'mode', 'invert',
'baud', 'satellite')
class ObservationSerializer(serializers.ModelSerializer):
class Meta:
model = Observation
fields = ('satellite', 'transponder', 'author', 'start', 'end')
class DataSerializer(serializers.ModelSerializer):
class Meta:
model = Data
fields = ('start', 'end', 'observation', 'ground_station', 'payload')

View File

@ -0,0 +1,19 @@
from django.conf.urls import patterns, url, include
from rest_framework import routers
from base.api import views
router = routers.DefaultRouter()
router.register(r'antennas', views.AntennaView)
router.register(r'data', views.DataView)
router.register(r'observations', views.ObservationView)
router.register(r'satellites', views.SatelliteView)
router.register(r'stations', views.StationView)
router.register(r'transponders', views.TransponderView)
urlpatterns = patterns(
'',
url(r'^', include(router.urls))
)

View File

@ -0,0 +1,35 @@
from rest_framework import viewsets
from base.api import serializers
from base.models import (Antenna, Data, Observation, Satellite, Station,
Transponder)
class AntennaView(viewsets.ModelViewSet):
queryset = Antenna.objects.all()
serializer_class = serializers.AntennaSerializer
class StationView(viewsets.ModelViewSet):
queryset = Station.objects.all()
serializer_class = serializers.StationSerializer
class SatelliteView(viewsets.ModelViewSet):
queryset = Satellite.objects.all()
serializer_class = serializers.SatelliteSerializer
class TransponderView(viewsets.ModelViewSet):
queryset = Transponder.objects.all()
serializer_class = serializers.TransponderSerializer
class ObservationView(viewsets.ModelViewSet):
queryset = Observation.objects.all()
serializer_class = serializers.ObservationSerializer
class DataView(viewsets.ModelViewSet):
queryset = Data.objects.all()
serializer_class = serializers.DataSerializer

View File

@ -39,6 +39,7 @@ class Common(Configuration):
THIRD_PARTY_APPS = (
'crispy_forms', # Form layouts
'avatar', # for user avatars
'rest_framework'
)
# Apps specific for this project go here.
@ -264,4 +265,10 @@ class Common(Configuration):
}
# END LOGGING CONFIGURATION
# Your common stuff: Below this line define 3rd party libary settings
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
]
}

View File

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.conf import settings
@ -7,8 +6,10 @@ from django.conf.urls.static import static
from django.views.generic import TemplateView
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns(
'',
url(r'^$', 'base.views.index', name='home'),
@ -17,20 +18,20 @@ urlpatterns = patterns(
# Observations
url(r'^o/(?P<id>[0-9]+)/$',
'base.views.view_observation', name='observations_view_observation'),
url(r'^observations/$', 'base.views.observations_list', name='observations'),
url(r'^observations/$', 'base.views.observations_list',
name='observations'),
url(r'^about/$',
TemplateView.as_view(template_name='base/about.html'),
name='about'),
url(r'^stations/$',
TemplateView.as_view(template_name='base/stations.html'),
name='stations'),
url(r'^admin/', include(admin.site.urls)),
url(r'^users/', include('users.urls', namespace='users')),
url(r'^accounts/', include('allauth.urls')),
url(r'^avatar/', include('avatar.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
url(r'^api/', include('base.api.urls'))
)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@ -27,4 +27,9 @@ django-autoslug==1.7.2
-e git+https://github.com/comzeradd/django-avatar.git@gravatar_https#egg=avatar
# Astronomy
orbit==0.2
orbit==0.2
# Django REST framework
djangorestframework
markdown
django-filter