from django.shortcuts import render
from rest_framework import mixins
from rest_framework import generics
from .serializers import *
from rest_framework.response import Response
from rest_framework import status
# from rest_framework import permissions
# from .models import City, Region
from main_auth import permissions
# Create your views here.


class CityApiView(mixins.ListModelMixin,
                  mixins.CreateModelMixin,
                  generics.GenericAPIView):
    queryset = City.objects.select_related('region').order_by('-id')
    serializer_class = CitySerializer
    permission_classes = (permissions.MyAdminUser,)

    def get(self, request, *args, **kwargs):
        city = City.objects.select_related('region').order_by('-id')
        city_serial = CitySerializer(city, many=True)
        return Response({'data': city_serial.data}, status=status.HTTP_200_OK)

    def post(self, request, *args, **kwargs):
        city = CitySerializer(data=request.data)
        city.is_valid(raise_exception=True)
        city.save()
        return Response({'data': city.data}, status=status.HTTP_201_CREATED)


class RegionApiView(mixins.DestroyModelMixin,
                    mixins.UpdateModelMixin,
                    generics.ListCreateAPIView):
    queryset = Region.objects.order_by('-id')
    serializer_class = RegionSerializer
    permission_classes = (permissions.MyAdminUser,)

    def get(self, request, *args, **kwargs):
        region_serial = RegionSerializer(self.get_queryset(), many=True)
        return Response({'data': region_serial.data}, status=status.HTTP_200_OK)

    def post(self, request, *args, **kwargs):
        region = RegionSerializer(data=request.data)
        region.is_valid(raise_exception=True)
        region.save()
        return Response({'data': region.data}, status=status.HTTP_201_CREATED)