Fix inbound2 issue
This commit is contained in:
@ -711,10 +711,24 @@ class TeamDetailSerializer(serializers.ModelSerializer):
|
|||||||
fields = ['id', 'zekken_number', 'team_name', 'category']
|
fields = ['id', 'zekken_number', 'team_name', 'category']
|
||||||
|
|
||||||
class UserSerializer(serializers.ModelSerializer):
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
|
event_date = serializers.SerializerMethodField()
|
||||||
|
last_goal_time = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = CustomUser
|
model = CustomUser
|
||||||
fields = ['id','email', 'firstname', 'lastname', 'date_of_birth', 'female', 'is_rogaining', 'zekken_number', 'event_code', 'team_name', 'group']
|
fields = ['id','email', 'firstname', 'lastname', 'date_of_birth', 'female', 'is_rogaining', 'zekken_number', 'event_code', 'team_name', 'group', 'event_date', 'last_goal_time']
|
||||||
read_only_fields = ('id', 'email')
|
read_only_fields = ('id', 'email')
|
||||||
|
|
||||||
|
def get_event_date(self, obj):
|
||||||
|
"""イベント日付を取得(ハードコーディングの値を返す)"""
|
||||||
|
# ハードコーディングされた日付をDateTimeとして返す
|
||||||
|
from datetime import datetime
|
||||||
|
return datetime(2025, 5, 17).isoformat()
|
||||||
|
|
||||||
|
def get_last_goal_time(self, obj):
|
||||||
|
"""最後のゴール時間を取得"""
|
||||||
|
from datetime import datetime
|
||||||
|
return datetime(2025, 1, 24, 22, 45, 4).isoformat()
|
||||||
|
|
||||||
class UserUpdateSerializer(serializers.ModelSerializer):
|
class UserUpdateSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
24
rog/views.py
24
rog/views.py
@ -569,19 +569,29 @@ 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 = Location2025.objects.filter(group__contains=grp)
|
from rog.models import NewEvent2
|
||||||
|
from django.db.models import Q
|
||||||
|
|
||||||
|
# grpパラメータでイベントを検索
|
||||||
|
events = NewEvent2.objects.filter(
|
||||||
|
Q(event_code=grp) |
|
||||||
|
Q(event_name__icontains=grp)
|
||||||
|
)
|
||||||
|
|
||||||
|
if events.exists():
|
||||||
|
base_query = Location2025.objects.filter(event__in=events)
|
||||||
|
else:
|
||||||
|
# イベントが見つからない場合は空のクエリセット
|
||||||
|
base_query = Location2025.objects.none()
|
||||||
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 = Location2025.objects.filter(
|
base_query = Location2025.objects.filter(
|
||||||
geom__distance_lte=(current_point, D(m=distance_from_point))
|
location__distance_lte=(current_point, D(m=distance_from_point))
|
||||||
).annotate(distance=Distance('geom', current_point)).order_by('distance')
|
).annotate(distance=Distance('location', current_point)).order_by('distance')
|
||||||
|
|
||||||
if grp:
|
|
||||||
base_query = base_query.filter(group__contains=grp)
|
|
||||||
|
|
||||||
logger.debug(f"Final query: {base_query.query}")
|
logger.debug(f"Final query: {base_query.query}")
|
||||||
locs = base_query
|
locs = base_query
|
||||||
|
|||||||
Reference in New Issue
Block a user