1515from django .db import transaction
1616from django .contrib import messages
1717
18-
18+ from django . core . exceptions import PermissionDenied
1919from profiles .models import CustomGroup , User
2020from queues .models import Queue
2121
@@ -336,29 +336,37 @@ def competition_update_group(request, pk, group_id):
336336@require_POST
337337def competition_delete_group (request , pk , group_id ):
338338 competition = get_object_or_404 (Competition , pk = pk )
339- group = get_object_or_404 (CustomGroup , pk = group_id )
340339
341340 user = request .user
342- if not (user .is_superuser or user == competition .created_by or user in competition .collaborators .all ()):
343- return HttpResponseForbidden ("Not allowed" )
341+ if not (
342+ user .is_superuser
343+ or user == competition .created_by
344+ or user in competition .collaborators .all ()
345+ ):
346+ raise PermissionDenied ("Not allowed" )
344347
345- if not competition .participant_groups .filter (pk = group .pk ).exists ():
346- return HttpResponseBadRequest ("Group does not belong to this competition" )
348+ group = get_object_or_404 (
349+ CustomGroup ,
350+ pk = group_id ,
351+ competitions = competition
352+ )
347353
348354 try :
349355 with transaction .atomic ():
350356 competition .participant_groups .remove (group )
351357 group .delete ()
358+
352359 except Exception as e :
353- return HttpResponseBadRequest ("Error deleting group: %s" % str (e ))
360+ return HttpResponseBadRequest (f "Error deleting group: { str (e )} " )
354361
355362 if (
356- request .content_type .startswith (' application/json' )
357- or request .headers .get (' x-requested-with' ) == ' XMLHttpRequest'
358- or ' application/json' in request .headers .get (' accept' , '' )
363+ request .content_type .startswith (" application/json" )
364+ or request .headers .get (" x-requested-with" ) == " XMLHttpRequest"
365+ or " application/json" in request .headers .get (" accept" , "" )
359366 ):
360- return JsonResponse ({'status' : 'ok' , 'group_id' : group_id })
361-
367+ return JsonResponse ({"status" : "ok" , "group_id" : group_id })
362368
363369 messages .success (request , "Groupe supprimé" )
364- return HttpResponseRedirect (reverse ('competitions:edit' , kwargs = {'pk' : competition .pk }))
370+ return HttpResponseRedirect (
371+ reverse ("competitions:edit" , kwargs = {"pk" : competition .pk })
372+ )
0 commit comments