136 lines
5.0 KiB
Python
136 lines
5.0 KiB
Python
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, 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
|
|
from .serializers import LocationSerializer
|
|
from django.http import JsonResponse
|
|
|
|
|
|
|
|
class LocationViewSet(viewsets.ModelViewSet):
|
|
queryset=Location.objects.all()
|
|
serializer_class=LocationSerializer
|
|
filter_fields=["prefecture", "location_name"]
|
|
|
|
|
|
class Location_lineViewSet(viewsets.ModelViewSet):
|
|
queryset=Location_line.objects.all()
|
|
serializer_class=Location_lineSerializer
|
|
|
|
|
|
class Location_polygonViewSet(viewsets.ModelViewSet):
|
|
queryset=Location_polygon.objects.all()
|
|
serializer_class=Location_polygonSerializer
|
|
|
|
|
|
class Jpn_Main_PerfViewSet(viewsets.ModelViewSet):
|
|
queryset=JpnAdminMainPerf.objects.all()
|
|
serializer_class=JPN_main_perfSerializer
|
|
filter_fields = ["adm1_ja"]
|
|
|
|
class Jpn_PerfViewSet(viewsets.ModelViewSet):
|
|
queryset=JpnAdminPerf.objects.all()
|
|
serializer_class=JPN_perfSerializer
|
|
|
|
|
|
def LocationsInPerf(request):
|
|
perfecture = request.GET.get('perf')
|
|
cat = request.GET.get('cat')
|
|
perf_geom = JpnAdminMainPerf.objects.get(id=perfecture)
|
|
|
|
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)
|
|
|
|
def LocationsInSubPerf(request):
|
|
subperfecture = request.GET.get('subperf')
|
|
cat = request.GET.get('cat')
|
|
perf_geom = JpnSubPerf.objects.get(id=subperfecture)
|
|
|
|
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)
|
|
|
|
|
|
def SubInPerf(request):
|
|
prefecture = request.GET.get('perf')
|
|
perf_geom = JpnAdminMainPerf.objects.get(id=prefecture)
|
|
sub = JpnAdminPerf.objects.filter(geom__within=perf_geom.geom)
|
|
serializer = JPN_perfSerializer(sub, many=True)
|
|
return JsonResponse(serializer.data, safe=False)
|
|
|
|
|
|
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
|
|
#sub = JpnAdminPerf.objects.filter(geom__within=perf_geom.geom)
|
|
serializer = JPN_sub_perSerializer(sub, many=True)
|
|
return JsonResponse(serializer.data, safe=False)
|
|
|
|
|
|
def ExtentForMainPerf(request):
|
|
perf_id = request.GET.get('perf')
|
|
perf = JpnAdminMainPerf.objects.get(id=perf_id)
|
|
ext = perf.geom.extent
|
|
# iata = serializers.serialize("json",ext)
|
|
return JsonResponse(ext, safe=False)
|
|
|
|
def ExtentForSubPerf(request):
|
|
sub_perf_id = request.GET.get('sub_perf')
|
|
sub_perf = JpnSubPerf.objects.get(id=sub_perf_id)
|
|
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 |