Fix ROute issue

This commit is contained in:
2025-08-29 16:38:01 +09:00
parent b91b522fa3
commit 9472e66ec8
7 changed files with 34 additions and 13 deletions

View File

@ -224,6 +224,9 @@ LEAFLET_CONFIG = {
REST_FRAMEWORK = { REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'], 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'],
'DEFAULT_AUTHENTICATION_CLASSES': ('knox.auth.TokenAuthentication', ), 'DEFAULT_AUTHENTICATION_CLASSES': ('knox.auth.TokenAuthentication', ),
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
} }

View File

@ -1017,9 +1017,9 @@ class GpsLogAdmin(admin.ModelAdmin):
@admin.register(GpsCheckin) @admin.register(GpsCheckin)
class GpsCheckinAdmin(admin.ModelAdmin): class GpsCheckinAdmin(admin.ModelAdmin):
list_display = ['id', 'zekken_number', 'event_code', 'cp_number', 'create_at'] list_display = ['id', 'zekken', 'event_code', 'cp_number', 'create_at']
list_filter = ['event_code', 'create_at', 'validate_location'] list_filter = ['event_code', 'create_at', 'validate_location']
search_fields = ['zekken_number', 'event_code', 'cp_number'] search_fields = ['zekken', 'event_code', 'cp_number']
readonly_fields = ['create_at'] readonly_fields = ['create_at']
@admin.register(Checkpoint) @admin.register(Checkpoint)

View File

@ -919,10 +919,16 @@ class GpsCheckin(models.Model):
default=0, default=0,
help_text="チェックポイントの順序番号" help_text="チェックポイントの順序番号"
) )
zekken = models.CharField(
max_length=20,
null=True,
blank=True,
help_text="ゼッケン番号(実テーブルフィールド名に合わせて修正)"
)
zekken_number = models.TextField( zekken_number = models.TextField(
null=False, null=False,
default='', default='',
help_text="ゼッケン番号" help_text="ゼッケン番号(後方互換性のため残す)"
) )
event_id = models.IntegerField( event_id = models.IntegerField(
null=True, null=True,
@ -1026,6 +1032,17 @@ class GpsCheckin(models.Model):
blank=True, blank=True,
help_text="統合チームリレーション" help_text="統合チームリレーション"
) )
team_name = models.CharField(
max_length=255,
null=True,
blank=True,
help_text="チーム名(実テーブルフィールド)"
)
checkin_time = models.DateTimeField(
null=True,
blank=True,
help_text="チェックイン時刻(実テーブルフィールド)"
)
checkpoint = models.ForeignKey( checkpoint = models.ForeignKey(
'Checkpoint', 'Checkpoint',
on_delete=models.CASCADE, on_delete=models.CASCADE,
@ -1068,9 +1085,9 @@ class GpsCheckin(models.Model):
) )
class Meta: class Meta:
db_table = 'gps_checkins' db_table = 'rog_gpscheckin' # 実際のテーブル名に合わせて修正
indexes = [ indexes = [
models.Index(fields=['zekken_number', 'event_code', 'path_order'], name='idx_zekken_event'), models.Index(fields=['zekken', 'event_code', 'path_order'], name='idx_zekken_event'),
models.Index(fields=['create_at'], name='idx_create_at'), models.Index(fields=['create_at'], name='idx_create_at'),
] ]

View File

