You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
padelclub_backend/tournaments/views.py

151 lines
5.4 KiB

#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