diff --git a/rog/serializers.py b/rog/serializers.py index 7b26f91..724fd4b 100755 --- a/rog/serializers.py +++ b/rog/serializers.py @@ -711,10 +711,24 @@ class TeamDetailSerializer(serializers.ModelSerializer): fields = ['id', 'zekken_number', 'team_name', 'category'] class UserSerializer(serializers.ModelSerializer): + event_date = serializers.SerializerMethodField() + last_goal_time = serializers.SerializerMethodField() + class Meta: 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') + + 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 Meta: diff --git a/rog/views.py b/rog/views.py index 4b7f698..a00f46a 100755 --- a/rog/views.py +++ b/rog/views.py @@ -569,19 +569,29 @@ def LocationInBound2(request): if lat is not None and lon is not None: if grp: - # grpがある場合、最初に絞り込む - base_query = Location2025.objects.filter(group__contains=grp) + # 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: current_point = Point(lon, lat, srid=4326) # 10km四方の領域を指定 distance_from_point = 40000 # 中心から10km(半径) base_query = Location2025.objects.filter( - geom__distance_lte=(current_point, D(m=distance_from_point)) - ).annotate(distance=Distance('geom', current_point)).order_by('distance') - - if grp: - base_query = base_query.filter(group__contains=grp) + location__distance_lte=(current_point, D(m=distance_from_point)) + ).annotate(distance=Distance('location', current_point)).order_by('distance') logger.debug(f"Final query: {base_query.query}") locs = base_query