@ -20,6 +20,7 @@ from .views_apis.api_admin_validation import get_event_participants_ranking, get
from .views_apis.api_simulator import rogaining_simulator from .views_apis.api_simulator import rogaining_simulator
from .views_apis.api_test import test_gifuroge,practice from .views_apis.api_test import test_gifuroge,practice
from .views_apis.api_supervisor import get_events_for_supervisor from .views_apis.api_supervisor import get_events_for_supervisor
from django.views.decorators.csrf import csrf_exempt
from .app_version_views import app_version_check, AppVersionManagementView from .app_version_views import app_version_check, AppVersionManagementView
from .multi_image_upload_views import multi_image_upload, image_list, image_detail from .multi_image_upload_views import multi_image_upload, image_list, image_detail
from .gpx_route_views import gpx_test_data, available_routes from .gpx_route_views import gpx_test_data, available_routes
@ -143,7 +144,7 @@ urlpatterns += [
# for Supervisor Web app # for Supervisor Web app
path('events/', views.get_events, name='get_events'), path('events/', views.get_events, name='get_events'),
path('events-supervisor/', get_events_for_supervisor, name='get_events_for_supervisor'), # 新規追加 path('events-supervisor/', csrf_exempt(get_events_for_supervisor), name='get_events_for_supervisor'), # 新規追加
path('debug/urls/', views.debug_urls, name='debug_urls'), path('debug/urls/', views.debug_urls, name='debug_urls'),
path('zekken_numbers/<str:event_code>/', views.get_zekken_numbers, name='get_zekken_numbers'), path('zekken_numbers/<str:event_code>/', views.get_zekken_numbers, name='get_zekken_numbers'),
path('team_info/<int:zekken_number>/', views.get_team_info, name='get_team_info'), path('team_info/<int:zekken_number>/', views.get_team_info, name='get_team_info'),

View File

@ -2513,8 +2513,8 @@ def get_zekken_numbers(request, event_code):
# GpsCheckinテーブルからも検索過去の移行データ # GpsCheckinテーブルからも検索過去の移行データ
gps_checkins = GpsCheckin.objects.filter( gps_checkins = GpsCheckin.objects.filter(
event_code=event_code, event_code=event_code,
zekken_number__gt=0 zekken__gt=''
).values_list('zekken_number', flat=True).distinct().order_by('zekken_number') ).values_list('zekken', flat=True).distinct().order_by('zekken')
gps_list = list(gps_checkins) gps_list = list(gps_checkins)
print(f"GpsCheckin table found {len(gps_list)} records: {gps_list[:10]}") print(f"GpsCheckin table found {len(gps_list)} records: {gps_list[:10]}")
@ -2912,9 +2912,9 @@ def _get_final_report( zekken, event_code):
def _get_photo_list(zekken, event_code): def _get_photo_list(zekken, event_code):
photos = [] photos = []
try: try:
print(f"Query parameters - zekken_number: {zekken}, event_code: {event_code}") print(f"Query parameters - zekken: {zekken}, event_code: {event_code}")
checkins = GpsCheckin.objects.filter(zekken_number=zekken, event_code=event_code) checkins = GpsCheckin.objects.filter(zekken=zekken, event_code=event_code)
# クエリ結果の件数を出力 # クエリ結果の件数を出力
print(f"Found {checkins.count()} checkins") print(f"Found {checkins.count()} checkins")

View File

@ -57,7 +57,7 @@ def get_event_participants_ranking(request):
for entry in entries: for entry in entries:
# このエントリーのチェックイン記録を取得 # このエントリーのチェックイン記録を取得
checkins = GpsCheckin.objects.filter( checkins = GpsCheckin.objects.filter(
zekken_number=str(entry.zekken_number), zekken=str(entry.zekken_number),
event_code=event_code event_code=event_code
) )
@ -211,7 +211,7 @@ def get_participant_validation_details(request):
# チェックイン記録の取得 # チェックイン記録の取得
checkins = GpsCheckin.objects.filter( checkins = GpsCheckin.objects.filter(
zekken_number=str(zekken_number), zekken=str(zekken_number),
event_code=event_code event_code=event_code
).order_by('path_order') ).order_by('path_order')

View File

@ -20,7 +20,7 @@ logger = logging.getLogger(__name__)
def get_events_for_supervisor(request): def get_events_for_supervisor(request):
""" """
Supervisor用のイベント一覧取得API Supervisor用のイベント一覧取得API
認証なし 認証なし・CSRF保護なしurls.pyでcsrf_exemptを適用
""" """
try: try:
events = NewEvent2.objects.all() events = NewEvent2.objects.all()