Updated Channel Serializer

Fixed serialization problems that prevented editing.
This commit is contained in:
Dispatcharr 2025-03-06 19:39:21 -06:00
parent 7532a6dd89
commit 1dcbf8875f

View file

@ -44,6 +44,7 @@ class StreamSerializer(serializers.ModelSerializer):
return fields
#
# Channel Group
#
@ -74,7 +75,8 @@ class ChannelSerializer(serializers.ModelSerializer):
)
streams = serializers.ListField(
child=serializers.IntegerField(), write_only=True
child=serializers.IntegerField(),
write_only=True
)
stream_ids = serializers.SerializerMethodField()
@ -111,17 +113,28 @@ class ChannelSerializer(serializers.ModelSerializer):
def update(self, instance, validated_data):
print("Validated Data:", validated_data)
stream_ids = validated_data.get('streams', None)
stream_ids = validated_data.pop('streams', None)
print(f'stream ids: {stream_ids}')
# Update basic fields
instance.name = validated_data.get('channel_name', instance.channel_name)
# Update the actual Channel fields
instance.channel_number = validated_data.get('channel_number', instance.channel_number)
instance.channel_name = validated_data.get('channel_name', instance.channel_name)
instance.logo_url = validated_data.get('logo_url', instance.logo_url)
instance.tvg_id = validated_data.get('tvg_id', instance.tvg_id)
instance.tvg_name = validated_data.get('tvg_name', instance.tvg_name)
# If serializer allows changing channel_group or stream_profile:
if 'channel_group' in validated_data:
instance.channel_group = validated_data['channel_group']
if 'stream_profile' in validated_data:
instance.stream_profile = validated_data['stream_profile']
instance.save()
# Handle the many-to-many 'streams'
if stream_ids is not None:
# Clear existing relationships
instance.channelstream_set.all().delete()
# Add new streams in order
for index, stream_id in enumerate(stream_ids):
ChannelStream.objects.create(channel=instance, stream_id=stream_id, order=index)