mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-07-20 01:59:50 +00:00
allow null for channel_number so we auto assign
This commit is contained in:
parent
179e82e00c
commit
e31036079e
3 changed files with 12 additions and 8 deletions
|
|
@ -127,13 +127,6 @@ class ChannelViewSet(viewsets.ModelViewSet):
|
|||
serializer_class = ChannelSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get_next_available_channel_number(self, starting_from=1):
|
||||
used_numbers = set(Channel.objects.all().values_list('channel_number', flat=True))
|
||||
n = starting_from
|
||||
while n in used_numbers:
|
||||
n += 1
|
||||
return n
|
||||
|
||||
@swagger_auto_schema(
|
||||
method='post',
|
||||
operation_description="Auto-assign channel_number in bulk by an ordered list of channel IDs.",
|
||||
|
|
@ -208,7 +201,7 @@ class ChannelViewSet(viewsets.ModelViewSet):
|
|||
if channel_number is None:
|
||||
provided_number = request.data.get('channel_number')
|
||||
if provided_number is None:
|
||||
channel_number = self.get_next_available_channel_number()
|
||||
channel_number = Channel.get_next_available_channel_number()
|
||||
else:
|
||||
try:
|
||||
channel_number = int(provided_number)
|
||||
|
|
|
|||
|
|
@ -269,6 +269,14 @@ class Channel(models.Model):
|
|||
def __str__(self):
|
||||
return f"{self.channel_number} - {self.name}"
|
||||
|
||||
@classmethod
|
||||
def get_next_available_channel_number(cls, starting_from=1):
|
||||
used_numbers = set(cls.objects.all().values_list('channel_number', flat=True))
|
||||
n = starting_from
|
||||
while n in used_numbers:
|
||||
n += 1
|
||||
return n
|
||||
|
||||
# @TODO: honor stream's stream profile
|
||||
def get_stream_profile(self):
|
||||
stream_profile = self.stream_profile
|
||||
|
|
|
|||
|
|
@ -117,6 +117,7 @@ class BulkChannelProfileMembershipSerializer(serializers.Serializer):
|
|||
#
|
||||
class ChannelSerializer(serializers.ModelSerializer):
|
||||
# Show nested group data, or ID
|
||||
channel_number = serializers.IntegerField(allow_null=True, required=False)
|
||||
channel_group = ChannelGroupSerializer(read_only=True)
|
||||
channel_group_id = serializers.PrimaryKeyRelatedField(
|
||||
queryset=ChannelGroup.objects.all(),
|
||||
|
|
@ -187,6 +188,8 @@ class ChannelSerializer(serializers.ModelSerializer):
|
|||
|
||||
def create(self, validated_data):
|
||||
stream_ids = validated_data.pop('streams', [])
|
||||
channel_number = validated_data.pop('channel_number', Channel.get_next_available_channel_number())
|
||||
validated_data["channel_number"] = channel_number
|
||||
channel = Channel.objects.create(**validated_data)
|
||||
|
||||
# Add streams in the specified order
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue