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.
48 lines
1.9 KiB
48 lines
1.9 KiB
from django.shortcuts import render
|
|
from django.http import HttpResponse
|
|
from .serializers import ClubSerializer, TournamentSerializer, UserSerializer, ChangePasswordSerializer
|
|
from .models import Club, Tournament, CustomUser
|
|
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
|
|
|
|
def index(request):
|
|
return HttpResponse("Hello, you're at the top of the world.")
|
|
|
|
@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 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)
|
|
|