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
|
|
|
|
|
2023-08-15 12:00:24 +08:00
|
|
|
from collector.models import Archive, Platform, Ticket
|
2023-08-08 13:42:57 +08:00
|
|
|
|
|
|
|
|
2023-09-08 15:02:34 +08:00
|
|
|
@extend_schema_field(OpenApiTypes.INT)
|
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-09-08 15:02:34 +08:00
|
|
|
@extend_schema_field(OpenApiTypes.INT)
|
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-16 23:53:13 +08:00
|
|
|
|
2023-08-08 13:42:57 +08:00
|
|
|
class Meta:
|
|
|
|
model = Archive
|
2023-08-08 15:25:12 +08:00
|
|
|
fields = ['file', 'ticket']
|
2023-08-11 09:38:47 +08:00
|
|
|
|
|
|
|
|
|
|
|
class ArchiveSerializer(serializers.ModelSerializer):
|
2023-09-08 15:02:34 +08:00
|
|
|
time_create = serializers.DateTimeField(read_only=True)
|
2023-08-11 09:38:47 +08:00
|
|
|
|
|
|
|
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):
|
2023-09-08 15:02:34 +08:00
|
|
|
time_create = serializers.DateTimeField(read_only=True)
|
|
|
|
time_update = serializers.DateTimeField(read_only=True)
|
2023-08-11 09:38:47 +08:00
|
|
|
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'
|
|
|
|
]
|
2023-09-08 15:02:34 +08:00
|
|
|
|
|
|
|
|
|
|
|
class StorageInfoSerializer(serializers.Serializer):
|
|
|
|
total = serializers.IntegerField(read_only=True)
|
|
|
|
used = serializers.IntegerField(read_only=True)
|
|
|
|
free = serializers.IntegerField(read_only=True)
|
|
|
|
used_percent = serializers.IntegerField(read_only=True)
|
2023-09-11 12:53:03 +08:00
|
|
|
status = serializers.CharField(read_only=True)
|