Fix no images issues

This commit is contained in:
2025-08-29 21:11:00 +09:00
parent d63f205fa3
commit 999ce636ac

View File

@ -2566,6 +2566,8 @@ def get_team_info(request, zekken_number):
logger.debug(f"self.rogaining={entry.event.self_rogaining} => start_datetime = -1(ロゲ開始)のcreate_at")
# チームの最初のゴール時間を取得
logger.info(f"Searching for GoalImages with team_name='{entry.team.team_name}', event_code='{entry.event.event_name}'")
goal_record = GoalImages.objects.filter(
team_name=entry.team.team_name,
event_code=entry.event.event_name
@ -2576,18 +2578,19 @@ def get_team_info(request, zekken_number):
goaltime = None
if goal_record:
logger.info(f"Found goal record: id={goal_record.id}, goaltime={goal_record.goaltime}")
try:
goaltime = goal_record.goaltime
if goal_record.goalimage and hasattr(goal_record.goalimage, 'url'):
goalimage_url = request.build_absolute_uri(goal_record.goalimage.url)
logger.info(f"get_team_info record.goalimage_url={goalimage_url}")
else:
logger.info("Goal record exists but no image found")
logger.info(f"Goal record exists but no image found: goalimage={goal_record.goalimage}")
except ValueError as e:
logger.warning(f"Error accessing goal image: {str(e)}")
else:
logger.info("No goal record found for team")
logger.info(f"No goal record found for team_name='{entry.team.team_name}', event_code='{entry.event.event_name}'")
return Response({
@ -2682,6 +2685,27 @@ def get_checkins(request, *args, **kwargs):
logger.debug(f"=== Searching for zekken={zekken_number}, event_code={event_code}")
# チーム情報を取得
entry = None
try:
# まずzekken_numberで検索数値の場合
if zekken_number.isdigit():
entry = Entry.objects.select_related('team','event').get(zekken_number=int(zekken_number))
else:
# 数値でない場合はzekken_labelで検索
entry = Entry.objects.select_related('team','event').get(zekken_label=zekken_number)
except Entry.DoesNotExist:
# zekken_numberで見つからない場合はzekken_labelで再試行
try:
entry = Entry.objects.select_related('team','event').get(zekken_label=zekken_number)
except Entry.DoesNotExist:
# 最後にzekken_numberとして再試行数値以外でもエラーハンドリング
try:
entry = Entry.objects.select_related('team','event').get(zekken_number=zekken_number)
except (Entry.DoesNotExist, ValueError):
logger.warning(f"Entry not found for zekken: {zekken_number}")
entry = None
# チェックインデータの取得とCP情報の結合
checkins = GpsCheckin.objects.filter(
zekken=zekken_number,
@ -2694,6 +2718,34 @@ def get_checkins(request, *args, **kwargs):
for c in checkins:
location = Location.objects.filter(cp=c.cp_number,group=event_code).first()
# チェックイン画像を取得
checkin_image = None
image_url = None
if entry and location: # entryとlocationが存在する場合のみ画像を検索
# location.cpを使用してチェックイン画像を検索
checkin_image = CheckinImages.objects.filter(
team_name=entry.team.team_name,
event_code=event_code,
cp_number=location.cp # location.cpを使用
).first()
# 画像URLを生成
if checkin_image and checkin_image.checkinimage:
try:
if hasattr(checkin_image.checkinimage, 'url'):
image_url = request.build_absolute_uri(checkin_image.checkinimage.url)
logger.info(f"Found checkin image for CP {location.cp} (sub_loc_id: {location.sub_loc_id}): {image_url}")
except Exception as e:
logger.warning(f"Error accessing checkin image for CP {location.cp}: {str(e)}")
else:
logger.debug(f"No checkin image found for CP {location.cp} (sub_loc_id: {location.sub_loc_id})")
else:
if not entry:
logger.warning(f"No entry found for zekken {zekken_number}, cannot search for checkin images")
if not location:
logger.warning(f"No location found for CP {c.cp_number}")
formatted_time = None
if c.checkin_time:
try:
@ -2721,7 +2773,7 @@ def get_checkins(request, *args, **kwargs):
'points': location.checkin_point if location else 0, # locationから取得
'buy_flag': False, # デフォルト値として設定
'photos': location.photos if location else None,
'image_address': None, # 現在のモデルには存在しない
'image_address': image_url, # CheckinImagesテーブルから取得した画像URL
'receipt_address': None, # 現在のモデルには存在しない
'location_name': location.location_name if location else None,
'checkin_point': location.checkin_point if location else None,