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'),
 ]