diff --git a/rog/admin.py b/rog/admin.py index d72a736..fded166 100644 --- a/rog/admin.py +++ b/rog/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin from leaflet.admin import LeafletGeoAdmin from leaflet.admin import LeafletGeoAdminMixin from leaflet_admin_list.admin import LeafletAdminListMixin -from .models import RogUser, Location, SystemSettings, JoinedEvent, Favorite, TravelList, TravelPoint, ShapeLayers, Event, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf +from .models import RogUser, Location, SystemSettings, JoinedEvent, Favorite, TravelList, TravelPoint, ShapeLayers, Event, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf class RogAdmin(LeafletAdminListMixin, LeafletGeoAdminMixin, admin.ModelAdmin): @@ -28,5 +28,6 @@ admin.site.register(Event, admin.ModelAdmin) admin.site.register(Location_line, LeafletGeoAdmin) admin.site.register(Location_polygon, LeafletGeoAdmin) admin.site.register(JpnAdminMainPerf, LeafletGeoAdmin) -admin.site.register(JpnAdminPerf, LeafletGeoAdmin) +#admin.site.register(JpnAdminPerf, LeafletGeoAdmin) +admin.site.register(JpnSubPerf, LeafletGeoAdmin) admin.site.register(ShapeLayers, admin.ModelAdmin) \ No newline at end of file diff --git a/rog/models.py b/rog/models.py index c8c17a7..ee2fdb9 100644 --- a/rog/models.py +++ b/rog/models.py @@ -65,6 +65,23 @@ class JpnAdminPerf(models.Model): db_table = 'jpn_admin_perf' +class JpnSubPerf(models.Model): + geom = models.MultiPolygonField(blank=True, null=True) + adm0_en = models.CharField(max_length=254, blank=True, null=True) + adm0_ja = models.CharField(max_length=254, blank=True, null=True) + adm0_pcode = models.CharField(max_length=254, blank=True, null=True) + adm1_en = models.CharField(max_length=254, blank=True, null=True) + adm1_ja = models.CharField(max_length=254, blank=True, null=True) + adm1_pcode = models.CharField(max_length=254, blank=True, null=True) + adm2_ja = models.CharField(max_length=254, blank=True, null=True) + adm2_en = models.CharField(max_length=254, blank=True, null=True) + adm2_pcode = models.CharField(max_length=254, blank=True, null=True) + + class Meta: + managed = False + db_table = 'jpn_sub_perf' + + class RogUser(models.Model): user=models.OneToOneField(User, on_delete=models.CASCADE) email=models.EmailField(_('Email')) diff --git a/rog/serializers.py b/rog/serializers.py index bb069ab..d52b50b 100644 --- a/rog/serializers.py +++ b/rog/serializers.py @@ -1,7 +1,7 @@ from rest_framework import serializers from rest_framework_gis.serializers import GeoFeatureModelSerializer from sqlalchemy.sql.functions import mode -from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf +from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf from drf_extra_fields.fields import Base64ImageField @@ -30,6 +30,12 @@ class JPN_main_perfSerializer(serializers.ModelSerializer): model=JpnAdminMainPerf fields=['id', 'adm0_en', 'adm0_ja', 'adm0_pcode', 'adm1_en', 'adm1_ja', 'adm1_pcode'] +class JPN_sub_perSerializer(serializers.ModelSerializer): + class Meta: + model=JpnSubPerf + fields=['id', 'adm0_en', 'adm0_ja', 'adm0_pcode', 'adm1_en', 'adm1_ja', 'adm1_pcode', 'adm2_ja', 'adm2_en', 'adm2_pcode'] + + class JPN_perfSerializer(serializers.ModelSerializer): class Meta: model=JpnAdminPerf diff --git a/rog/urls.py b/rog/urls.py index 1f5fab2..3263353 100644 --- a/rog/urls.py +++ b/rog/urls.py @@ -1,6 +1,6 @@ from rest_framework import urlpatterns from rest_framework.routers import DefaultRouter -from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, Jpn_PerfViewSet, LocationsInPerf, SubInPerf, ExtentForSubPerf +from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, Jpn_PerfViewSet, LocationsInPerf, SubInPerf, ExtentForSubPerf, SubPerfInMainPerf, ExtentForMainPerf from django.urls import path, include @@ -17,6 +17,7 @@ urlpatterns = router.urls urlpatterns += [ path('inperf/', LocationsInPerf, name="location_perf"), - path('insubperf/', SubInPerf, name="sub_perf"), + path('subperfinmain/', SubPerfInMainPerf, name="sub_perf"), path('perfext/', ExtentForSubPerf, name="sub_perf_ext"), + path('mainperfext/', ExtentForMainPerf, name="main_perf_ext"), ] \ No newline at end of file diff --git a/rog/views.py b/rog/views.py index 2442df6..466c8e0 100644 --- a/rog/views.py +++ b/rog/views.py @@ -1,7 +1,7 @@ from django.core.serializers import serialize -from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf +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 +from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer from rest_framework.decorators import action from rest_framework.response import Response @@ -54,9 +54,26 @@ def SubInPerf(request): 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 = JpnAdminPerf.objects.get(id=sub_perf_id) + sub_perf = JpnSubPerf.objects.get(id=sub_perf_id) ext = sub_perf.geom.extent # iata = serializers.serialize("json",ext) return JsonResponse(ext, safe=False)