From 7eae1e4ca5626d50d9755469284fe3484e84dad3 Mon Sep 17 00:00:00 2001 From: dekzter Date: Thu, 3 Apr 2025 16:11:56 -0400 Subject: [PATCH] support channel number for bulk from streams --- apps/channels/api_views.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/channels/api_views.py b/apps/channels/api_views.py index 1ff0f5fa..842056e4 100644 --- a/apps/channels/api_views.py +++ b/apps/channels/api_views.py @@ -191,6 +191,7 @@ class ChannelViewSet(viewsets.ModelViewSet): channel_group = stream.channel_group # Check if client provided a channel_number; if not, auto-assign one. + channel_number = None provided_number = request.data.get('channel_number') if provided_number is None: channel_number = self.get_next_available_channel_number() @@ -211,6 +212,12 @@ class ChannelViewSet(viewsets.ModelViewSet): name = stream.name stream_custom_props = json.loads(stream.custom_properties) if stream.custom_properties else {} + if channel_number is None: + if 'tv-chno' in stream_custom_props: + channel_number = int(stream_custom_props['tv-chno']) + elif 'channel-number' in stream_custom_props: + channel_number = int(stream_custom_props['channel-number']) + channel_data = { 'channel_number': channel_number, 'name': name, @@ -219,11 +226,6 @@ class ChannelViewSet(viewsets.ModelViewSet): 'streams': [stream_id], } - if 'tv-chno' in stream_custom_props: - channel_data['channel_number'] = int(stream_custom_props['tv-chno']) - elif 'channel-number' in stream_custom_props: - channel_data['channel_number'] = int(stream_custom_props['channel-number']) - if stream.logo_url: logo, _ = Logo.objects.get_or_create(url=stream.logo_url, defaults={ "name": stream.name or stream.tvg_id @@ -304,6 +306,7 @@ class ChannelViewSet(viewsets.ModelViewSet): channel_group = stream.channel_group # Determine channel number: if provided, use it (if free); else auto assign. + channel_number = None provided_number = item.get('channel_number') if provided_number is None: channel_number = get_auto_number() @@ -322,6 +325,13 @@ class ChannelViewSet(viewsets.ModelViewSet): if name is None: name = stream.name + stream_custom_props = json.loads(stream.custom_properties) if stream.custom_properties else {} + if channel_number is None: + if 'tv-chno' in stream_custom_props: + channel_number = int(stream_custom_props['tv-chno']) + elif 'channel-number' in stream_custom_props: + channel_number = int(stream_custom_props['channel-number']) + channel_data = { "channel_number": channel_number, "name": name,