logs-collector/logs_collector/collector/api/serializers.py

61 lines
1.5 KiB
Python
Raw Normal View History

2023-08-08 13:42:57 +08:00
from rest_framework import serializers
2023-08-12 01:32:31 +08:00
from drf_spectacular.utils import extend_schema_field
from drf_spectacular.openapi import OpenApiTypes
from collector.models import Archive, Platform, Ticket
2023-08-08 13:42:57 +08:00
2023-08-12 01:32:31 +08:00
@extend_schema_field(OpenApiTypes.NUMBER)
2023-08-11 09:38:47 +08:00
class TimestampField(serializers.Field):
2023-08-12 01:32:31 +08:00
def to_representation(self, value) -> int:
2023-08-11 09:38:47 +08:00
return value.timestamp()
2023-08-12 01:32:31 +08:00
@extend_schema_field(OpenApiTypes.NUMBER)
2023-08-11 09:38:47 +08:00
class JsTimestampField(serializers.Field):
2023-08-12 01:32:31 +08:00
def to_representation(self, value) -> int:
2023-08-11 09:38:47 +08:00
return round(value.timestamp()*1000)
2023-08-08 13:42:57 +08:00
2023-08-11 09:38:47 +08:00
class PublicArchiveUploadSerializer(serializers.ModelSerializer):
2023-08-08 13:42:57 +08:00
class Meta:
model = Archive
fields = ['file', 'ticket']
2023-08-11 09:38:47 +08:00
class ArchiveSerializer(serializers.ModelSerializer):
time_create = JsTimestampField(read_only=True)
class Meta:
model = Archive
fields = ['id', 'file', 'ticket', 'time_create']
class PlatformSerializer(serializers.ModelSerializer):
class Meta:
model = Platform
fields = ['id', 'name', 'pretty_name']
class TicketSerializer(serializers.ModelSerializer):
time_create = JsTimestampField(read_only=True)
time_update = JsTimestampField(read_only=True)
token = serializers.UUIDField(read_only=True)
user = serializers.ReadOnlyField(source='user.username')
class Meta:
model = Ticket
fields = [
'id',
'number',
'resolved',
'token',
'attempts',
'platform',
'time_create',
'time_update',
'user'
]