Convert Location to Location2025

This commit is contained in:
2025-08-30 02:20:25 +09:00
parent 48b09b08da
commit 9af1e03523
10 changed files with 92 additions and 93 deletions

View File

@ -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)

View File

@ -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("""

View File

@ -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',)

View File

@ -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

View File

@ -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
# サービスチェックが必要なチェックポイントならリストに追加 # サービスチェックが必要なチェックポイントならリストに追加

View File

@ -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)

View File

@ -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:

View File

@ -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
# スタート・ゴール情報を取得 # スタート・ゴール情報を取得

View File

@ -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()

View File

@ -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>