Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions sensorsafrica/api/v1/filters.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,30 @@
import django_filters
from django.db import models

from feinstaub.sensors.models import Node
from feinstaub.sensors.models import Node, SensorData

class NodeFilter(django_filters.FilterSet):
class Meta:
model = Node
fields = {"location__country": ["exact"]}
fields = {
"location__country": ["exact"],
"last_notify": ["exact", "gte", "lte"]}
filter_overrides = {
models.DateTimeField: {
'filter_class': django_filters.IsoDateTimeFilter,
},
}


class SensorFilter(django_filters.FilterSet):
class Meta:
model = SensorData
fields = {
"sensor": ["exact"],
"timestamp": ["exact", "gte", "lte"]
}
filter_overrides = {
models.DateTimeField: {
'filter_class': django_filters.IsoDateTimeFilter,
},
}
5 changes: 3 additions & 2 deletions sensorsafrica/api/v1/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
NodeView,
NowView,
PostSensorDataView,
SensorDataView as SensorsAfricaSensorDataView,
SensorsAfricaSensorDataView,
VerboseSensorDataView,
)

from rest_framework import routers
Expand All @@ -20,7 +21,7 @@
router.register(r"push-sensor-data", PostSensorDataView)
router.register(r"node", NodeView)
router.register(r"sensor", SensorView)
router.register(r"data", SensorDataView)
router.register(r"data", VerboseSensorDataView)
router.register(r"statistics", StatisticsView, basename="statistics")
router.register(r"now", NowView)
router.register(r"user", UsersView)
Expand Down
9 changes: 6 additions & 3 deletions sensorsafrica/api/v1/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@

from feinstaub.sensors.models import Node, SensorData
from feinstaub.sensors.serializers import NowSerializer
from feinstaub.sensors.views import StandardResultsSetPagination
from feinstaub.sensors.views import SensorDataView, StandardResultsSetPagination
from feinstaub.sensors.authentication import NodeUidAuthentication

from .filters import NodeFilter
from .filters import NodeFilter, SensorFilter
from .serializers import LastNotifySensorDataSerializer, NodeSerializer, SensorDataSerializer

class FilterView(mixins.ListModelMixin, viewsets.GenericViewSet):
Expand Down Expand Up @@ -94,7 +94,10 @@ class PostSensorDataView(mixins.CreateModelMixin,
queryset = SensorData.objects.all()


class SensorDataView(mixins.ListModelMixin, viewsets.GenericViewSet):
class VerboseSensorDataView(SensorDataView):
filter_class = SensorFilter

class SensorsAfricaSensorDataView(mixins.ListModelMixin, viewsets.GenericViewSet):
serializer_class = SensorDataSerializer

def get_queryset(self):
Expand Down