#coding:utf-8 from django.shortcuts import render, get_object_or_404 from .serializers import ClubSerializer, TournamentSerializer, ExpandedTournamentSerializer, UserSerializer, ChangePasswordSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamStateSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer from .models import Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamState, TeamRegistration, PlayerRegistration from .models import TeamCall from rest_framework import viewsets, permissions from rest_framework.authtoken.models import Token from rest_framework.response import Response from rest_framework.decorators import api_view from rest_framework import status from rest_framework.generics import UpdateAPIView from datetime import date # TODO: 1 app core (avec les models), 1 app web, 1 app API pour séparer les views ## # Web UI ## def index(request): today = date.today() future_tournaments = Tournament.objects.filter(end_date__isnull=True, start_date__gt=today).order_by('start_date') live_tournaments = Tournament.objects.filter(end_date__isnull=True, start_date__lte=today).order_by('start_date') ended_tournaments = Tournament.objects.filter(end_date__isnull=False).order_by('start_date') return render( request, "tournaments/tournaments.html", { 'future': future_tournaments, 'live': live_tournaments, 'ended': ended_tournaments, }, content_type="text/html", ) def tournament(request, tournament_id): tournament = get_object_or_404(Tournament, pk=tournament_id) today = date.today() future_matches = Match.objects.filter(end_date__isnull=True, start_date__gt=today).order_by('start_date') live_matches = Match.objects.filter(end_date__isnull=True, start_date__lte=today).order_by('start_date') ended_matches = Match.objects.filter(end_date__isnull=False).order_by('start_date') context = { 'future': future_matches, 'live': live_matches, 'ended': ended_matches, } return render(request, "tournaments/tournament.html", context) def tournament_planning(request, tournament_id): tournament = get_object_or_404(Tournament, pk=tournament_id) team_calls = tournament.team_calls() context = {'team_calls': team_calls} return render(request, "tournaments/planning.html", context) def tournament_stream(request, tournament_id): tournament = get_object_or_404(Tournament, pk=tournament_id) return render(request, "tournaments/tournament_stream.html", { "tournament": tournament, }) # def index(request): # club = Club.objects.first() # live_matches = Match.objects.filter(enddate__isnull=True).order_by('court') # ended_matches = Match.objects.filter(enddate__isnull=False).order_by('court') # template = loader.get_template('scores/index.html') # context = { # 'club': club, # 'live_matches': live_matches, # 'ended_matches': ended_matches, # } # return HttpResponse(template.render(context, request)) ## # API ## @api_view(['GET']) def user_by_token(request): # return Response({"message": "Hello for today! See you tomorrow!"}) # key = request.data['token'] # token = Token.objects.get(key=key) # user = CustomUser.objects.get(username=token.user) serializer = UserSerializer(request.user) return Response(serializer.data, status=status.HTTP_200_OK) class UserViewSet(viewsets.ModelViewSet): queryset = CustomUser.objects.all() serializer_class = UserSerializer class ClubViewSet(viewsets.ModelViewSet): queryset = Club.objects.all() serializer_class = ClubSerializer class TournamentViewSet(viewsets.ModelViewSet): queryset = Tournament.objects.all() serializer_class = TournamentSerializer class ExpandedTournamentViewSet(viewsets.ModelViewSet): queryset = Tournament.objects.all() 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 class RoundViewSet(viewsets.ModelViewSet): queryset = Round.objects.all() serializer_class = RoundSerializer class GroupStageViewSet(viewsets.ModelViewSet): queryset = GroupStage.objects.all() serializer_class = GroupStageSerializer class MatchViewSet(viewsets.ModelViewSet): queryset = Match.objects.all() serializer_class = MatchSerializer class TeamStateViewSet(viewsets.ModelViewSet): queryset = TeamState.objects.all() serializer_class = TeamStateSerializer class TeamRegistrationViewSet(viewsets.ModelViewSet): queryset = TeamRegistration.objects.all() serializer_class = TeamRegistrationSerializer class PlayerRegistrationViewSet(viewsets.ModelViewSet): queryset = PlayerRegistration.objects.all() serializer_class = PlayerRegistrationSerializer