From d68e89962b9fd1db3faaf82a5b28cdf587119e64 Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Tue, 4 Aug 2026 17:24:03 +0500 Subject: [PATCH 1/2] queue creation error improved --- src/apps/api/views/competitions.py | 2 +- src/static/riot/queues/management.tag | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/apps/api/views/competitions.py b/src/apps/api/views/competitions.py index a8e4c1b49..ad94aa157 100644 --- a/src/apps/api/views/competitions.py +++ b/src/apps/api/views/competitions.py @@ -117,7 +117,7 @@ def get_queryset(self): # And competitions where you are admin # And public competitions # And competitions where you are approved participant - # this filters out all private compettions from other users + # this filters out all private competitions from other users base_qs = qs.filter( (Q(created_by=self.request.user)) | (Q(collaborators__in=[self.request.user])) | diff --git a/src/static/riot/queues/management.tag b/src/static/riot/queues/management.tag index 6401e8d51..597c94eb9 100644 --- a/src/static/riot/queues/management.tag +++ b/src/static/riot/queues/management.tag @@ -276,7 +276,14 @@ self.update_queues() }) .fail(function (response) { - toastr.error("An error occurred!") + let errorMsg = + _.get(response, 'responseJSON.detail') || + _.get(response, 'responseJSON.error') || + _.get(response, 'responseJSON.message') || + _.get(response, 'statusText') || + "An unknown error occurred!" + + toastr.error(errorMsg) }) } From 733a3f9ac20969cffa4b7697b2a2be02ecbf243c Mon Sep 17 00:00:00 2001 From: Ihsan Ullah Date: Sat, 8 Aug 2026 14:48:43 +0500 Subject: [PATCH 2/2] allow users to add collaborators to queues when the queue adding limit is reached. Fixed user lookup to not show deleted users in the collaborators dropdown --- src/apps/api/serializers/queues.py | 13 ++++++++++--- src/apps/api/views/profiles.py | 15 +++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/apps/api/serializers/queues.py b/src/apps/api/serializers/queues.py index b3d84aee6..c1818896e 100644 --- a/src/apps/api/serializers/queues.py +++ b/src/apps/api/serializers/queues.py @@ -51,9 +51,16 @@ class Meta: ) def validate(self, attrs): - request = self.context.get('request') - if request.user.queues.count() == request.user.rabbitmq_queue_limit and not request.user.is_superuser: - raise PermissionDenied("User has reached queue limit!") + # Only check the limit on creation (when self.instance is None) + if self.instance is None: + request = self.context.get('request') + if ( + request + and not request.user.is_superuser + and request.user.queues.count() >= request.user.rabbitmq_queue_limit + ): + raise PermissionDenied("User has reached queue limit!") + return super().validate(attrs) diff --git a/src/apps/api/views/profiles.py b/src/apps/api/views/profiles.py index 65e2bb13c..00d963d26 100644 --- a/src/apps/api/views/profiles.py +++ b/src/apps/api/views/profiles.py @@ -64,14 +64,21 @@ def get_object(self): @login_required def user_lookup(request): search = request.GET.get('q', '') - filters = Q() is_admin = request.user.is_superuser or request.user.is_staff + # Start with base query strictly excluding deleted & current user + queryset = User.objects.filter(is_deleted=False).exclude(id=request.user.id) + if search: - filters |= Q(username__icontains=search) - filters |= Q(email__icontains=search) if is_admin else Q(email__iexact=search) + search_filter = Q(username__icontains=search) + if is_admin: + search_filter |= Q(email__icontains=search) + else: + search_filter |= Q(email__iexact=search) + + queryset = queryset.filter(search_filter) - users = User.objects.exclude(id=request.user.id).filter(filters)[:5] + users = queryset[:5] # Helper to print username with email for admins def _get_data(user):