mirror of
https://github.com/Screenly/Anthias.git
synced 2026-04-21 06:58:02 -04:00
128 lines
4.1 KiB
Python
128 lines
4.1 KiB
Python
from django.utils import timezone
|
|
from drf_spectacular.utils import OpenApiTypes, extend_schema_field
|
|
from rest_framework.serializers import (
|
|
BooleanField,
|
|
CharField,
|
|
ChoiceField,
|
|
DateTimeField,
|
|
IntegerField,
|
|
ModelSerializer,
|
|
Serializer,
|
|
SerializerMethodField,
|
|
)
|
|
|
|
from anthias_app.models import Asset
|
|
from api.serializers import UpdateAssetSerializer
|
|
from api.serializers.mixins import CreateAssetSerializerMixin
|
|
|
|
|
|
class AssetSerializerV2(ModelSerializer, CreateAssetSerializerMixin):
|
|
is_active = SerializerMethodField()
|
|
|
|
@extend_schema_field(OpenApiTypes.BOOL)
|
|
def get_is_active(self, obj):
|
|
return obj.is_active()
|
|
|
|
class Meta:
|
|
model = Asset
|
|
fields = [
|
|
'asset_id',
|
|
'name',
|
|
'uri',
|
|
'start_date',
|
|
'end_date',
|
|
'duration',
|
|
'mimetype',
|
|
'is_enabled',
|
|
'nocache',
|
|
'play_order',
|
|
'skip_asset_check',
|
|
'is_active',
|
|
'is_processing',
|
|
]
|
|
|
|
|
|
class CreateAssetSerializerV2(Serializer, CreateAssetSerializerMixin):
|
|
def __init__(self, *args, unique_name=False, **kwargs):
|
|
self.unique_name = unique_name
|
|
super().__init__(*args, **kwargs)
|
|
|
|
asset_id = CharField(read_only=True)
|
|
ext = CharField(write_only=True, required=False)
|
|
name = CharField()
|
|
uri = CharField()
|
|
start_date = DateTimeField(default_timezone=timezone.utc)
|
|
end_date = DateTimeField(default_timezone=timezone.utc)
|
|
duration = IntegerField()
|
|
mimetype = CharField()
|
|
is_enabled = BooleanField()
|
|
is_processing = BooleanField(required=False)
|
|
nocache = BooleanField(required=False)
|
|
play_order = IntegerField(required=False)
|
|
skip_asset_check = BooleanField(required=False)
|
|
|
|
def validate(self, data):
|
|
return self.prepare_asset(data, version='v2')
|
|
|
|
|
|
class UpdateAssetSerializerV2(UpdateAssetSerializer):
|
|
is_enabled = BooleanField()
|
|
is_processing = BooleanField(required=False)
|
|
nocache = BooleanField(required=False)
|
|
skip_asset_check = BooleanField(required=False)
|
|
duration = IntegerField()
|
|
|
|
|
|
class DeviceSettingsSerializerV2(Serializer):
|
|
player_name = CharField()
|
|
audio_output = CharField()
|
|
default_duration = IntegerField()
|
|
default_streaming_duration = IntegerField()
|
|
date_format = CharField()
|
|
auth_backend = CharField()
|
|
show_splash = BooleanField()
|
|
default_assets = BooleanField()
|
|
shuffle_playlist = BooleanField()
|
|
use_24_hour_clock = BooleanField()
|
|
debug_logging = BooleanField()
|
|
username = CharField()
|
|
|
|
|
|
class UpdateDeviceSettingsSerializerV2(Serializer):
|
|
player_name = CharField(required=False, allow_blank=True)
|
|
audio_output = CharField(required=False)
|
|
default_duration = IntegerField(required=False)
|
|
default_streaming_duration = IntegerField(required=False)
|
|
date_format = CharField(required=False)
|
|
show_splash = BooleanField(required=False)
|
|
default_assets = BooleanField(required=False)
|
|
shuffle_playlist = BooleanField(required=False)
|
|
use_24_hour_clock = BooleanField(required=False)
|
|
debug_logging = BooleanField(required=False)
|
|
username = CharField(required=False, allow_blank=True)
|
|
password = CharField(required=False, allow_blank=True)
|
|
password_2 = CharField(required=False, allow_blank=True)
|
|
auth_backend = ChoiceField(
|
|
required=False,
|
|
allow_blank=True,
|
|
choices=[
|
|
('', 'No authentication'),
|
|
('auth_basic', 'Basic authentication'),
|
|
],
|
|
)
|
|
current_password = CharField(required=False, allow_blank=True)
|
|
|
|
|
|
class IntegrationsSerializerV2(Serializer):
|
|
is_balena = BooleanField()
|
|
balena_device_id = CharField(required=False, allow_null=True)
|
|
balena_app_id = CharField(required=False, allow_null=True)
|
|
balena_app_name = CharField(required=False, allow_null=True)
|
|
balena_supervisor_version = CharField(required=False, allow_null=True)
|
|
balena_host_os_version = CharField(required=False, allow_null=True)
|
|
balena_device_name_at_init = CharField(
|
|
required=False,
|
|
allow_null=True,
|
|
allow_blank=True,
|
|
)
|