|
|
|
@ -18,6 +18,8 @@ from django.core.exceptions import ObjectDoesNotExist |
|
|
|
from .permissions import IsClubOwner |
|
|
|
from .permissions import IsClubOwner |
|
|
|
from .utils import is_valid_email |
|
|
|
from .utils import is_valid_email |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import tournaments.models |
|
|
|
|
|
|
|
|
|
|
|
class CustomAuthToken(APIView): |
|
|
|
class CustomAuthToken(APIView): |
|
|
|
permission_classes = [] |
|
|
|
permission_classes = [] |
|
|
|
|
|
|
|
|
|
|
|
@ -65,6 +67,25 @@ class Logout(APIView): |
|
|
|
|
|
|
|
|
|
|
|
return Response(status=status.HTTP_200_OK) |
|
|
|
return Response(status=status.HTTP_200_OK) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserCanPayView(APIView): |
|
|
|
|
|
|
|
permission_classes = (IsAuthenticated,) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
user = self.request.user |
|
|
|
|
|
|
|
if user.is_anonymous: |
|
|
|
|
|
|
|
return Response({'error': 'Vous n\'êtes pas authentifié'}, status=status.HTTP_401_UNAUTHORIZED) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
club_id = request.data.get('club') |
|
|
|
|
|
|
|
if club_id is None: |
|
|
|
|
|
|
|
return Response({'error': 'Aucun club n\'est renseigné'}, status=status.HTTP_401_UNAUTHORIZED) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for club in user.authorized_clubs.all(): |
|
|
|
|
|
|
|
if club.id == club_id: |
|
|
|
|
|
|
|
return Response({'payment': TournamentPayment.UNLIMITED}, status=status.HTTP_200_OK) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Response(status=status.HTTP_401_UNAUTHORIZED) # request is fine but no payment returned |
|
|
|
|
|
|
|
|
|
|
|
@api_view(['GET']) |
|
|
|
@api_view(['GET']) |
|
|
|
def user_by_token(request): |
|
|
|
def user_by_token(request): |
|
|
|
serializer = UserSerializer(request.user) |
|
|
|
serializer = UserSerializer(request.user) |
|
|
|
@ -81,6 +102,20 @@ class UserViewSet(viewsets.ModelViewSet): |
|
|
|
return UserSerializer |
|
|
|
return UserSerializer |
|
|
|
return self.serializer_class |
|
|
|
return self.serializer_class |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ChangePasswordView(UpdateAPIView): |
|
|
|
|
|
|
|
serializer_class = ChangePasswordSerializer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def update(self, request, *args, **kwargs): |
|
|
|
|
|
|
|
serializer = self.get_serializer(data=request.data) |
|
|
|
|
|
|
|
serializer.is_valid(raise_exception=True) |
|
|
|
|
|
|
|
user = serializer.save() |
|
|
|
|
|
|
|
# if using drf authtoken, create a new token |
|
|
|
|
|
|
|
if hasattr(user, 'auth_token'): |
|
|
|
|
|
|
|
user.auth_token.delete() |
|
|
|
|
|
|
|
token, created = Token.objects.get_or_create(user=user) |
|
|
|
|
|
|
|
# return new token |
|
|
|
|
|
|
|
return Response({'token': token.key}, status=status.HTTP_200_OK) |
|
|
|
|
|
|
|
|
|
|
|
class ClubViewSet(viewsets.ModelViewSet): |
|
|
|
class ClubViewSet(viewsets.ModelViewSet): |
|
|
|
queryset = Club.objects.all() |
|
|
|
queryset = Club.objects.all() |
|
|
|
serializer_class = ClubSerializer |
|
|
|
serializer_class = ClubSerializer |
|
|
|
@ -89,14 +124,33 @@ class ClubViewSet(viewsets.ModelViewSet): |
|
|
|
def perform_create(self, serializer): |
|
|
|
def perform_create(self, serializer): |
|
|
|
serializer.save(creator=self.request.user) |
|
|
|
serializer.save(creator=self.request.user) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EventViewSet(viewsets.ModelViewSet): |
|
|
|
|
|
|
|
queryset = Event.objects.all() |
|
|
|
|
|
|
|
serializer_class = EventSerializer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
|
|
|
|
user = self.request.user |
|
|
|
|
|
|
|
if user.is_anonymous: |
|
|
|
|
|
|
|
return [] |
|
|
|
|
|
|
|
events = set(self.queryset.filter(creator=user)) |
|
|
|
|
|
|
|
for club in user.authorized_clubs.all(): |
|
|
|
|
|
|
|
for event in club.event_set.all(): |
|
|
|
|
|
|
|
events.add(event) |
|
|
|
|
|
|
|
return events |
|
|
|
|
|
|
|
|
|
|
|
class TournamentViewSet(viewsets.ModelViewSet): |
|
|
|
class TournamentViewSet(viewsets.ModelViewSet): |
|
|
|
queryset = Tournament.objects.all() |
|
|
|
queryset = Tournament.objects.all() |
|
|
|
serializer_class = TournamentSerializer |
|
|
|
serializer_class = TournamentSerializer |
|
|
|
|
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
def get_queryset(self): |
|
|
|
if self.request.user.is_anonymous: |
|
|
|
user = self.request.user |
|
|
|
|
|
|
|
if user.is_anonymous: |
|
|
|
return [] |
|
|
|
return [] |
|
|
|
return self.queryset.filter(event__creator=self.request.user) |
|
|
|
tournaments = set(self.queryset.filter(event__creator=user)) |
|
|
|
|
|
|
|
for club in user.authorized_clubs.all(): |
|
|
|
|
|
|
|
for tournament in club.tournaments_set(): |
|
|
|
|
|
|
|
tournaments.add(tournament) |
|
|
|
|
|
|
|
return tournaments |
|
|
|
|
|
|
|
|
|
|
|
class PurchaseViewSet(viewsets.ModelViewSet): |
|
|
|
class PurchaseViewSet(viewsets.ModelViewSet): |
|
|
|
queryset = Purchase.objects.all() |
|
|
|
queryset = Purchase.objects.all() |
|
|
|
@ -120,29 +174,6 @@ class PurchaseViewSet(viewsets.ModelViewSet): |
|
|
|
# queryset = Tournament.objects.all() |
|
|
|
# queryset = Tournament.objects.all() |
|
|
|
# serializer_class = ExpandedTournamentSerializer |
|
|
|
# serializer_class = ExpandedTournamentSerializer |
|
|
|
|
|
|
|
|
|
|
|
class ChangePasswordView(UpdateAPIView): |
|
|
|
|
|
|
|
serializer_class = ChangePasswordSerializer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def update(self, request, *args, **kwargs): |
|
|
|
|
|
|
|
serializer = self.get_serializer(data=request.data) |
|
|
|
|
|
|
|
serializer.is_valid(raise_exception=True) |
|
|
|
|
|
|
|
user = serializer.save() |
|
|
|
|
|
|
|
# if using drf authtoken, create a new token |
|
|
|
|
|
|
|
if hasattr(user, 'auth_token'): |
|
|
|
|
|
|
|
user.auth_token.delete() |
|
|
|
|
|
|
|
token, created = Token.objects.get_or_create(user=user) |
|
|
|
|
|
|
|
# return new token |
|
|
|
|
|
|
|
return Response({'token': token.key}, status=status.HTTP_200_OK) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EventViewSet(viewsets.ModelViewSet): |
|
|
|
|
|
|
|
queryset = Event.objects.all() |
|
|
|
|
|
|
|
serializer_class = EventSerializer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
|
|
|
|
if self.request.user.is_anonymous: |
|
|
|
|
|
|
|
return [] |
|
|
|
|
|
|
|
return self.queryset.filter(creator=self.request.user) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RoundViewSet(viewsets.ModelViewSet): |
|
|
|
class RoundViewSet(viewsets.ModelViewSet): |
|
|
|
queryset = Round.objects.all() |
|
|
|
queryset = Round.objects.all() |
|
|
|
serializer_class = RoundSerializer |
|
|
|
serializer_class = RoundSerializer |
|
|
|
|