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.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(
|
goal_record = GoalImages.objects.filter(
|
||||||
team_name=entry.team.team_name,
|
team_name=entry.team.team_name,
|
||||||
event_code=entry.event.event_name
|
event_code=entry.event.event_name
|
||||||
@ -2576,18 +2578,19 @@ def get_team_info(request, zekken_number):
|
|||||||
goaltime = None
|
goaltime = None
|
||||||
|
|
||||||
if goal_record:
|
if goal_record:
|
||||||
|
logger.info(f"Found goal record: id={goal_record.id}, goaltime={goal_record.goaltime}")
|
||||||
try:
|
try:
|
||||||
goaltime = goal_record.goaltime
|
goaltime = goal_record.goaltime
|
||||||
if goal_record.goalimage and hasattr(goal_record.goalimage, 'url'):
|
if goal_record.goalimage and hasattr(goal_record.goalimage, 'url'):
|
||||||
goalimage_url = request.build_absolute_uri(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}")
|
logger.info(f"get_team_info record.goalimage_url={goalimage_url}")
|
||||||
else:
|
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:
|
except ValueError as e:
|
||||||
logger.warning(f"Error accessing goal image: {str(e)}")
|
logger.warning(f"Error accessing goal image: {str(e)}")
|
||||||
else:
|
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({
|
return Response({
|
||||||
@ -2682,6 +2685,27 @@ def get_checkins(request, *args, **kwargs):
|
|||||||
|
|
||||||
logger.debug(f"=== Searching for zekken={zekken_number}, event_code={event_code}")
|
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情報の結合
|
# チェックインデータの取得とCP情報の結合
|
||||||
checkins = GpsCheckin.objects.filter(
|
checkins = GpsCheckin.objects.filter(
|
||||||
zekken=zekken_number,
|
zekken=zekken_number,
|
||||||
@ -2694,6 +2718,34 @@ def get_checkins(request, *args, **kwargs):
|
|||||||
for c in checkins:
|
for c in checkins:
|
||||||
location = Location.objects.filter(cp=c.cp_number,group=event_code).first()
|
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
|
formatted_time = None
|
||||||
if c.checkin_time:
|
if c.checkin_time:
|
||||||
try:
|
try:
|
||||||
@ -2721,7 +2773,7 @@ def get_checkins(request, *args, **kwargs):
|
|||||||
'points': location.checkin_point if location else 0, # locationから取得
|
'points': location.checkin_point if location else 0, # locationから取得
|
||||||
'buy_flag': False, # デフォルト値として設定
|
'buy_flag': False, # デフォルト値として設定
|
||||||
'photos': location.photos if location else None,
|
'photos': location.photos if location else None,
|
||||||
'image_address': None, # 現在のモデルには存在しない
|
'image_address': image_url, # CheckinImagesテーブルから取得した画像URL
|
||||||
'receipt_address': None, # 現在のモデルには存在しない
|
'receipt_address': None, # 現在のモデルには存在しない
|
||||||
'location_name': location.location_name if location else None,
|
'location_name': location.location_name if location else None,
|
||||||
'checkin_point': location.checkin_point if location else None,
|
'checkin_point': location.checkin_point if location else None,
|
||||||
|
|||||||
Reference in New Issue
Block a user