Convert Location to Location2025
This commit is contained in:
@ -4,7 +4,7 @@ from django.shortcuts import render,redirect
|
|||||||
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, Location2025, SystemSettings, JoinedEvent, Favorite, TravelList, TravelPoint, ShapeLayers, Event, Location_line, Location_polygon, JpnAdminMainPerf, Useractions, CustomUser, GifuAreas, UserTracks, templocation, UserUpload, EventUser, GoalImages, CheckinImages, NewEvent2, Team, NewCategory, Entry, Member, TempUser, GifurogeRegister, GpsLog, GpsCheckin, Checkpoint, Waypoint
|
from .models import RogUser, Location2025, SystemSettings, JoinedEvent, Favorite, TravelList, TravelPoint, ShapeLayers, Event, Location_line, Location_polygon, JpnAdminMainPerf, Useractions, CustomUser, GifuAreas, UserTracks, templocation, UserUpload, EventUser, GoalImages, CheckinImages, NewEvent2, Team, NewCategory, Entry, Member, TempUser, GifurogeRegister, GpsLog, GpsCheckin, Checkpoint, Waypoint
|
||||||
from django.contrib.auth.admin import UserAdmin
|
from django.contrib.auth.admin import UserAdmin
|
||||||
from django.urls import path,reverse
|
from django.urls import path,reverse
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
@ -749,9 +749,9 @@ class LocationAdmin(LeafletGeoAdmin):
|
|||||||
def tranfer_to_location(modeladmin, request, queryset):
|
def tranfer_to_location(modeladmin, request, queryset):
|
||||||
tmp_locs = templocation.objects.all();
|
tmp_locs = templocation.objects.all();
|
||||||
for l in tmp_locs :
|
for l in tmp_locs :
|
||||||
found = Location.objects.filter(location_id = l.location_id).exists()
|
found = Location2025.objects.filter(location_id = l.location_id).exists()
|
||||||
if found:
|
if found:
|
||||||
Location.objects.filter(location_id = l.location_id).update(
|
Location2025.objects.filter(location_id = l.location_id).update(
|
||||||
sub_loc_id = l.sub_loc_id,
|
sub_loc_id = l.sub_loc_id,
|
||||||
cp = l.cp,
|
cp = l.cp,
|
||||||
location_name = l.location_name,
|
location_name = l.location_name,
|
||||||
@ -794,7 +794,7 @@ def tranfer_to_location(modeladmin, request, queryset):
|
|||||||
geom=l.geom
|
geom=l.geom
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
loc = Location(
|
loc = Location2025(
|
||||||
location_id=l.location_id,
|
location_id=l.location_id,
|
||||||
sub_loc_id = l.sub_loc_id,
|
sub_loc_id = l.sub_loc_id,
|
||||||
cp = l.cp,
|
cp = l.cp,
|
||||||
@ -983,7 +983,6 @@ class CustomUserAdmin(UserAdmin):
|
|||||||
|
|
||||||
admin.site.register(Useractions)
|
admin.site.register(Useractions)
|
||||||
admin.site.register(RogUser, admin.ModelAdmin)
|
admin.site.register(RogUser, admin.ModelAdmin)
|
||||||
admin.site.register(Location, LocationAdmin)
|
|
||||||
admin.site.register(SystemSettings, admin.ModelAdmin)
|
admin.site.register(SystemSettings, admin.ModelAdmin)
|
||||||
admin.site.register(JoinedEvent, admin.ModelAdmin)
|
admin.site.register(JoinedEvent, admin.ModelAdmin)
|
||||||
admin.site.register(Favorite, admin.ModelAdmin)
|
admin.site.register(Favorite, admin.ModelAdmin)
|
||||||
|
|||||||
@ -6,7 +6,7 @@ from django.db import transaction, connections
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from rog.models import Member, Team, NewEvent2, Entry, Location,NewCategory #, GpsLog
|
from rog.models import Member, Team, NewEvent2, Entry, Location2025,NewCategory #, GpsLog
|
||||||
|
|
||||||
CustomUser = get_user_model()
|
CustomUser = get_user_model()
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -473,7 +473,7 @@ class Command(BaseCommand):
|
|||||||
|
|
||||||
# 4. Locationテーブルからcheckpoint_tableへの転送
|
# 4. Locationテーブルからcheckpoint_tableへの転送
|
||||||
self.stdout.write('checkpointデータを転送中...')
|
self.stdout.write('checkpointデータを転送中...')
|
||||||
locations = Location.objects.filter(group=event.event_name)
|
locations = Location2025.objects.filter(group=event.event_name)
|
||||||
# Print the number of location records
|
# Print the number of location records
|
||||||
location_count = locations.count()
|
location_count = locations.count()
|
||||||
self.stdout.write(f'checkpointデータ: {location_count}件を転送中...')
|
self.stdout.write(f'checkpointデータ: {location_count}件を転送中...')
|
||||||
@ -568,7 +568,7 @@ class Command(BaseCommand):
|
|||||||
try:
|
try:
|
||||||
# 4. Locationテーブルからcheckpoint_tableへの転送
|
# 4. Locationテーブルからcheckpoint_tableへの転送
|
||||||
self.stdout.write('checkpointデータを転送中...')
|
self.stdout.write('checkpointデータを転送中...')
|
||||||
locations = Location.objects.filter(event=event)
|
locations = Location2025.objects.filter(event_id=event.id)
|
||||||
|
|
||||||
for location in locations:
|
for location in locations:
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
|
|||||||
@ -14,7 +14,7 @@ from django.db import transaction
|
|||||||
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, Useractions, GifuAreas, RogUser, UserTracks, GoalImages, CheckinImages,CustomUser,NewEvent,NewEvent2, Team, NewCategory, Category, Entry, Member, TempUser,EntryMember, AppVersion, UploadedImage
|
from .models import Location2025, Location_line, Location_polygon, JpnAdminMainPerf, Useractions, GifuAreas, RogUser, UserTracks, GoalImages, CheckinImages,CustomUser,NewEvent,NewEvent2, Team, NewCategory, Category, Entry, Member, TempUser,EntryMember, AppVersion, UploadedImage
|
||||||
from drf_extra_fields.fields import Base64ImageField
|
from drf_extra_fields.fields import Base64ImageField
|
||||||
|
|
||||||
#from django.contrib.auth.models import User
|
#from django.contrib.auth.models import User
|
||||||
@ -32,7 +32,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
class LocationCatSerializer(serializers.ModelSerializer):
|
class LocationCatSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model=Location
|
model=Location2025
|
||||||
fields=['category',]
|
fields=['category',]
|
||||||
|
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ class LocationSerializer(GeoFeatureModelSerializer):
|
|||||||
interaction_instructions = serializers.SerializerMethodField()
|
interaction_instructions = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model=Location
|
model=Location2025
|
||||||
geo_field='geom'
|
geo_field='geom'
|
||||||
fields="__all__"
|
fields="__all__"
|
||||||
|
|
||||||
@ -326,7 +326,7 @@ class UserDestinationSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class LocationEventNameSerializer(serializers.ModelSerializer):
|
class LocationEventNameSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Location
|
model = Location2025
|
||||||
fields = ('id', 'event_name',)
|
fields = ('id', 'event_name',)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
96
rog/views.py
96
rog/views.py
@ -35,7 +35,7 @@ from .permissions import IsTeamOwner,IsTeamOwnerOrMember
|
|||||||
|
|
||||||
from curses.ascii import NUL
|
from curses.ascii import NUL
|
||||||
from django.core.serializers import serialize
|
from django.core.serializers import serialize
|
||||||
from .models import GoalImages, Location, Location_line, Location_polygon, JpnAdminMainPerf, Useractions, GifuAreas, RogUser, CustomUser, UserTracks, GoalImages, CheckinImages, NewEvent,NewEvent2, Team, Category, NewCategory,Entry, Member, TempUser, EntryMember, GpsCheckin
|
from .models import GoalImages, Location2025, Location_line, Location_polygon, JpnAdminMainPerf, Useractions, GifuAreas, RogUser, CustomUser, UserTracks, GoalImages, CheckinImages, NewEvent,NewEvent2, Team, Category, NewCategory,Entry, Member, TempUser, EntryMember, GpsCheckin
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, LocationCatSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer, GifuAreaSerializer, LocationEventNameSerializer, RogUserSerializer, UserTracksSerializer, ChangePasswordSerializer, GolaImageSerializer, CheckinImageSerializer, RegistrationSerializer, MemberWithUserSerializer,TempUserRegistrationSerializer, PasswordResetRequestSerializer, PasswordResetConfirmSerializer
|
from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, LocationCatSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer, GifuAreaSerializer, LocationEventNameSerializer, RogUserSerializer, UserTracksSerializer, ChangePasswordSerializer, GolaImageSerializer, CheckinImageSerializer, RegistrationSerializer, MemberWithUserSerializer,TempUserRegistrationSerializer, PasswordResetRequestSerializer, PasswordResetConfirmSerializer
|
||||||
from knox.models import AuthToken
|
from knox.models import AuthToken
|
||||||
@ -237,12 +237,12 @@ class NewEvent2Admin(admin.ModelAdmin):
|
|||||||
|
|
||||||
|
|
||||||
class LocationViewSet(viewsets.ModelViewSet):
|
class LocationViewSet(viewsets.ModelViewSet):
|
||||||
queryset=Location.objects.all()
|
queryset=Location2025.objects.all()
|
||||||
serializer_class=LocationSerializer
|
serializer_class=LocationSerializer
|
||||||
filter_fields=["prefecture", "location_name"]
|
filter_fields=["prefecture", "location_name"]
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = Location.objects.all()
|
queryset = Location2025.objects.all()
|
||||||
|
|
||||||
# リクエストパラメータの確認
|
# リクエストパラメータの確認
|
||||||
group_filter = self.request.query_params.get('group__contains')
|
group_filter = self.request.query_params.get('group__contains')
|
||||||
@ -390,25 +390,25 @@ def LocationsInPerf(request):
|
|||||||
if(cat):
|
if(cat):
|
||||||
if is_rog:
|
if is_rog:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat, group__contains=grp)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat, group__contains=grp)
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat)
|
||||||
else:
|
else:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, group__contains=grp, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=perf_geom.geom, category=cat, group__contains=grp, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=perf_geom.geom, category=cat, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
if is_rog:
|
if is_rog:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, group__contains=grp)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, group__contains=grp)
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=perf_geom.geom)
|
||||||
else:
|
else:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(geom__within=perf_geom.geom, group__contains=grp, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=perf_geom.geom, group__contains=grp, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(geom__within=perf_geom.geom, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=perf_geom.geom, location_name__contains='観光')
|
||||||
|
|
||||||
serializer = LocationSerializer(locs, many=True)
|
serializer = LocationSerializer(locs, many=True)
|
||||||
return JsonResponse(serializer.data, safe=False)
|
return JsonResponse(serializer.data, safe=False)
|
||||||
@ -423,22 +423,22 @@ def LocationsInSubPerf(request):
|
|||||||
if(cat):
|
if(cat):
|
||||||
if is_rog:
|
if is_rog:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat, group__contains=grp)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat, group__contains=grp)
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, category=cat)
|
||||||
else:
|
else:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, group__contains=grp, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=perf_geom.geom, category=cat, group__contains=grp, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(geom__within=perf_geom.geom, category=cat, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=perf_geom.geom, category=cat, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
if is_rog:
|
if is_rog:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, group__contains=grp)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=perf_geom.geom, group__contains=grp)
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=perf_geom.geom)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=perf_geom.geom)
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(geom__within=perf_geom.geom, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=perf_geom.geom, location_name__contains='観光')
|
||||||
serializer = LocationSerializer(locs, many=True)
|
serializer = LocationSerializer(locs, many=True)
|
||||||
return JsonResponse(serializer.data, safe=False)
|
return JsonResponse(serializer.data, safe=False)
|
||||||
|
|
||||||
@ -490,7 +490,7 @@ def LocationInBound(request):
|
|||||||
# 10km四方の領域を指定
|
# 10km四方の領域を指定
|
||||||
distance_from_point = 40000 # 中心から10km(半径)
|
distance_from_point = 40000 # 中心から10km(半径)
|
||||||
|
|
||||||
base_query = Location.objects.filter(
|
base_query = Location2025.objects.filter(
|
||||||
geom__distance_lte=(current_point, D(m=distance_from_point))
|
geom__distance_lte=(current_point, D(m=distance_from_point))
|
||||||
).annotate(distance=Distance('geom', current_point)).order_by('distance')
|
).annotate(distance=Distance('geom', current_point)).order_by('distance')
|
||||||
|
|
||||||
@ -536,13 +536,13 @@ def LocationInBound2(request):
|
|||||||
if lat is not None and lon is not None:
|
if lat is not None and lon is not None:
|
||||||
if grp:
|
if grp:
|
||||||
# grpがある場合、最初に絞り込む
|
# grpがある場合、最初に絞り込む
|
||||||
base_query = Location.objects.filter(group__contains=grp)
|
base_query = Location2025.objects.filter(group__contains=grp)
|
||||||
else:
|
else:
|
||||||
current_point = Point(lon, lat, srid=4326)
|
current_point = Point(lon, lat, srid=4326)
|
||||||
# 10km四方の領域を指定
|
# 10km四方の領域を指定
|
||||||
distance_from_point = 40000 # 中心から10km(半径)
|
distance_from_point = 40000 # 中心から10km(半径)
|
||||||
|
|
||||||
base_query = Location.objects.filter(
|
base_query = Location2025.objects.filter(
|
||||||
geom__distance_lte=(current_point, D(m=distance_from_point))
|
geom__distance_lte=(current_point, D(m=distance_from_point))
|
||||||
).annotate(distance=Distance('geom', current_point)).order_by('distance')
|
).annotate(distance=Distance('geom', current_point)).order_by('distance')
|
||||||
|
|
||||||
@ -592,7 +592,7 @@ def LocationInBound_orig(request):
|
|||||||
pl = geos.Polygon(((lon1, lat1), (lon2, lat2), (lon3, lat3), (lon4, lat4), (lon1, lat1)), srid=4326)
|
pl = geos.Polygon(((lon1, lat1), (lon2, lat2), (lon3, lat3), (lon4, lat4), (lon1, lat1)), srid=4326)
|
||||||
logger.debug(f"Created polygon: {pl}")
|
logger.debug(f"Created polygon: {pl}")
|
||||||
|
|
||||||
base_query = Location.objects.filter(geom__within=pl, event_name__isnull=True)
|
base_query = Location2025.objects.filter(geom__within=pl, event_name__isnull=True)
|
||||||
|
|
||||||
if cat:
|
if cat:
|
||||||
base_query = base_query.filter(category=cat)
|
base_query = base_query.filter(category=cat)
|
||||||
@ -617,25 +617,25 @@ def LocationInBound_orig(request):
|
|||||||
if(cat):
|
if(cat):
|
||||||
if is_rog:
|
if is_rog:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=pl, category=cat, event_name__isnull=True, group__contains=grp)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=pl, category=cat, event_name__isnull=True, group__contains=grp)
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=pl, category=cat, event_name__isnull=True)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=pl, category=cat, event_name__isnull=True)
|
||||||
else:
|
else:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, group__contains=grp, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, group__contains=grp, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=pl, category=cat, event_name__isnull=True, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
if is_rog:
|
if is_rog:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=pl, event_name__isnull=True, group__contains=grp)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=pl, event_name__isnull=True, group__contains=grp)
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(~Q(cp=0), geom__within=pl, event_name__isnull=True)
|
locs = Location2025.objects.filter(~Q(cp=0), geom__within=pl, event_name__isnull=True)
|
||||||
else:
|
else:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(geom__within=pl, event_name__isnull=True, group__contains=grp, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=pl, event_name__isnull=True, group__contains=grp, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(geom__within=pl, event_name__isnull=True, location_name__contains='観光')
|
locs = Location2025.objects.filter(geom__within=pl, event_name__isnull=True, location_name__contains='観光')
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if len(locs) > 200:
|
if len(locs) > 200:
|
||||||
@ -695,7 +695,7 @@ def ExtentForLocations(request):
|
|||||||
return JsonResponse({"error": "No event code associated with the user"}, status=status.HTTP_400_BAD_REQUEST)
|
return JsonResponse({"error": "No event code associated with the user"}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
locs = Location.objects.filter(group__contains=ec).aggregate(Extent('geom'), Union('geom'))
|
locs = Location2025.objects.filter(group__contains=ec).aggregate(Extent('geom'), Union('geom'))
|
||||||
|
|
||||||
if not locs['geom__extent']:
|
if not locs['geom__extent']:
|
||||||
logger.info(f"No locations found for event_code: {ec}")
|
logger.info(f"No locations found for event_code: {ec}")
|
||||||
@ -708,7 +708,7 @@ def ExtentForLocations(request):
|
|||||||
logger.error(f"Error in ExtentForLocations: {str(e)}", exc_info=True)
|
logger.error(f"Error in ExtentForLocations: {str(e)}", exc_info=True)
|
||||||
return JsonResponse({"error": "An error occurred while processing your request"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
return JsonResponse({"error": "An error occurred while processing your request"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||||
|
|
||||||
#locs = Location.objects.filter(group__contains=ec).aggregate(Extent('geom'), Union('geom'))
|
#locs = Location2025.objects.filter(group__contains=ec).aggregate(Extent('geom'), Union('geom'))
|
||||||
#return JsonResponse(locs['geom__extent'], safe=False)
|
#return JsonResponse(locs['geom__extent'], safe=False)
|
||||||
|
|
||||||
|
|
||||||
@ -747,15 +747,15 @@ def CatView(request):
|
|||||||
|
|
||||||
if(lat1 != None and lon1 != None and lat2 != None and lon2 != None and lat3 != None and lon3 != None and lat4 != None and lon4 != None):
|
if(lat1 != None and lon1 != None and lat2 != None and lon2 != None and lat3 != None and lon3 != None and lat4 != None and lon4 != None):
|
||||||
pl = geos.Polygon(((lon1, lat1), (lon2, lat2), (lon3, lat3), (lon4, lat4), (lon1, lat1)), srid=4326)
|
pl = geos.Polygon(((lon1, lat1), (lon2, lat2), (lon3, lat3), (lon4, lat4), (lon1, lat1)), srid=4326)
|
||||||
#locs = Location.objects.filter(geom__within=pl)
|
#locs = Location2025.objects.filter(geom__within=pl)
|
||||||
c = Location.objects.filter(geom__within=pl).values('category').distinct()
|
c = Location2025.objects.filter(geom__within=pl).values('category').distinct()
|
||||||
serializer = LocationCatSerializer(c, many=True)
|
serializer = LocationCatSerializer(c, many=True)
|
||||||
return JsonResponse(serializer.data, safe=False)
|
return JsonResponse(serializer.data, safe=False)
|
||||||
else:
|
else:
|
||||||
return null
|
return null
|
||||||
|
|
||||||
|
|
||||||
c = Location.objects.filter().values('category').distinct()
|
c = Location2025.objects.filter().values('category').distinct()
|
||||||
serializer = LocationCatSerializer(c, many=True)
|
serializer = LocationCatSerializer(c, many=True)
|
||||||
return JsonResponse(serializer.data, safe=False)
|
return JsonResponse(serializer.data, safe=False)
|
||||||
|
|
||||||
@ -764,7 +764,7 @@ def CatByCity(request):
|
|||||||
city = request.GET.get('city')
|
city = request.GET.get('city')
|
||||||
if(city != None):
|
if(city != None):
|
||||||
cilt_polygon = JpnSubPerf.objects.filter(adm1_ja=city)
|
cilt_polygon = JpnSubPerf.objects.filter(adm1_ja=city)
|
||||||
cats = Location.objects.filter(geom__within=cilt_polygon[0].geom).values('category').distinct()
|
cats = Location2025.objects.filter(geom__within=cilt_polygon[0].geom).values('category').distinct()
|
||||||
serializer = LocationCatSerializer(cats, many=True)
|
serializer = LocationCatSerializer(cats, many=True)
|
||||||
return JsonResponse(serializer.data, safe=False)
|
return JsonResponse(serializer.data, safe=False)
|
||||||
else:
|
else:
|
||||||
@ -1042,7 +1042,7 @@ def DeleteAccount(request):
|
|||||||
def UserActionViewset(request):
|
def UserActionViewset(request):
|
||||||
user_id = request.GET.get('user_id')
|
user_id = request.GET.get('user_id')
|
||||||
location_id = request.GET.get('location_id')
|
location_id = request.GET.get('location_id')
|
||||||
location = Location.objects.get(location_id=location_id)
|
location = Location2025.objects.get(location_id=location_id)
|
||||||
user = CustomUser.objects.get(id=user_id)
|
user = CustomUser.objects.get(id=user_id)
|
||||||
action = Useractions.objects.filter(location=location, user=user)
|
action = Useractions.objects.filter(location=location, user=user)
|
||||||
serializer = UseractionsSerializer(action, many=True)
|
serializer = UseractionsSerializer(action, many=True)
|
||||||
@ -1055,7 +1055,7 @@ def UserMakeActionViewset(request):
|
|||||||
wanttogo = True if request.GET.get('wanttogo') == "true" else False
|
wanttogo = True if request.GET.get('wanttogo') == "true" else False
|
||||||
like = True if request.GET.get('like') == "true" else False
|
like = True if request.GET.get('like') == "true" else False
|
||||||
checkin = True if request.GET.get('checkin') == "true" else False
|
checkin = True if request.GET.get('checkin') == "true" else False
|
||||||
location = Location.objects.get(location_id=location_id)
|
location = Location2025.objects.get(location_id=location_id)
|
||||||
user = CustomUser.objects.get(id=user_id)
|
user = CustomUser.objects.get(id=user_id)
|
||||||
#action = Useractions.objects.filter(location__id=location_id, user__id=user_id)
|
#action = Useractions.objects.filter(location__id=location_id, user__id=user_id)
|
||||||
rec = Useractions.objects.filter(user=user, location=location)
|
rec = Useractions.objects.filter(user=user, location=location)
|
||||||
@ -1145,32 +1145,32 @@ def CustomAreaLocations(request):
|
|||||||
if(cat != None):
|
if(cat != None):
|
||||||
if is_rog:
|
if is_rog:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(~Q(cp=0), event_name__isnull=False, category=cat, event_name=name, group__contains=grp)
|
locs = Location2025.objects.filter(~Q(cp=0), event_name__isnull=False, category=cat, event_name=name, group__contains=grp)
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(~Q(cp=0), event_name__isnull=False, category=cat, event_name=name)
|
locs = Location2025.objects.filter(~Q(cp=0), event_name__isnull=False, category=cat, event_name=name)
|
||||||
else:
|
else:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(event_name__isnull=False, category=cat, event_name=name, group__contains=grp, location_name__contains='観光')
|
locs = Location2025.objects.filter(event_name__isnull=False, category=cat, event_name=name, group__contains=grp, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(event_name__isnull=False, category=cat, event_name=name, location_name__contains='観光')
|
locs = Location2025.objects.filter(event_name__isnull=False, category=cat, event_name=name, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
if is_rog:
|
if is_rog:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(~Q(cp=0), event_name__isnull=False, event_name=name, group__contains=grp)
|
locs = Location2025.objects.filter(~Q(cp=0), event_name__isnull=False, event_name=name, group__contains=grp)
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(~Q(cp=0), event_name__isnull=False, event_name=name)
|
locs = Location2025.objects.filter(~Q(cp=0), event_name__isnull=False, event_name=name)
|
||||||
else:
|
else:
|
||||||
if grp:
|
if grp:
|
||||||
locs = Location.objects.filter(event_name__isnull=False, event_name=name, group__contains=grp, location_name__contains='観光')
|
locs = Location2025.objects.filter(event_name__isnull=False, event_name=name, group__contains=grp, location_name__contains='観光')
|
||||||
else:
|
else:
|
||||||
locs = Location.objects.filter(event_name__isnull=False, event_name=name, location_name__contains='観光')
|
locs = Location2025.objects.filter(event_name__isnull=False, event_name=name, location_name__contains='観光')
|
||||||
|
|
||||||
serializer = LocationSerializer(locs, many=True)
|
serializer = LocationSerializer(locs, many=True)
|
||||||
return JsonResponse(serializer.data, safe=False)
|
return JsonResponse(serializer.data, safe=False)
|
||||||
|
|
||||||
|
|
||||||
def CustomAreaNames(request):
|
def CustomAreaNames(request):
|
||||||
locs = Location.objects.filter(event_name__isnull=False).values('event_name').distinct()
|
locs = Location2025.objects.filter(event_name__isnull=False).values('event_name').distinct()
|
||||||
|
|
||||||
serializer = LocationEventNameSerializer(locs, many=True)
|
serializer = LocationEventNameSerializer(locs, many=True)
|
||||||
return JsonResponse(serializer.data, safe=False)
|
return JsonResponse(serializer.data, safe=False)
|
||||||
@ -2720,7 +2720,7 @@ def get_checkins(request, *args, **kwargs):
|
|||||||
|
|
||||||
data = []
|
data = []
|
||||||
for c in checkins:
|
for c in checkins:
|
||||||
location = Location.objects.filter(cp=c.cp_number,group=event_code).first()
|
location = Location2025.objects.filter(cp=c.cp_number,group=event_code).first()
|
||||||
|
|
||||||
# チェックイン画像を取得
|
# チェックイン画像を取得
|
||||||
checkin_image = None
|
checkin_image = None
|
||||||
|
|||||||
@ -4,7 +4,7 @@ from datetime import datetime, timezone
|
|||||||
from rest_framework.decorators import api_view
|
from rest_framework.decorators import api_view
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rog.models import Location, NewEvent2, Entry, GpsLog
|
from rog.models import Location2025, NewEvent2, Entry, GpsLog
|
||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
import os
|
import os
|
||||||
@ -332,8 +332,8 @@ def add_checkin(request):
|
|||||||
# イベントのチェックポイント定義を確認(必要に応じて)
|
# イベントのチェックポイント定義を確認(必要に応じて)
|
||||||
event_cp = None
|
event_cp = None
|
||||||
try:
|
try:
|
||||||
event_cp = Location.objects.filter(
|
event_cp = Location2025.objects.filter(
|
||||||
event=event,
|
event_id=event.id,
|
||||||
cp_number=cp_number
|
cp_number=cp_number
|
||||||
).first()
|
).first()
|
||||||
except:
|
except:
|
||||||
@ -812,9 +812,9 @@ def calculate_team_score(entry):
|
|||||||
# チェックポイントの得点を取得
|
# チェックポイントの得点を取得
|
||||||
cp_point = 0
|
cp_point = 0
|
||||||
try:
|
try:
|
||||||
# Location モデルが存在する場合はそこから得点を取得
|
# Location2025 モデルが存在する場合はそこから得点を取得
|
||||||
event_cp = Location.objects.filter(
|
event_cp = Location2025.objects.filter(
|
||||||
event=entry.event,
|
event_id=entry.event.id,
|
||||||
cp_number=cp.cp_number
|
cp_number=cp.cp_number
|
||||||
).first()
|
).first()
|
||||||
if event_cp:
|
if event_cp:
|
||||||
@ -1057,17 +1057,17 @@ def get_checkin_list(request):
|
|||||||
"is_service_checked": cp.is_service_checked if hasattr(cp, 'is_service_checked') else False
|
"is_service_checked": cp.is_service_checked if hasattr(cp, 'is_service_checked') else False
|
||||||
}
|
}
|
||||||
|
|
||||||
# チェックポイントの得点情報を取得( Location モデルがある場合)
|
# チェックポイントの得点情報を取得( Location2025 モデルがある場合)
|
||||||
try:
|
try:
|
||||||
event_cp = Location.objects.filter(
|
event_cp = Location2025.objects.filter(
|
||||||
event=event,
|
event_id=event.id,
|
||||||
cp_number=cp.cp_number
|
cp_number=cp.cp_number
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
if event_cp:
|
if event_cp:
|
||||||
checkpoint_data["cp_point"] = event_cp.cp_point
|
checkpoint_data["cp_point"] = event_cp.cp_point
|
||||||
checkpoint_data["cp_name"] = event_cp.cp_name
|
checkpoint_data["cp_name"] = event_cp.cp_name
|
||||||
checkpoint_data["is_service_cp"] = event_cp.is_service_cp
|
checkpoint_data["is_service_cp"] = event_cp.buy_point > 0 # buy_pointが0より大きい場合はサービスポイント
|
||||||
except:
|
except:
|
||||||
# Location モデルが存在しない場合はスキップ
|
# Location モデルが存在しない場合はスキップ
|
||||||
pass
|
pass
|
||||||
@ -1327,15 +1327,15 @@ def get_yet_check_service_list(request):
|
|||||||
is_service_cp = False
|
is_service_cp = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
event_cp = Location.objects.filter(
|
event_cp = Location2025.objects.filter(
|
||||||
event=event,
|
event_id=event.id,
|
||||||
cp_number=cp.cp_number
|
cp_number=cp.cp_number
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
if event_cp and event_cp.is_service_cp:
|
if event_cp and event_cp.buy_point > 0: # buy_pointが0より大きい場合はサービスポイント
|
||||||
is_service_cp = True
|
is_service_cp = True
|
||||||
except:
|
except:
|
||||||
# Location モデルがない場合は、チェックポイントのプロパティだけで判断
|
# Location2025 モデルがない場合は、チェックポイントのプロパティだけで判断
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# サービスチェックが必要なチェックポイントならリストに追加
|
# サービスチェックが必要なチェックポイントならリストに追加
|
||||||
|
|||||||
@ -172,7 +172,7 @@ def get_checkpoint_list(request):
|
|||||||
}, status=status.HTTP_404_NOT_FOUND)
|
}, status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
# イベントのチェックポイント情報を取得
|
# イベントのチェックポイント情報を取得
|
||||||
checkpoints = Location2025.objects.filter(event=event).order_by('cp_number')
|
checkpoints = Location2025.objects.filter(event_id=event.id).order_by('cp_number')
|
||||||
|
|
||||||
checkpoint_list = []
|
checkpoint_list = []
|
||||||
for cp in checkpoints:
|
for cp in checkpoints:
|
||||||
@ -183,7 +183,7 @@ def get_checkpoint_list(request):
|
|||||||
"latitude": cp.latitude,
|
"latitude": cp.latitude,
|
||||||
"longitude": cp.longitude,
|
"longitude": cp.longitude,
|
||||||
"cp_description": cp.description,
|
"cp_description": cp.description,
|
||||||
"is_service_cp": cp.is_service_cp
|
"is_service_cp": cp.buy_point > 0 # buy_pointが0より大きい場合はサービスポイント
|
||||||
}
|
}
|
||||||
checkpoint_list.append(checkpoint_info)
|
checkpoint_list.append(checkpoint_info)
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
from rest_framework.decorators import api_view
|
from rest_framework.decorators import api_view
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rog.models import NewEvent2, Entry, Location, GpsLog
|
from rog.models import NewEvent2, Entry, Location2025, GpsLog
|
||||||
import logging
|
import logging
|
||||||
from django.db.models import F, Q
|
from django.db.models import F, Q
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@ -166,8 +166,8 @@ def top_users_routes(request):
|
|||||||
|
|
||||||
# チェックポイントの座標情報を取得
|
# チェックポイントの座標情報を取得
|
||||||
try:
|
try:
|
||||||
event_cp = Location.objects.filter(
|
event_cp = Location2025.objects.filter(
|
||||||
event=event,
|
event_id=event.id,
|
||||||
cp_number=cp.cp_number
|
cp_number=cp.cp_number
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
@ -469,7 +469,7 @@ def generate_route_image(request):
|
|||||||
# チェックポイント情報の取得(座標)
|
# チェックポイント情報の取得(座標)
|
||||||
cp_locations = {}
|
cp_locations = {}
|
||||||
try:
|
try:
|
||||||
event_cps = Location.objects.filter(event=event)
|
event_cps = Location2025.objects.filter(event_id=event.id)
|
||||||
|
|
||||||
for cp in event_cps:
|
for cp in event_cps:
|
||||||
if cp.latitude is not None and cp.longitude is not None:
|
if cp.latitude is not None and cp.longitude is not None:
|
||||||
|
|||||||
@ -7,7 +7,7 @@ pip install openpyxl
|
|||||||
# 既存のインポート部分に追加
|
# 既存のインポート部分に追加
|
||||||
from rest_framework.decorators import api_view
|
from rest_framework.decorators import api_view
|
||||||
from django.http import HttpResponse, FileResponse
|
from django.http import HttpResponse, FileResponse
|
||||||
from rog.models import Location, NewEvent2, Entry, GpsLog
|
from rog.models import Location2025, NewEvent2, Entry, GpsLog
|
||||||
import logging
|
import logging
|
||||||
import openpyxl
|
import openpyxl
|
||||||
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side
|
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side
|
||||||
@ -96,7 +96,7 @@ def get_scoreboard(request):
|
|||||||
# イベントのチェックポイント定義を取得
|
# イベントのチェックポイント定義を取得
|
||||||
cp_definitions = {}
|
cp_definitions = {}
|
||||||
try:
|
try:
|
||||||
event_cps = Location.objects.filter(event=event)
|
event_cps = Location2025.objects.filter(event_id=event.id)
|
||||||
|
|
||||||
for cp in event_cps:
|
for cp in event_cps:
|
||||||
cp_definitions[cp.cp_number] = {
|
cp_definitions[cp.cp_number] = {
|
||||||
@ -106,7 +106,7 @@ def get_scoreboard(request):
|
|||||||
'longitude': cp.longitude
|
'longitude': cp.longitude
|
||||||
}
|
}
|
||||||
except:
|
except:
|
||||||
# Locationモデルが存在しない場合
|
# Location2025モデルが存在しない場合
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# スタート・ゴール情報を取得
|
# スタート・ゴール情報を取得
|
||||||
@ -457,7 +457,7 @@ def download_scoreboard(request):
|
|||||||
# イベントのチェックポイント定義を取得
|
# イベントのチェックポイント定義を取得
|
||||||
cp_definitions = {}
|
cp_definitions = {}
|
||||||
try:
|
try:
|
||||||
event_cps = Location.objects.filter(event=event)
|
event_cps = Location2025.objects.filter(event_id=event.id)
|
||||||
|
|
||||||
for cp in event_cps:
|
for cp in event_cps:
|
||||||
cp_definitions[cp.cp_number] = {
|
cp_definitions[cp.cp_number] = {
|
||||||
@ -467,7 +467,7 @@ def download_scoreboard(request):
|
|||||||
'longitude': cp.longitude
|
'longitude': cp.longitude
|
||||||
}
|
}
|
||||||
except:
|
except:
|
||||||
# Locationモデルが存在しない場合
|
# Location2025モデルが存在しない場合
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# スタート・ゴール情報を取得
|
# スタート・ゴール情報を取得
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
from rest_framework.decorators import api_view
|
from rest_framework.decorators import api_view
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rog.models import NewEvent2, Entry, Location, GpsLog
|
from rog.models import NewEvent2, Entry, Location2025, GpsLog
|
||||||
import logging
|
import logging
|
||||||
from django.db.models import F, Q
|
from django.db.models import F, Q
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@ -362,10 +362,10 @@ def get_route(request):
|
|||||||
"is_service_checked": getattr(cp, 'is_service_checked', False)
|
"is_service_checked": getattr(cp, 'is_service_checked', False)
|
||||||
}
|
}
|
||||||
|
|
||||||
# チェックポイントの座標情報を取得(Locationモデルがある場合)
|
# チェックポイントの座標情報を取得(Location2025モデルがある場合)
|
||||||
try:
|
try:
|
||||||
event_cp = Location.objects.filter(
|
event_cp = Location2025.objects.filter(
|
||||||
event=event,
|
event_id=event.id,
|
||||||
cp_number=cp.cp_number
|
cp_number=cp.cp_number
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
@ -853,8 +853,8 @@ def get_all_routes(request):
|
|||||||
|
|
||||||
# チェックポイントの座標情報を取得
|
# チェックポイントの座標情報を取得
|
||||||
try:
|
try:
|
||||||
event_cp = Location.objects.filter(
|
event_cp = Location2025.objects.filter(
|
||||||
event=event,
|
event_id=event.id,
|
||||||
cp_number=cp.cp_number
|
cp_number=cp.cp_number
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
|
|||||||
@ -1027,8 +1027,8 @@
|
|||||||
`<img src="${checkin.image_address}"
|
`<img src="${checkin.image_address}"
|
||||||
class="h-20 w-20 object-cover rounded"
|
class="h-20 w-20 object-cover rounded"
|
||||||
onclick="showLargeImage(this.src)"
|
onclick="showLargeImage(this.src)"
|
||||||
onerror="this.parentElement.innerHTML='画像読込エラー'">`
|
onerror="this.style.display='none'; this.parentElement.innerHTML='<div class=\\'text-xs text-gray-500\\'>画像なし</div>'">`
|
||||||
: ''}
|
: '<div class="text-xs text-gray-500">画像なし</div>'}
|
||||||
</td>
|
</td>
|
||||||
<td class="px-2 py-3 ${bgColor}">
|
<td class="px-2 py-3 ${bgColor}">
|
||||||
<div class="font-bold">${checkin.sub_loc_id}</div>
|
<div class="font-bold">${checkin.sub_loc_id}</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user