Website/api/views.py

87 lines
3.1 KiB
Python

from rest_framework import generics, permissions, mixins
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
from .models import *
from .filters import *
from .actions import *
from .serializers import *
from .permissions import *
from users.models import *
from users.serializers import *
@method_decorator(csrf_exempt, name='dispatch')
class ProvincesView(generics.ListCreateAPIView):
permission_classes = (IsSuperUserOrReadOnly,)
queryset = Province.objects.all()
serializer_class = ProvinceSerializer
@method_decorator(csrf_exempt, name='dispatch')
class ProvinceView(generics.RetrieveUpdateDestroyAPIView):
permission_classes = (IsSuperUserOrReadOnly,)
queryset = Province.objects.all()
serializer_class = ProvinceSerializer
@method_decorator(csrf_exempt, name='dispatch')
class AssaultTroopsView(generics.ListCreateAPIView):
permission_classes = (IsSuperUserOrReadOnly,)
queryset = AssaultTroop.objects.all()
serializer_class = AssaultTroopSerializer
@method_decorator(csrf_exempt, name='dispatch')
class AssaultTroopView(generics.RetrieveUpdateDestroyAPIView):
permission_classes = (IsSuperUserOrReadOnly,)
queryset = AssaultTroop.objects.all()
serializer_class = AssaultTroopSerializer
@method_decorator(csrf_exempt, name='dispatch')
class PlayersView(generics.ListCreateAPIView):
permission_classes = (IsStaff,) # Only Staff can see player info, i.e. authorized servers
queryset = Player.objects.all()
serializer_class = PlayerSerializer
@method_decorator(csrf_exempt, name='dispatch')
class PlayerView(generics.RetrieveUpdateDestroyAPIView):
permission_classes = (IsStaff,)
queryset = Player.objects.all()
serializer_class = PlayerSerializer
@method_decorator(csrf_exempt, name='dispatch')
class ServersView(generics.ListCreateAPIView):
permission_classes = (IsSuperUserOrReadOnly,)
queryset = Server.objects.all()
serializer_class = ServerSerializer
@method_decorator(csrf_exempt, name='dispatch')
class ServerView(generics.RetrieveUpdateDestroyAPIView):
permission_classes = (IsSuperUserOrReadOnly,)
queryset = Server.objects.all()
serializer_class = ServerSerializer
@method_decorator(csrf_exempt, name='dispatch')
class UserDatumView(generics.RetrieveUpdateDestroyAPIView):
permission_classes = (IsSuperUser,)
queryset = UserData.objects.all()
serializer_class = UserDataSerializer
# filter_backends = [UserDataFilterBackend]
@method_decorator(csrf_exempt, name='dispatch')
class UserDataView(generics.ListCreateAPIView):
permission_classes = (IsSuperUserOrAuthReadOnly,)
queryset = UserData.objects.all()
serializer_class = UserDataSerializer
filter_backends = [UserDataFilterBackend]
@method_decorator(csrf_exempt, name='dispatch')
class UserActionView(mixins.CreateModelMixin, generics.GenericAPIView):
permission_classes = (permissions.IsAuthenticated,)
queryset = UserAction.objects.all()
serializer_class = UserActionSerializer
def post(self, request, *args, **kwargs):
process_action(request)
return self.create(request, *args, **kwargs)