Fix no images issues
This commit is contained in:
58
rog/views.py
58
rog/views.py
@ -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,
|
||||
|
||||
Reference in New Issue
Block a user