From ac48c17c300aa5dcce4ddc4a5c4bb1c4f3449bc8 Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Fri, 9 Feb 2024 16:43:38 +0500 Subject: [PATCH] show competiitons using the queue --- src/apps/api/serializers/queues.py | 25 ++++++++++++++++++++++++- src/static/riot/queues/management.tag | 19 ++++++++++++++----- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/apps/api/serializers/queues.py b/src/apps/api/serializers/queues.py index deea441d0..3614b61a2 100644 --- a/src/apps/api/serializers/queues.py +++ b/src/apps/api/serializers/queues.py @@ -3,8 +3,8 @@ from api.mixins import DefaultUserCreateMixin from queues.models import Queue - from profiles.models import User +from django.db.models import Q class OrganizerSerializer(serializers.ModelSerializer): @@ -61,6 +61,7 @@ class QueueSerializer(QueueOwnerMixin, serializers.ModelSerializer): is_owner = serializers.SerializerMethodField() owner = serializers.CharField(source='owner.username', read_only=True) organizers = OrganizerSerializer(many=True, read_only=True) + competitions = serializers.SerializerMethodField() class Meta: model = Queue @@ -74,6 +75,7 @@ class Meta: 'created_when', 'is_owner', 'id', + 'competitions', ) # This serializer is read only, basically.. read_only_fields = ( @@ -85,4 +87,25 @@ class Meta: 'broker_url', 'created_when', 'is_owner', + 'competitions', ) + + def get_competitions(self, obj): + # get user from the context request + user = self.context['request'].user + + # for super user return all competiitons using this queue + # for admin return competitions where this user is organizer using this queue + # for non-admin return public competitions using this queue + if user.is_superuser: + # Fetch all competitions + competitions = obj.competitions.all().values('id', 'title') + else: + # Fetch all competitions where user is organizer or competition is published + competitions = obj.competitions.filter( + Q(published=True) | + Q(created_by=user) | + Q(collaborators=user) + ).values('id', 'title') + + return competitions diff --git a/src/static/riot/queues/management.tag b/src/static/riot/queues/management.tag index be74a5132..ba138d6d9 100644 --- a/src/static/riot/queues/management.tag +++ b/src/static/riot/queues/management.tag @@ -133,11 +133,20 @@

Broker URL:

-
- -
-

Vhost

- {selected_queue.vhost} + {selected_queue.broker_url} + +

Vhost:

+ {selected_queue.vhost} + + +

Competitions using this queue:

+ +
Close