Skip to content

Commit 59912cf

Browse files
committed
fix langate endpoint
1 parent 859d0ee commit 59912cf

File tree

3 files changed

+24
-34
lines changed

3 files changed

+24
-34
lines changed

insalan/langate/models.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ class SimplifiedUserData:
1919
"""
2020

2121
username = models.CharField(max_length=100, blank=False)
22-
name = models.CharField(max_length=100)
22+
first_name = models.CharField(max_length=100)
23+
last_name = models.CharField(max_length=100)
2324
email = models.EmailField(verbose_name="email address", max_length=255, blank=False)
2425

2526
@classmethod
@@ -32,7 +33,8 @@ def new(cls, user: User):
3233
"""
3334
s_user_data = cls()
3435
s_user_data.username = user.get_username()
35-
s_user_data.name = user.get_full_name()
36+
s_user_data.first_name = user.first_name
37+
s_user_data.last_name = user.last_name
3638
s_user_data.email = user.email
3739

3840
return s_user_data
@@ -47,6 +49,7 @@ class TournamentRegistration:
4749
team = models.CharField(max_length=25, blank=False)
4850
manager = models.BooleanField()
4951
has_paid = models.BooleanField()
52+
email = models.EmailField(verbose_name="email address", max_length=255, blank=False)
5053

5154

5255
class LangateReply:

insalan/langate/serializers.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ class SimplifiedUserDataSerializer(serializers.Serializer):
1111
"""
1212

1313
username = serializers.CharField(max_length=100)
14-
name = serializers.CharField(max_length=100)
14+
first_name = serializers.CharField(max_length=100)
15+
last_name = serializers.CharField(max_length=100)
1516
email = serializers.EmailField(max_length=255)
1617

1718

insalan/langate/views.py

+17-31
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,19 @@
1313
from rest_framework.permissions import IsAuthenticated
1414
from rest_framework.response import Response
1515

16-
from insalan.tournament.models import Event, Player, PaymentStatus, Manager
16+
from insalan.tournament.models import Event, Player, PaymentStatus, Manager, Substitute
1717
from insalan.user.models import User
1818

1919
from .models import LangateReply, TournamentRegistration
2020
from .serializers import ReplySerializer
2121

22+
from insalan.user.serializers import UserLoginSerializer
2223

2324
class LangateUserView(CreateAPIView):
2425
"""
2526
API endpoint used by the langate to authenticate and verify a user's data
2627
"""
2728
authentication_classes = [SessionAuthentication]
28-
permission_classes = [IsAuthenticated]
2929
serializer_class = ReplySerializer
3030

3131
def post(self, request, *args, **kwargs):
@@ -45,10 +45,20 @@ def post(self, request, *args, **kwargs):
4545
Our response is lengthier, and should contain all of the information
4646
necessary for the langate to identify the user.
4747
"""
48-
# Name of the user
48+
# authenticate the user
49+
data = request.data
50+
serializer = UserLoginSerializer(data=data, context={"request": request})
51+
if serializer.is_valid():
52+
user = serializer.check_validity(data)
53+
if user is None:
54+
return Response(
55+
{"user": [_("Nom d'utilisateur·rice ou mot de passe incorrect")]},
56+
status=status.HTTP_404_NOT_FOUND,
57+
)
58+
4959
# If we reached here, they are authenticated correctly, so now we
5060
# fetch their data
51-
gate_user = request.user
61+
gate_user = data.get("username")
5262

5363
# Attempt to determine what the event id is
5464
# How many ongoing events are there?
@@ -59,33 +69,8 @@ def post(self, request, *args, **kwargs):
5969
status=status.HTTP_500_INTERNAL_SERVER_ERROR,
6070
)
6171

62-
event_id = request.data.get("event_id")
63-
if event_id is not None:
64-
event_id = int(event_id)
65-
66-
# If there is only one event...
67-
if len(ongoing_events) == 1:
68-
# ...and there is none provided: use it
69-
if event_id is not None and ongoing_events[0] != event_id:
70-
return Response(
71-
{"err": _("Évènement demandé incompatible")},
72-
status=status.HTTP_400_BAD_REQUEST,
73-
)
74-
event_id = ongoing_events[0]
75-
else:
76-
if event_id is None:
77-
return Response(
78-
{"err": _("Identifiant manquant")}, status=status.HTTP_400_BAD_REQUEST
79-
)
80-
81-
if not event_id in ongoing_events:
82-
return Response(
83-
{"err": _("Évènement non en cours")},
84-
status=status.HTTP_400_BAD_REQUEST,
85-
)
86-
8772
# Get the event
88-
ev_obj = Event.objects.get(id=event_id)
73+
ev_obj = Event.objects.get(id=ongoing_events[0])
8974
if not ev_obj.ongoing:
9075
return Response(
9176
{"err": _("Évènement non en cours")},
@@ -96,7 +81,8 @@ def post(self, request, *args, **kwargs):
9681
user_obj = User.objects.get(username=gate_user)
9782
regs_pl = Player.objects.filter(user=user_obj, team__tournament__event=ev_obj)
9883
regs_man = Manager.objects.filter(user=user_obj, team__tournament__event=ev_obj)
99-
regs = list(regs_pl) + list(regs_man)
84+
regs_sub = Substitute.objects.filter(user=user_obj, team__tournament__event=ev_obj)
85+
regs = list(regs_pl) + list(regs_man) + list(regs_sub)
10086

10187
found_count = len(regs)
10288

0 commit comments

Comments
 (0)