From 16ff876d38967288e2b81b8566cbeb0b8095e29d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Wed, 3 Jun 2020 17:20:03 +0200 Subject: [PATCH] POST with serial # --- .gitignore | 2 ++ arduino/tempLightSensor/tempLightSensor.ino | 2 +- freedcs/api/models.py | 18 ++++++++---------- freedcs/freedcs/settings.py | 2 ++ freedcs/telemetry/serializers.py | 16 +++++----------- freedcs/telemetry/tests/sample.json | 3 ++- 6 files changed, 20 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index b6e4761..9dd28e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +*.swp + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/arduino/tempLightSensor/tempLightSensor.ino b/arduino/tempLightSensor/tempLightSensor.ino index 9bde4c4..65c203d 100644 --- a/arduino/tempLightSensor/tempLightSensor.ino +++ b/arduino/tempLightSensor/tempLightSensor.ino @@ -80,7 +80,7 @@ void setup(void) { Serial.println("DEBUG: clock updated via NTP."); #endif - json["device"] = 1; // FIXME + json["device"] = serial; // payload["id"] = serverName; } diff --git a/freedcs/api/models.py b/freedcs/api/models.py index 650907f..aaab60e 100644 --- a/freedcs/api/models.py +++ b/freedcs/api/models.py @@ -1,18 +1,16 @@ from django.db import models +from django.conf import settings from django.core.exceptions import ValidationError def device_validation(value): - if value.startswith('ZZ'): # simulated devices - published_devices = WhiteList.objects.filter( - serial='ZZ%', - is_published=True - ) - else: - published_devices = WhiteList.objects.filter( - serial=value, - is_published=True - ) + if settings.SKIP_WHITELIST and settings.DEBUG: + return # skip validation in debug mode when SKIP_WHITELIST is True + + published_devices = WhiteList.objects.filter( + serial=value, + is_published=True + ) if not published_devices: raise ValidationError("Device is not published") diff --git a/freedcs/freedcs/settings.py b/freedcs/freedcs/settings.py index ff87f36..17d4151 100644 --- a/freedcs/freedcs/settings.py +++ b/freedcs/freedcs/settings.py @@ -125,3 +125,5 @@ USE_TZ = True # https://docs.djangoproject.com/en/3.0/howto/static-files/ STATIC_URL = '/static/' + +SKIP_WHITELIST = True diff --git a/freedcs/telemetry/serializers.py b/freedcs/telemetry/serializers.py index 5bd8ab7..2149af4 100644 --- a/freedcs/telemetry/serializers.py +++ b/freedcs/telemetry/serializers.py @@ -1,20 +1,14 @@ from rest_framework import serializers -from api.serializers import DeviceSerializer +from api.models import Device from telemetry.models import Telemetry class TelemetrySerializer(serializers.ModelSerializer): - # device = DeviceSerializer(read_only=True) - - def validate(self, data): - return data + device = serializers.SlugRelatedField( + slug_field='serial', + queryset=Device.objects.all() + ) class Meta: model = Telemetry fields = ('time', 'device', 'clock', 'payload',) - - -# class WhiteListSerializer(serializers.ModelSerializer): -# class Meta: -# model = Device -# fields = ('serial', 'creation_time', 'updated_time',) diff --git a/freedcs/telemetry/tests/sample.json b/freedcs/telemetry/tests/sample.json index 2cf3097..fff12b8 100644 --- a/freedcs/telemetry/tests/sample.json +++ b/freedcs/telemetry/tests/sample.json @@ -1,4 +1,5 @@ -{"device": 1, +{"device": "abcde1234", + "clock": 1591194712, "payload": { "id": "sensor.server.domain", "light": 434,