Introduce REST endpoints for radio version models
Issue: HIC-141
Change-Id: Id8ca50dda82d2a4854e8987c69ccc847ced4de71
diff --git a/crashreport_stats/rest_endpoints.py b/crashreport_stats/rest_endpoints.py
index 4a84aa1..f9a8244 100644
--- a/crashreport_stats/rest_endpoints.py
+++ b/crashreport_stats/rest_endpoints.py
@@ -163,3 +163,50 @@
'version__is_beta_release',
)
serializer_class = VersionDailySerializer
+
+
+class RadioVersionSerializer(_VersionStatsSerializer):
+ class Meta:
+ model = RadioVersion
+ fields = '__all__'
+
+class RadioVersionFilter(_VersionStatsFilter):
+ class Meta:
+ model = RadioVersion
+ fields = '__all__'
+
+class RadioVersionListView(_VersionStatsListView):
+ queryset = RadioVersion.objects.all().order_by('-heartbeats')
+ serializer_class = RadioVersionSerializer
+ filter_class = RadioVersionFilter
+
+class RadioVersionDailyFilter(_DailyVersionStatsFilter):
+ version__radio_version = django_filters.CharFilter()
+ version__is_official_release = django_filters.BooleanFilter()
+ version__is_beta_release = django_filters.BooleanFilter()
+
+ class Meta:
+ model = RadioVersionDaily
+ fields = '__all__'
+
+class RadioVersionDailySerializer(_DailyVersionStatsSerializer):
+ radio_version = serializers.CharField()
+
+ class Meta:
+ model = RadioVersionDaily
+ fields = '__all__'
+
+class RadioVersionDailyListView(_DailyVersionStatsListView):
+ queryset = (
+ RadioVersionDaily.objects
+ .annotate(radio_version=F('version__radio_version'))
+ .all()
+ .order_by('date')
+ )
+ filter_class = RadioVersionDailyFilter
+ filter_fields = (
+ 'version__radio_version',
+ 'version__is_official_release',
+ 'version__is_beta_release',
+ )
+ serializer_class = RadioVersionDailySerializer
diff --git a/crashreport_stats/urls.py b/crashreport_stats/urls.py
index 69820fe..54c70db 100644
--- a/crashreport_stats/urls.py
+++ b/crashreport_stats/urls.py
@@ -32,12 +32,18 @@
url(r'^api/v1/logfile_download/(?P<id>[0-9]+)/$',
rest_endpoints.LogFileDownload.as_view(),
name='hiccup_stats_api_v1_logfile_download'),
-
+
url(r'^api/v1/versions/$',
rest_endpoints.VersionListView.as_view(),
name='hiccup_stats_api_v1_versions'),
-
url(r'^api/v1/version_daily/$',
rest_endpoints.VersionDailyListView.as_view(),
name='hiccup_stats_api_v1_version_daily'),
+
+ url(r'^api/v1/radio_versions/$',
+ rest_endpoints.RadioVersionListView.as_view(),
+ name='hiccup_stats_api_v1_radio_versions'),
+ url(r'^api/v1/radio_version_daily/$',
+ rest_endpoints.RadioVersionDailyListView.as_view(),
+ name='hiccup_stats_api_v1_radio_version_daily'),
]