This commit is contained in:
Mohamed Nouffer
2022-04-05 16:36:21 +05:30
parent 3ac4cafcf1
commit cdeeb95366
5 changed files with 50 additions and 8 deletions

View File

@ -2,7 +2,7 @@ from django.contrib import admin
from leaflet.admin import LeafletGeoAdmin from leaflet.admin import LeafletGeoAdmin
from leaflet.admin import LeafletGeoAdminMixin from leaflet.admin import LeafletGeoAdminMixin
from leaflet_admin_list.admin import LeafletAdminListMixin 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): 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_line, LeafletGeoAdmin)
admin.site.register(Location_polygon, LeafletGeoAdmin) admin.site.register(Location_polygon, LeafletGeoAdmin)
admin.site.register(JpnAdminMainPerf, 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) admin.site.register(ShapeLayers, admin.ModelAdmin)

View File

@ -65,6 +65,23 @@ class JpnAdminPerf(models.Model):
db_table = 'jpn_admin_perf' 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): class RogUser(models.Model):
user=models.OneToOneField(User, on_delete=models.CASCADE) user=models.OneToOneField(User, on_delete=models.CASCADE)
email=models.EmailField(_('Email')) email=models.EmailField(_('Email'))

View File

@ -1,7 +1,7 @@
from rest_framework import serializers from rest_framework import serializers
from rest_framework_gis.serializers import GeoFeatureModelSerializer from rest_framework_gis.serializers import GeoFeatureModelSerializer
from sqlalchemy.sql.functions import mode 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 from drf_extra_fields.fields import Base64ImageField
@ -30,6 +30,12 @@ class JPN_main_perfSerializer(serializers.ModelSerializer):
model=JpnAdminMainPerf model=JpnAdminMainPerf
fields=['id', 'adm0_en', 'adm0_ja', 'adm0_pcode', 'adm1_en', 'adm1_ja', 'adm1_pcode'] 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 JPN_perfSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model=JpnAdminPerf model=JpnAdminPerf

View File

@ -1,6 +1,6 @@
from rest_framework import urlpatterns from rest_framework import urlpatterns
from rest_framework.routers import DefaultRouter 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 from django.urls import path, include
@ -17,6 +17,7 @@ urlpatterns = router.urls
urlpatterns += [ urlpatterns += [
path('inperf/', LocationsInPerf, name="location_perf"), 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('perfext/', ExtentForSubPerf, name="sub_perf_ext"),
path('mainperfext/', ExtentForMainPerf, name="main_perf_ext"),
] ]

View File

@ -1,7 +1,7 @@
from django.core.serializers import serialize 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 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.decorators import action
from rest_framework.response import Response from rest_framework.response import Response
@ -54,9 +54,26 @@ def SubInPerf(request):
return JsonResponse(serializer.data, safe=False) 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): def ExtentForSubPerf(request):
sub_perf_id = request.GET.get('sub_perf') 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 ext = sub_perf.geom.extent
# iata = serializers.serialize("json",ext) # iata = serializers.serialize("json",ext)
return JsonResponse(ext, safe=False) return JsonResponse(ext, safe=False)