diff --git a/api/libretime_api/core/serializers/auth.py b/api/libretime_api/core/serializers/auth.py index be12c7100..fdf2350bd 100644 --- a/api/libretime_api/core/serializers/auth.py +++ b/api/libretime_api/core/serializers/auth.py @@ -3,13 +3,13 @@ from rest_framework import serializers from ..models import LoginAttempt, UserToken -class UserTokenSerializer(serializers.HyperlinkedModelSerializer): +class UserTokenSerializer(serializers.ModelSerializer): class Meta: model = UserToken fields = "__all__" -class LoginAttemptSerializer(serializers.HyperlinkedModelSerializer): +class LoginAttemptSerializer(serializers.ModelSerializer): class Meta: model = LoginAttempt fields = "__all__" diff --git a/api/libretime_api/core/serializers/preference.py b/api/libretime_api/core/serializers/preference.py index adf175eed..422a0bf23 100644 --- a/api/libretime_api/core/serializers/preference.py +++ b/api/libretime_api/core/serializers/preference.py @@ -3,13 +3,13 @@ from rest_framework import serializers from ..models import Preference, StreamSetting -class PreferenceSerializer(serializers.HyperlinkedModelSerializer): +class PreferenceSerializer(serializers.ModelSerializer): class Meta: model = Preference fields = "__all__" -class StreamSettingSerializer(serializers.HyperlinkedModelSerializer): +class StreamSettingSerializer(serializers.ModelSerializer): class Meta: model = StreamSetting fields = "__all__" diff --git a/api/libretime_api/core/serializers/service.py b/api/libretime_api/core/serializers/service.py index cd02e19f8..2a4e8a50a 100644 --- a/api/libretime_api/core/serializers/service.py +++ b/api/libretime_api/core/serializers/service.py @@ -3,7 +3,7 @@ from rest_framework import serializers from ..models import ServiceRegister -class ServiceRegisterSerializer(serializers.HyperlinkedModelSerializer): +class ServiceRegisterSerializer(serializers.ModelSerializer): class Meta: model = ServiceRegister fields = "__all__" diff --git a/api/libretime_api/core/serializers/user.py b/api/libretime_api/core/serializers/user.py index c8ddb4e30..ee7ea8b8f 100644 --- a/api/libretime_api/core/serializers/user.py +++ b/api/libretime_api/core/serializers/user.py @@ -2,11 +2,11 @@ from django.contrib.auth import get_user_model from rest_framework import serializers -class UserSerializer(serializers.HyperlinkedModelSerializer): +class UserSerializer(serializers.ModelSerializer): class Meta: model = get_user_model() fields = [ - "item_url", + "id", "role", "username", "email", diff --git a/api/libretime_api/core/serializers/worker.py b/api/libretime_api/core/serializers/worker.py index e365bb3d5..c491d6a26 100644 --- a/api/libretime_api/core/serializers/worker.py +++ b/api/libretime_api/core/serializers/worker.py @@ -3,13 +3,13 @@ from rest_framework import serializers from ..models import CeleryTask, ThirdPartyTrackReference -class ThirdPartyTrackReferenceSerializer(serializers.HyperlinkedModelSerializer): +class ThirdPartyTrackReferenceSerializer(serializers.ModelSerializer): class Meta: model = ThirdPartyTrackReference fields = "__all__" -class CeleryTaskSerializer(serializers.HyperlinkedModelSerializer): +class CeleryTaskSerializer(serializers.ModelSerializer): class Meta: model = CeleryTask fields = "__all__" diff --git a/api/libretime_api/history/serializers/listener.py b/api/libretime_api/history/serializers/listener.py index cdd2f8a84..3b08756bc 100644 --- a/api/libretime_api/history/serializers/listener.py +++ b/api/libretime_api/history/serializers/listener.py @@ -3,19 +3,19 @@ from rest_framework import serializers from ..models import ListenerCount, MountName, Timestamp -class MountNameSerializer(serializers.HyperlinkedModelSerializer): +class MountNameSerializer(serializers.ModelSerializer): class Meta: model = MountName fields = "__all__" -class TimestampSerializer(serializers.HyperlinkedModelSerializer): +class TimestampSerializer(serializers.ModelSerializer): class Meta: model = Timestamp fields = "__all__" -class ListenerCountSerializer(serializers.HyperlinkedModelSerializer): +class ListenerCountSerializer(serializers.ModelSerializer): class Meta: model = ListenerCount fields = "__all__" diff --git a/api/libretime_api/history/serializers/live.py b/api/libretime_api/history/serializers/live.py index 2668219e0..dc90e4846 100644 --- a/api/libretime_api/history/serializers/live.py +++ b/api/libretime_api/history/serializers/live.py @@ -3,7 +3,7 @@ from rest_framework import serializers from ..models import LiveLog -class LiveLogSerializer(serializers.HyperlinkedModelSerializer): +class LiveLogSerializer(serializers.ModelSerializer): class Meta: model = LiveLog fields = "__all__" diff --git a/api/libretime_api/history/serializers/played.py b/api/libretime_api/history/serializers/played.py index 66f771c48..0fbae009f 100644 --- a/api/libretime_api/history/serializers/played.py +++ b/api/libretime_api/history/serializers/played.py @@ -8,25 +8,25 @@ from ..models import ( ) -class PlayoutHistorySerializer(serializers.HyperlinkedModelSerializer): +class PlayoutHistorySerializer(serializers.ModelSerializer): class Meta: model = PlayoutHistory fields = "__all__" -class PlayoutHistoryMetadataSerializer(serializers.HyperlinkedModelSerializer): +class PlayoutHistoryMetadataSerializer(serializers.ModelSerializer): class Meta: model = PlayoutHistoryMetadata fields = "__all__" -class PlayoutHistoryTemplateSerializer(serializers.HyperlinkedModelSerializer): +class PlayoutHistoryTemplateSerializer(serializers.ModelSerializer): class Meta: model = PlayoutHistoryTemplate fields = "__all__" -class PlayoutHistoryTemplateFieldSerializer(serializers.HyperlinkedModelSerializer): +class PlayoutHistoryTemplateFieldSerializer(serializers.ModelSerializer): class Meta: model = PlayoutHistoryTemplateField fields = "__all__" diff --git a/api/libretime_api/podcasts/serializers/podcast.py b/api/libretime_api/podcasts/serializers/podcast.py index 8d9e7b85d..6e47c17d8 100644 --- a/api/libretime_api/podcasts/serializers/podcast.py +++ b/api/libretime_api/podcasts/serializers/podcast.py @@ -3,25 +3,25 @@ from rest_framework import serializers from ..models import ImportedPodcast, Podcast, PodcastEpisode, StationPodcast -class PodcastSerializer(serializers.HyperlinkedModelSerializer): +class PodcastSerializer(serializers.ModelSerializer): class Meta: model = Podcast fields = "__all__" -class PodcastEpisodeSerializer(serializers.HyperlinkedModelSerializer): +class PodcastEpisodeSerializer(serializers.ModelSerializer): class Meta: model = PodcastEpisode fields = "__all__" -class StationPodcastSerializer(serializers.HyperlinkedModelSerializer): +class StationPodcastSerializer(serializers.ModelSerializer): class Meta: model = StationPodcast fields = "__all__" -class ImportedPodcastSerializer(serializers.HyperlinkedModelSerializer): +class ImportedPodcastSerializer(serializers.ModelSerializer): class Meta: model = ImportedPodcast fields = "__all__" diff --git a/api/libretime_api/schedule/serializers/playlist.py b/api/libretime_api/schedule/serializers/playlist.py index f8fd3ae4e..200ace275 100644 --- a/api/libretime_api/schedule/serializers/playlist.py +++ b/api/libretime_api/schedule/serializers/playlist.py @@ -3,13 +3,13 @@ from rest_framework import serializers from ..models import Playlist, PlaylistContent -class PlaylistSerializer(serializers.HyperlinkedModelSerializer): +class PlaylistSerializer(serializers.ModelSerializer): class Meta: model = Playlist fields = "__all__" -class PlaylistContentSerializer(serializers.HyperlinkedModelSerializer): +class PlaylistContentSerializer(serializers.ModelSerializer): class Meta: model = PlaylistContent fields = "__all__" diff --git a/api/libretime_api/schedule/serializers/schedule.py b/api/libretime_api/schedule/serializers/schedule.py index 967424c0c..56ff5b17d 100644 --- a/api/libretime_api/schedule/serializers/schedule.py +++ b/api/libretime_api/schedule/serializers/schedule.py @@ -3,34 +3,10 @@ from rest_framework import serializers from ..models import Schedule -class ScheduleSerializer(serializers.HyperlinkedModelSerializer): - file_id = serializers.IntegerField(source="file.id", read_only=True) - stream_id = serializers.IntegerField(source="stream.id", read_only=True) - instance_id = serializers.IntegerField(source="instance.id", read_only=True) +class ScheduleSerializer(serializers.ModelSerializer): cue_out = serializers.DurationField(source="get_cue_out", read_only=True) ends_at = serializers.DateTimeField(source="get_ends_at", read_only=True) class Meta: model = Schedule - fields = [ - "item_url", - "id", - "starts_at", - "ends_at", - "instance", - "instance_id", - "file", - "file_id", - "stream", - "stream_id", - "length", - "fade_in", - "fade_out", - "cue_in", - "cue_out", - "position", - "position_status", - "broadcasted", - "played", - "overbooked", - ] + fields = "__all__" diff --git a/api/libretime_api/schedule/serializers/show.py b/api/libretime_api/schedule/serializers/show.py index b1201cb8f..2ef8ee09d 100644 --- a/api/libretime_api/schedule/serializers/show.py +++ b/api/libretime_api/schedule/serializers/show.py @@ -3,11 +3,10 @@ from rest_framework import serializers from ..models import Show, ShowDays, ShowHost, ShowInstance, ShowRebroadcast -class ShowSerializer(serializers.HyperlinkedModelSerializer): +class ShowSerializer(serializers.ModelSerializer): class Meta: model = Show fields = [ - "item_url", "id", "name", "description", @@ -24,46 +23,25 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer): ] -class ShowDaysSerializer(serializers.HyperlinkedModelSerializer): +class ShowDaysSerializer(serializers.ModelSerializer): class Meta: model = ShowDays fields = "__all__" -class ShowHostSerializer(serializers.HyperlinkedModelSerializer): +class ShowHostSerializer(serializers.ModelSerializer): class Meta: model = ShowHost fields = "__all__" -class ShowInstanceSerializer(serializers.HyperlinkedModelSerializer): - show_id = serializers.IntegerField(source="show.id", read_only=True) - record_file_id = serializers.IntegerField(source="record_file.id", read_only=True) - +class ShowInstanceSerializer(serializers.ModelSerializer): class Meta: model = ShowInstance - fields = [ - "item_url", - "id", - "created_at", - "show", - "show_id", - "instance", - "starts_at", - "ends_at", - "filled_time", - "last_scheduled_at", - "description", - "modified", - "rebroadcast", - "auto_playlist_built", - "record_enabled", - "record_file", - "record_file_id", - ] + fields = "__all__" -class ShowRebroadcastSerializer(serializers.HyperlinkedModelSerializer): +class ShowRebroadcastSerializer(serializers.ModelSerializer): class Meta: model = ShowRebroadcast fields = "__all__" diff --git a/api/libretime_api/schedule/serializers/smart_block.py b/api/libretime_api/schedule/serializers/smart_block.py index b91bc6523..ed1b8490f 100644 --- a/api/libretime_api/schedule/serializers/smart_block.py +++ b/api/libretime_api/schedule/serializers/smart_block.py @@ -3,19 +3,19 @@ from rest_framework import serializers from ..models import SmartBlock, SmartBlockContent, SmartBlockCriteria -class SmartBlockSerializer(serializers.HyperlinkedModelSerializer): +class SmartBlockSerializer(serializers.ModelSerializer): class Meta: model = SmartBlock fields = "__all__" -class SmartBlockContentSerializer(serializers.HyperlinkedModelSerializer): +class SmartBlockContentSerializer(serializers.ModelSerializer): class Meta: model = SmartBlockContent fields = "__all__" -class SmartBlockCriteriaSerializer(serializers.HyperlinkedModelSerializer): +class SmartBlockCriteriaSerializer(serializers.ModelSerializer): class Meta: model = SmartBlockCriteria fields = "__all__" diff --git a/api/libretime_api/schedule/serializers/webstream.py b/api/libretime_api/schedule/serializers/webstream.py index 10907f72e..117ffcb4a 100644 --- a/api/libretime_api/schedule/serializers/webstream.py +++ b/api/libretime_api/schedule/serializers/webstream.py @@ -3,15 +3,13 @@ from rest_framework import serializers from ..models import Webstream, WebstreamMetadata -class WebstreamSerializer(serializers.HyperlinkedModelSerializer): - id = serializers.IntegerField(read_only=True) - +class WebstreamSerializer(serializers.ModelSerializer): class Meta: model = Webstream fields = "__all__" -class WebstreamMetadataSerializer(serializers.HyperlinkedModelSerializer): +class WebstreamMetadataSerializer(serializers.ModelSerializer): class Meta: model = WebstreamMetadata fields = "__all__" diff --git a/api/libretime_api/storage/serializers/file.py b/api/libretime_api/storage/serializers/file.py index 87a9020d8..a53df1d85 100644 --- a/api/libretime_api/storage/serializers/file.py +++ b/api/libretime_api/storage/serializers/file.py @@ -3,9 +3,7 @@ from rest_framework import serializers from ..models import File -class FileSerializer(serializers.HyperlinkedModelSerializer): - id = serializers.IntegerField(read_only=True) - +class FileSerializer(serializers.ModelSerializer): class Meta: model = File fields = "__all__" diff --git a/api/libretime_api/storage/serializers/library.py b/api/libretime_api/storage/serializers/library.py index 374898273..3196e46b1 100644 --- a/api/libretime_api/storage/serializers/library.py +++ b/api/libretime_api/storage/serializers/library.py @@ -3,7 +3,7 @@ from rest_framework import serializers from ..models import Library -class LibrarySerializer(serializers.HyperlinkedModelSerializer): +class LibrarySerializer(serializers.ModelSerializer): class Meta: model = Library fields = "__all__" diff --git a/api/schema.yml b/api/schema.yml index 5039f5fa6..b665dec24 100644 --- a/api/schema.yml +++ b/api/schema.yml @@ -940,6 +940,7 @@ paths: multipart/form-data: schema: $ref: "#/components/schemas/LoginAttempt" + required: true security: - cookieAuth: [] - basicAuth: [] @@ -994,6 +995,7 @@ paths: multipart/form-data: schema: $ref: "#/components/schemas/LoginAttempt" + required: true security: - cookieAuth: [] - basicAuth: [] @@ -5377,9 +5379,8 @@ components: CeleryTask: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true task_id: type: string @@ -5396,20 +5397,15 @@ components: type: string maxLength: 256 track_reference: - type: string - format: uri + type: integer required: - - item_url + - id - status - task_id - track_reference File: type: object properties: - item_url: - type: string - format: uri - readOnly: true id: type: integer readOnly: true @@ -5653,30 +5649,25 @@ components: nullable: true maxLength: 512 library: - type: string - format: uri + type: integer nullable: true owner: - type: string - format: uri + type: integer nullable: true edited_by: - type: string - format: uri + type: integer nullable: true required: - accessed - id - - item_url - mime - name - size ImportedPodcast: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true override_album: type: boolean @@ -5687,19 +5678,17 @@ components: format: date-time nullable: true podcast: - type: string - format: uri + type: integer required: - auto_ingest - - item_url + - id - override_album - podcast Library: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true name: type: string @@ -5716,35 +5705,31 @@ components: type: boolean required: - code - - item_url + - id ListenerCount: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true listener_count: type: integer maximum: 2147483647 minimum: -2147483648 timestamp: - type: string - format: uri + type: integer mount_name: - type: string - format: uri + type: integer required: - - item_url + - id - listener_count - mount_name - timestamp LiveLog: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true state: type: string @@ -5757,35 +5742,33 @@ components: format: date-time nullable: true required: - - item_url + - id - start_time - state LoginAttempt: type: object properties: - item_url: + ip: type: string - format: uri - readOnly: true + maxLength: 32 attempts: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true required: - - item_url + - ip MountName: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true mount_name: type: string maxLength: 1024 required: - - item_url + - id - mount_name NullEnum: enum: @@ -5793,9 +5776,8 @@ components: PatchedCeleryTask: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true task_id: type: string @@ -5812,15 +5794,10 @@ components: type: string maxLength: 256 track_reference: - type: string - format: uri + type: integer PatchedFile: type: object properties: - item_url: - type: string - format: uri - readOnly: true id: type: integer readOnly: true @@ -6064,23 +6041,19 @@ components: nullable: true maxLength: 512 library: - type: string - format: uri + type: integer nullable: true owner: - type: string - format: uri + type: integer nullable: true edited_by: - type: string - format: uri + type: integer nullable: true PatchedImportedPodcast: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true override_album: type: boolean @@ -6091,14 +6064,12 @@ components: format: date-time nullable: true podcast: - type: string - format: uri + type: integer PatchedLibrary: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true name: type: string @@ -6116,26 +6087,22 @@ components: PatchedListenerCount: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true listener_count: type: integer maximum: 2147483647 minimum: -2147483648 timestamp: - type: string - format: uri + type: integer mount_name: - type: string - format: uri + type: integer PatchedLiveLog: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true state: type: string @@ -6150,10 +6117,9 @@ components: PatchedLoginAttempt: type: object properties: - item_url: + ip: type: string - format: uri - readOnly: true + maxLength: 32 attempts: type: integer maximum: 2147483647 @@ -6162,9 +6128,8 @@ components: PatchedMountName: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true mount_name: type: string @@ -6172,9 +6137,8 @@ components: PatchedPlaylist: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true created_at: type: string @@ -6195,15 +6159,13 @@ components: type: string nullable: true owner: - type: string - format: uri + type: integer nullable: true PatchedPlaylistContent: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true kind: allOf: @@ -6236,27 +6198,22 @@ components: format: time nullable: true playlist: - type: string - format: uri + type: integer nullable: true file: - type: string - format: uri + type: integer nullable: true stream: - type: string - format: uri + type: integer nullable: true block: - type: string - format: uri + type: integer nullable: true PatchedPlayoutHistory: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true starts: type: string @@ -6266,19 +6223,16 @@ components: format: date-time nullable: true file: - type: string - format: uri + type: integer nullable: true instance: - type: string - format: uri + type: integer nullable: true PatchedPlayoutHistoryMetadata: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true key: type: string @@ -6287,14 +6241,12 @@ components: type: string maxLength: 128 history: - type: string - format: uri + type: integer PatchedPlayoutHistoryTemplate: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true name: type: string @@ -6305,9 +6257,8 @@ components: PatchedPlayoutHistoryTemplateField: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true name: type: string @@ -6325,14 +6276,12 @@ components: maximum: 2147483647 minimum: -2147483648 template: - type: string - format: uri + type: integer PatchedPodcast: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true url: type: string @@ -6385,15 +6334,13 @@ components: nullable: true maxLength: 4096 owner: - type: string - format: uri + type: integer nullable: true PatchedPodcastEpisode: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true published_at: type: string @@ -6410,18 +6357,15 @@ components: episode_description: type: string podcast: - type: string - format: uri + type: integer file: - type: string - format: uri + type: integer nullable: true PatchedPreference: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true key: type: string @@ -6431,46 +6375,24 @@ components: type: string nullable: true user: - type: string - format: uri + type: integer nullable: true PatchedSchedule: type: object properties: - item_url: - type: string - format: uri - readOnly: true id: type: integer readOnly: true - starts_at: + cue_out: type: string - format: date-time + readOnly: true ends_at: type: string format: date-time readOnly: true - instance: + starts_at: type: string - format: uri - instance_id: - type: integer - readOnly: true - file: - type: string - format: uri - nullable: true - file_id: - type: integer - readOnly: true - stream: - type: string - format: uri - nullable: true - stream_id: - type: integer - readOnly: true + format: date-time length: type: string nullable: true @@ -6484,9 +6406,6 @@ components: nullable: true cue_in: type: string - cue_out: - type: string - readOnly: true position: type: integer maximum: 2147483647 @@ -6503,26 +6422,26 @@ components: played: type: boolean nullable: true - overbooked: - type: boolean - readOnly: true + instance: + type: integer + file: + type: integer + nullable: true + stream: + type: integer + nullable: true PatchedServiceRegister: type: object properties: - item_url: + name: type: string - format: uri - readOnly: true + maxLength: 32 ip: type: string maxLength: 45 PatchedShow: type: object properties: - item_url: - type: string - format: uri - readOnly: true id: type: integer readOnly: true @@ -6558,8 +6477,7 @@ components: linkable: type: boolean auto_playlist: - type: string - format: uri + type: integer nullable: true auto_playlist_enabled: type: boolean @@ -6568,9 +6486,8 @@ components: PatchedShowDays: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true first_show_on: type: string @@ -6612,44 +6529,26 @@ components: format: date nullable: true show: - type: string - format: uri + type: integer PatchedShowHost: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true show: - type: string - format: uri + type: integer user: - type: string - format: uri + type: integer PatchedShowInstance: type: object properties: - item_url: - type: string - format: uri - readOnly: true id: type: integer readOnly: true created_at: type: string format: date-time - show: - type: string - format: uri - show_id: - type: integer - readOnly: true - instance: - type: string - format: uri - nullable: true starts_at: type: string format: date-time @@ -6683,19 +6582,19 @@ components: oneOf: - $ref: "#/components/schemas/RecordEnabledEnum" - $ref: "#/components/schemas/NullEnum" - record_file: - type: string - format: uri - nullable: true - record_file_id: + show: type: integer - readOnly: true + instance: + type: integer + nullable: true + record_file: + type: integer + nullable: true PatchedShowRebroadcast: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true day_offset: type: string @@ -6704,14 +6603,12 @@ components: type: string format: time show: - type: string - format: uri + type: integer PatchedSmartBlock: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true created_at: type: string @@ -6738,15 +6635,13 @@ components: - $ref: "#/components/schemas/BlankEnum" - $ref: "#/components/schemas/NullEnum" owner: - type: string - format: uri + type: integer nullable: true PatchedSmartBlockContent: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true position: type: integer @@ -6774,19 +6669,16 @@ components: format: time nullable: true block: - type: string - format: uri + type: integer nullable: true file: - type: string - format: uri + type: integer nullable: true PatchedSmartBlockCriteria: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true group: type: integer @@ -6807,25 +6699,21 @@ components: nullable: true maxLength: 512 block: - type: string - format: uri + type: integer PatchedStationPodcast: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true podcast: - type: string - format: uri + type: integer PatchedStreamSetting: type: object properties: - item_url: + key: type: string - format: uri - readOnly: true + maxLength: 64 raw_value: type: string nullable: true @@ -6836,9 +6724,8 @@ components: PatchedThirdPartyTrackReference: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true service: type: string @@ -6856,15 +6743,13 @@ components: nullable: true maxLength: 256 file: - type: string - format: uri + type: integer nullable: true PatchedTimestamp: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true timestamp: type: string @@ -6872,9 +6757,8 @@ components: PatchedUser: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true role: $ref: "#/components/schemas/RoleEnum" @@ -6919,9 +6803,8 @@ components: PatchedUserToken: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true action: type: string @@ -6933,15 +6816,10 @@ components: type: string format: date-time user: - type: string - format: uri + type: integer PatchedWebstream: type: object properties: - item_url: - type: string - format: uri - readOnly: true id: type: integer readOnly: true @@ -6971,15 +6849,13 @@ components: nullable: true maxLength: 1024 owner: - type: string - format: uri + type: integer nullable: true PatchedWebstreamMetadata: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true starts_at: type: string @@ -6988,14 +6864,12 @@ components: type: string maxLength: 1024 schedule: - type: string - format: uri + type: integer Playlist: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true created_at: type: string @@ -7016,18 +6890,16 @@ components: type: string nullable: true owner: - type: string - format: uri + type: integer nullable: true required: - - item_url + - id - name PlaylistContent: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true kind: allOf: @@ -7060,23 +6932,19 @@ components: format: time nullable: true playlist: - type: string - format: uri + type: integer nullable: true file: - type: string - format: uri + type: integer nullable: true stream: - type: string - format: uri + type: integer nullable: true block: - type: string - format: uri + type: integer nullable: true required: - - item_url + - id - kind - offset PlaylistContentKindEnum: @@ -7088,9 +6956,8 @@ components: PlayoutHistory: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true starts: type: string @@ -7100,22 +6967,19 @@ components: format: date-time nullable: true file: - type: string - format: uri + type: integer nullable: true instance: - type: string - format: uri + type: integer nullable: true required: - - item_url + - id - starts PlayoutHistoryMetadata: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true key: type: string @@ -7124,19 +6988,17 @@ components: type: string maxLength: 128 history: - type: string - format: uri + type: integer required: - history - - item_url + - id - key - value PlayoutHistoryTemplate: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true name: type: string @@ -7145,15 +7007,14 @@ components: type: string maxLength: 35 required: - - item_url + - id - name - type PlayoutHistoryTemplateField: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true name: type: string @@ -7171,11 +7032,10 @@ components: maximum: 2147483647 minimum: -2147483648 template: - type: string - format: uri + type: integer required: + - id - is_file_md - - item_url - label - name - position @@ -7184,9 +7044,8 @@ components: Podcast: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true url: type: string @@ -7239,19 +7098,17 @@ components: nullable: true maxLength: 4096 owner: - type: string - format: uri + type: integer nullable: true required: - - item_url + - id - title - url PodcastEpisode: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true published_at: type: string @@ -7268,18 +7125,16 @@ components: episode_description: type: string podcast: - type: string - format: uri + type: integer file: - type: string - format: uri + type: integer nullable: true required: - download_url - episode_description - episode_guid - episode_title - - item_url + - id - podcast - published_at PositionStatusEnum: @@ -7292,9 +7147,8 @@ components: Preference: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true key: type: string @@ -7304,11 +7158,10 @@ components: type: string nullable: true user: - type: string - format: uri + type: integer nullable: true required: - - item_url + - id - key - user RecordEnabledEnum: @@ -7334,40 +7187,19 @@ components: Schedule: type: object properties: - item_url: - type: string - format: uri - readOnly: true id: type: integer readOnly: true - starts_at: + cue_out: type: string - format: date-time + readOnly: true ends_at: type: string format: date-time readOnly: true - instance: + starts_at: type: string - format: uri - instance_id: - type: integer - readOnly: true - file: - type: string - format: uri - nullable: true - file_id: - type: integer - readOnly: true - stream: - type: string - format: uri - nullable: true - stream_id: - type: integer - readOnly: true + format: date-time length: type: string nullable: true @@ -7381,9 +7213,6 @@ components: nullable: true cue_in: type: string - cue_out: - type: string - readOnly: true position: type: integer maximum: 2147483647 @@ -7400,43 +7229,38 @@ components: played: type: boolean nullable: true - overbooked: - type: boolean - readOnly: true + instance: + type: integer + file: + type: integer + nullable: true + stream: + type: integer + nullable: true required: - broadcasted - cue_in - cue_out - ends_at - - file_id - id - instance - - instance_id - - item_url - - overbooked - position - starts_at - - stream_id ServiceRegister: type: object properties: - item_url: + name: type: string - format: uri - readOnly: true + maxLength: 32 ip: type: string maxLength: 45 required: - ip - - item_url + - name Show: type: object properties: - item_url: - type: string - format: uri - readOnly: true id: type: integer readOnly: true @@ -7472,8 +7296,7 @@ components: linkable: type: boolean auto_playlist: - type: string - format: uri + type: integer nullable: true auto_playlist_enabled: type: boolean @@ -7483,16 +7306,14 @@ components: - auto_playlist_enabled - auto_playlist_repeat - id - - item_url - linkable - linked - name ShowDays: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true first_show_on: type: string @@ -7534,12 +7355,11 @@ components: format: date nullable: true show: - type: string - format: uri + type: integer required: - duration - first_show_on - - item_url + - id - repeat_kind - show - start_time @@ -7547,43 +7367,26 @@ components: ShowHost: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true show: - type: string - format: uri + type: integer user: - type: string - format: uri + type: integer required: - - item_url + - id - show - user ShowInstance: type: object properties: - item_url: - type: string - format: uri - readOnly: true id: type: integer readOnly: true created_at: type: string format: date-time - show: - type: string - format: uri - show_id: - type: integer - readOnly: true - instance: - type: string - format: uri - nullable: true starts_at: type: string format: date-time @@ -7617,30 +7420,27 @@ components: oneOf: - $ref: "#/components/schemas/RecordEnabledEnum" - $ref: "#/components/schemas/NullEnum" - record_file: - type: string - format: uri - nullable: true - record_file_id: + show: type: integer - readOnly: true + instance: + type: integer + nullable: true + record_file: + type: integer + nullable: true required: - auto_playlist_built - created_at - ends_at - id - - item_url - modified - - record_file_id - show - - show_id - starts_at ShowRebroadcast: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true day_offset: type: string @@ -7649,19 +7449,17 @@ components: type: string format: time show: - type: string - format: uri + type: integer required: - day_offset - - item_url + - id - show - start_time SmartBlock: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true created_at: type: string @@ -7688,18 +7486,16 @@ components: - $ref: "#/components/schemas/BlankEnum" - $ref: "#/components/schemas/NullEnum" owner: - type: string - format: uri + type: integer nullable: true required: - - item_url + - id - name SmartBlockContent: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true position: type: integer @@ -7727,22 +7523,19 @@ components: format: time nullable: true block: - type: string - format: uri + type: integer nullable: true file: - type: string - format: uri + type: integer nullable: true required: - - item_url + - id - offset SmartBlockCriteria: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true group: type: integer @@ -7763,13 +7556,12 @@ components: nullable: true maxLength: 512 block: - type: string - format: uri + type: integer required: - block - condition - criteria - - item_url + - id - value SmartBlockKindEnum: enum: @@ -7779,23 +7571,20 @@ components: StationPodcast: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true podcast: - type: string - format: uri + type: integer required: - - item_url + - id - podcast StreamSetting: type: object properties: - item_url: + key: type: string - format: uri - readOnly: true + maxLength: 64 raw_value: type: string nullable: true @@ -7804,14 +7593,13 @@ components: type: string maxLength: 16 required: - - item_url + - key - type ThirdPartyTrackReference: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true service: type: string @@ -7829,31 +7617,28 @@ components: nullable: true maxLength: 256 file: - type: string - format: uri + type: integer nullable: true required: - - item_url + - id - service Timestamp: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true timestamp: type: string format: date-time required: - - item_url + - id - timestamp User: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true role: $ref: "#/components/schemas/RoleEnum" @@ -7897,16 +7682,15 @@ components: maxLength: 1024 required: - first_name - - item_url + - id - last_name - role - username UserToken: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true action: type: string @@ -7918,12 +7702,11 @@ components: type: string format: date-time user: - type: string - format: uri + type: integer required: - action - created - - item_url + - id - token - user Version: @@ -7936,10 +7719,6 @@ components: Webstream: type: object properties: - item_url: - type: string - format: uri - readOnly: true id: type: integer readOnly: true @@ -7969,14 +7748,12 @@ components: nullable: true maxLength: 1024 owner: - type: string - format: uri + type: integer nullable: true required: - created_at - description - id - - item_url - length - name - updated_at @@ -7984,9 +7761,8 @@ components: WebstreamMetadata: type: object properties: - item_url: - type: string - format: uri + id: + type: integer readOnly: true starts_at: type: string @@ -7995,11 +7771,10 @@ components: type: string maxLength: 1024 schedule: - type: string - format: uri + type: integer required: - data - - item_url + - id - schedule - starts_at WeekDayEnum: diff --git a/playout/libretime_playout/player/schedule.py b/playout/libretime_playout/player/schedule.py index 8ccad0ec7..c351d2bf5 100644 --- a/playout/libretime_playout/player/schedule.py +++ b/playout/libretime_playout/player/schedule.py @@ -39,15 +39,15 @@ def get_schedule(api_client: ApiClient): item["starts_at"] = isoparse(item["starts_at"]) item["ends_at"] = isoparse(item["ends_at"]) - show_instance = api_client.get_show_instance(item["instance_id"]).json() - show = api_client.get_show(show_instance["show_id"]).json() + show_instance = api_client.get_show_instance(item["instance"]).json() + show = api_client.get_show(show_instance["show"]).json() if item["file"]: - file = api_client.get_file(item["file_id"]).json() + file = api_client.get_file(item["file"]).json() events.update(generate_file_events(item, file, show)) elif item["stream"]: - webstream = api_client.get_webstream(item["stream_id"]).json() + webstream = api_client.get_webstream(item["stream"]).json() events.update(generate_webstream_events(item, webstream, show)) return {"media": events} diff --git a/playout/tests/player/schedule_test.py b/playout/tests/player/schedule_test.py index 821618b98..8bd09836d 100644 --- a/playout/tests/player/schedule_test.py +++ b/playout/tests/player/schedule_test.py @@ -16,27 +16,25 @@ def _api_client_mock(requests_mock): "id": 17, "starts_at": "2022-03-04T15:30:00Z", "ends_at": "2022-03-04T15:33:50.674340Z", - "file": "http://192.168.10.100:8081/api/v2/files/1/", - "file_id": 1, + "file": 1, "stream": None, "fade_in": "00:00:00.500000", "fade_out": "00:00:00.500000", "cue_in": "00:00:01.310660", "cue_out": "00:03:51.985000", - "instance_id": 3, + "instance": 3, }, { "id": 18, "starts_at": "2022-03-04T15:33:50.674340Z", "ends_at": "2022-03-04T16:03:50.674340Z", "file": None, - "stream": "http://192.168.10.100:8081/api/v2/webstreams/1/", - "stream_id": 1, + "stream": 1, "fade_in": "00:00:00.500000", "fade_out": "00:00:00.500000", "cue_in": "00:00:00", "cue_out": "00:30:00", - "instance_id": 3, + "instance": 3, }, ], ) @@ -44,7 +42,7 @@ def _api_client_mock(requests_mock): requests_mock.get( f"{base_url}/api/v2/show-instances/3", json={ - "show_id": 3, + "show": 3, }, )