56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
|
|
from rest_framework import serializers
|
||
|
|
|
||
|
|
from drf_spectacular.types import OpenApiTypes
|
||
|
|
from drf_spectacular.utils import OpenApiParameter, inline_serializer
|
||
|
|
|
||
|
|
|
||
|
|
FARM_UUID_DEFAULT = "11111111-1111-1111-1111-111111111111"
|
||
|
|
|
||
|
|
|
||
|
|
class AuthTokenSerializer(serializers.Serializer):
|
||
|
|
token = serializers.CharField()
|
||
|
|
|
||
|
|
|
||
|
|
def code_response(name, data=None, token=False, extra_fields=None):
|
||
|
|
fields = {
|
||
|
|
"code": serializers.IntegerField(),
|
||
|
|
"msg": serializers.CharField(),
|
||
|
|
}
|
||
|
|
if data is not None:
|
||
|
|
fields["data"] = data
|
||
|
|
if token:
|
||
|
|
fields["token"] = serializers.CharField()
|
||
|
|
if extra_fields:
|
||
|
|
fields.update(extra_fields)
|
||
|
|
return inline_serializer(name=name, fields=fields)
|
||
|
|
|
||
|
|
|
||
|
|
def status_response(name, data=None):
|
||
|
|
fields = {
|
||
|
|
"status": serializers.CharField(default="success"),
|
||
|
|
}
|
||
|
|
if data is not None:
|
||
|
|
fields["data"] = data
|
||
|
|
return inline_serializer(name=name, fields=fields)
|
||
|
|
|
||
|
|
|
||
|
|
def farm_uuid_query_param(required=False, description="UUID of the farm."):
|
||
|
|
return OpenApiParameter(
|
||
|
|
name="farm_uuid",
|
||
|
|
type=OpenApiTypes.UUID,
|
||
|
|
location=OpenApiParameter.QUERY,
|
||
|
|
required=required,
|
||
|
|
description=description,
|
||
|
|
default=FARM_UUID_DEFAULT,
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def sensor_uuid_query_param(required=False, description="Optional sensor UUID."):
|
||
|
|
return OpenApiParameter(
|
||
|
|
name="sensor_uuid",
|
||
|
|
type=OpenApiTypes.UUID,
|
||
|
|
location=OpenApiParameter.QUERY,
|
||
|
|
required=required,
|
||
|
|
description=description,
|
||
|
|
)
|