This commit is contained in:
Mohamed Nouffer
2022-04-27 15:47:37 +05:30
parent 4bc68e947e
commit 11037587df
7 changed files with 202 additions and 77 deletions

View File

@ -1,8 +1,10 @@
from django.core.serializers import serialize
from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf
from rest_framework import viewsets
from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer
from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer
from knox.models import AuthToken
from rest_framework import viewsets, permissions, generics
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.parsers import JSONParser, MultiPartParser
@ -39,16 +41,26 @@ class Jpn_PerfViewSet(viewsets.ModelViewSet):
def LocationsInPerf(request):
perfecture = request.GET.get('perf')
cat = request.GET.get('cat')
perf_geom = JpnAdminMainPerf.objects.get(id=perfecture)
locs = Location.objects.filter(geom__within=perf_geom.geom)
if(cat):
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat)
else:
locs = Location.objects.filter(geom__within=perf_geom.geom)
serializer = LocationSerializer(locs, many=True)
return JsonResponse(serializer.data, safe=False)
#return JsonResponse({})
def LocationsInSubPerf(request):
subperfecture = request.GET.get('subperf')
cat = request.GET.get('cat')
perf_geom = JpnSubPerf.objects.get(id=subperfecture)
locs = Location.objects.filter(geom__within=perf_geom.geom)
if(cat):
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat)
else:
locs = Location.objects.filter(geom__within=perf_geom.geom)
serializer = LocationSerializer(locs, many=True)
return JsonResponse(serializer.data, safe=False)
@ -65,7 +77,7 @@ def SubPerfInMainPerf(request):
prefecture = request.GET.get('perf')
perf_geom = JpnAdminMainPerf.objects.get(id=prefecture)
sub = JpnSubPerf.objects.filter(geom__within=perf_geom.geom)
serializer = JPN_sub_perSerializer
#serializer = JPN_sub_perSerializer
#sub = JpnAdminPerf.objects.filter(geom__within=perf_geom.geom)
serializer = JPN_sub_perSerializer(sub, many=True)
return JsonResponse(serializer.data, safe=False)
@ -84,4 +96,41 @@ def ExtentForSubPerf(request):
ext = sub_perf.geom.extent
# iata = serializers.serialize("json",ext)
return JsonResponse(ext, safe=False)
def CatView(request):
c = Location.objects.values('category').distinct()
serializer = LocationCatSerializer(c, many=True)
return JsonResponse(serializer.data, safe=False)
class RegistrationAPI(generics.GenericAPIView):
serializer_class = CreateUserSerializer
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.save()
return Response({
"user": UserSerializer(user, context=self.get_serializer_context()).data,
"token": AuthToken.objects.create(user)[1]
})
class LoginAPI(generics.GenericAPIView):
serializer_class = LoginUserSerializer
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data
return Response({
"user": UserSerializer(user, context=self.get_serializer_context()).data,
"token": AuthToken.objects.create(user)[1]
})
class UserAPI(generics.RetrieveAPIView):
permission_classes = [permissions.IsAuthenticated, ]
serializer_class = UserSerializer
def get_object(self):
return self.request.user