add log for check in

This commit is contained in:
2025-09-06 00:31:53 +09:00
parent 99e4561694
commit fdc1d66f08

View File

@ -1053,7 +1053,9 @@ class CheckinImageViewSet(viewsets.ModelViewSet):
# parser_classes = (MultiPartParser, JSONParser)
def get_queryset(self):
logger.info(f"CheckinImageViewSet: get_queryset called by user {self.request.user}")
queryset = CheckinImages.objects.all()
logger.info(f"CheckinImageViewSet: returning {queryset.count()} checkin images")
# dist = self.request.GET.get('dist')
# if dist != None :
# queryset = Incident.objects.filter(entity=dist, is_approved=True)
@ -1061,6 +1063,27 @@ class CheckinImageViewSet(viewsets.ModelViewSet):
# queryset = Incident.objects.filter(is_approved=True)
return queryset
def create(self, request, *args, **kwargs):
logger.info(f"CheckinImageViewSet: create called by user {request.user}")
logger.info(f"CheckinImageViewSet: request data = {request.data}")
response = super().create(request, *args, **kwargs)
if response.status_code == 201:
logger.info(f"CheckinImageViewSet: checkin image created successfully, ID = {response.data.get('id')}")
else:
logger.error(f"CheckinImageViewSet: failed to create checkin image, status = {response.status_code}")
return response
def update(self, request, *args, **kwargs):
logger.info(f"CheckinImageViewSet: update called by user {request.user} for ID {kwargs.get('pk')}")
return super().update(request, *args, **kwargs)
def destroy(self, request, *args, **kwargs):
logger.info(f"CheckinImageViewSet: delete called by user {request.user} for ID {kwargs.get('pk')}")
return super().destroy(request, *args, **kwargs)
class RetrieveUserView(generics.RetrieveAPIView):
queryset = CustomUser.objects.all()
@ -1122,14 +1145,28 @@ def UserMakeActionViewset(request):
wanttogo = True if request.GET.get('wanttogo') == "true" else False
like = True if request.GET.get('like') == "true" else False
checkin = True if request.GET.get('checkin') == "true" else False
logger.info(f"UserMakeActionViewset: user_id={user_id}, location_id={location_id}")
logger.info(f"UserMakeActionViewset: wanttogo={wanttogo}, like={like}, checkin={checkin}")
location = Location2025.objects.get(location_id=location_id)
user = CustomUser.objects.get(id=user_id)
logger.info(f"UserMakeActionViewset: user={user.email}, location={location.location_name}")
#action = Useractions.objects.filter(location__id=location_id, user__id=user_id)
rec = Useractions.objects.filter(user=user, location=location)
if(rec):
logger.info(f"UserMakeActionViewset: updating existing action record")
obj = rec.update(wanttogo=wanttogo, like=like, checkin=checkin)
if checkin:
logger.info(f"UserMakeActionViewset: CHECKIN UPDATED for user {user.email} at location {location.location_name}")
else:
logger.info(f"UserMakeActionViewset: creating new action record")
obj, created = Useractions.objects.update_or_create(user=user, location=location, wanttogo=wanttogo, like=like, checkin=checkin)
if checkin and created:
logger.info(f"UserMakeActionViewset: NEW CHECKIN CREATED for user {user.email} at location {location.location_name}")
serializer = UseractionsSerializer(obj, many=False)
return JsonResponse(serializer.data, safe=False)
@ -2594,15 +2631,15 @@ def get_zekken_numbers(request, event_code):
# 通過審査画面用: GpsCheckinテーブルから過去の移行データと新規Entryテーブルの両方をサポート
try:
print(f"=== get_zekken_numbers called with event_code: {event_code} ===")
logger.info(f"GET_ZEKKEN_NUMBERS: called with event_code: {event_code} by user {request.user.email if request.user.is_authenticated else 'Anonymous'}")
# event_codeからNewEvent2のIDを取得
try:
event_obj = NewEvent2.objects.get(event_code=event_code)
event_id = event_obj.id
print(f"Found event: {event_obj.event_name} (ID: {event_id})")
logger.info(f"GET_ZEKKEN_NUMBERS: Found event: {event_obj.event_name} (ID: {event_id})")
except NewEvent2.DoesNotExist:
print(f"No event found with event_code: {event_code}, trying legacy data only")
logger.warning(f"GET_ZEKKEN_NUMBERS: No event found with event_code: {event_code}, trying legacy data only")
event_id = None
entry_list = []
@ -2620,7 +2657,7 @@ def get_zekken_numbers(request, event_code):
).values_list('zekken_label', flat=True).order_by('zekken_number')
entry_list = list(entries)
print(f"Entry table found {len(entry_list)} records: {entry_list[:10]}")
logger.info(f"GET_ZEKKEN_NUMBERS: Entry table found {len(entry_list)} records")
# GpsCheckinテーブルからも検索過去の移行データ
gps_checkins = GpsCheckin.objects.filter(
@ -2629,7 +2666,7 @@ def get_zekken_numbers(request, event_code):
).values_list('zekken', flat=True).distinct().order_by('zekken')
gps_list = list(gps_checkins)
print(f"GpsCheckin table found {len(gps_list)} records: {gps_list[:10]}")
logger.info(f"GET_ZEKKEN_NUMBERS: GpsCheckin table found {len(gps_list)} records")
# 両方の結果をマージして重複を除去
all_zekken_numbers = entry_list + gps_list
@ -2791,15 +2828,15 @@ def get_checkins(request, *args, **kwargs):
zekken_number = kwargs['zekken_number']
if not zekken_number:
logger.debug(f"=== Zekken_number is required.")
logger.error(f"GET_CHECKINS: zekken_number is required")
return Response({"error": "zekken_number is required"}, status=400)
event_code = kwargs['event_code']
if not event_code:
logger.debug(f"=== event_code is required.")
logger.error(f"GET_CHECKINS: event_code is required")
return Response({"error": "event_code is required"}, status=400)
logger.debug(f"=== Searching for zekken={zekken_number}, event_code={event_code}")
logger.info(f"GET_CHECKINS: Searching for zekken={zekken_number}, event_code={event_code} by user {request.user.email if request.user.is_authenticated else 'Anonymous'}")
# チーム情報を取得
entry = None
@ -2819,7 +2856,7 @@ def get_checkins(request, *args, **kwargs):
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}")
logger.warning(f"GET_CHECKINS: Entry not found for zekken: {zekken_number}")
entry = None
# チェックインデータの取得とCP情報の結合
@ -2828,7 +2865,7 @@ def get_checkins(request, *args, **kwargs):
event_code=event_code
).order_by('serial_number')
logger.debug(f"=== Found {checkins.count()} checkins")
logger.info(f"GET_CHECKINS: Found {checkins.count()} checkins for zekken {zekken_number}")
data = []
for c in checkins:
@ -2900,6 +2937,7 @@ def get_checkins(request, *args, **kwargs):
})
#logger.debug(f"data={data}")
logger.info(f"GET_CHECKINS: Returning {len(data)} checkin records for zekken {zekken_number}, event {event_code}")
return Response(data)
except Exception as e:
@ -2915,7 +2953,7 @@ def update_checkins(request):
try:
with transaction.atomic():
update_base = request.data
logger.info(f"Processing update data: {update_base}")
logger.info(f"UPDATE_CHECKINS: Processing update data for zekken {update_base.get('zekken_number')}, event {update_base.get('event_code')} by user {request.user.email if request.user.is_authenticated else 'Anonymous'}")
zekken_number = update_base['zekken_number']
event_code = update_base['event_code']
@ -2924,7 +2962,7 @@ def update_checkins(request):
if 'id' in update and int(update['id']) > 0:
try:
checkin = GpsCheckin.objects.get(id=update['id'])
logger.info(f"Updating existing checkin: {checkin}")
logger.info(f"UPDATE_CHECKINS: Updating existing checkin ID {update['id']} - CP {update.get('cp_number')}, validation: {update.get('validation')}, points: {update.get('points')}")
# 既存レコードの更新
checkin.serial_number = update['order']
@ -2934,16 +2972,16 @@ def update_checkins(request):
# checkin.update_at = timezone.now() チェックイン時刻は更新しない
checkin.update_user = request.user.email if request.user.is_authenticated else None
checkin.save()
logger.info(f"Updated existing checkin result: {checkin}")
logger.info(f"UPDATE_CHECKINS: Successfully updated checkin ID {checkin.id} for zekken {zekken_number}")
except GpsCheckin.DoesNotExist:
logger.error(f"Checkin with id {update['id']} not found")
logger.error(f"UPDATE_CHECKINS: Checkin with id {update['id']} not found for zekken {zekken_number}")
continue # エラーを無視して次のレコードの処理を継続
# 新規レコードの作成
for update in update_base['checkins']:
if 'id' in update and int(update['id']) == 0:
logger.info(f"Creating new checkin: {update}")
logger.info(f"UPDATE_CHECKINS: Creating new checkin for CP {update.get('cp_number')}, validation: {update.get('validation')}, points: {update.get('points')}")
try:
checkin = GpsCheckin.objects.create(
zekken=zekken_number,
@ -2958,10 +2996,10 @@ def update_checkins(request):
create_user=request.user.email if request.user.is_authenticated else None,
update_user=request.user.email if request.user.is_authenticated else None
)
logger.info(f"Created new checkin: {checkin}")
logger.info(f"UPDATE_CHECKINS: Successfully created new checkin ID {checkin.id} for zekken {zekken_number}, CP {checkin.cp_number}")
except Exception as e:
logger.error(f"Error creating new checkin: {str(e)}")
logger.error(f"UPDATE_CHECKINS: Error creating new checkin for zekken {zekken_number}: {str(e)}")
continue # エラーを無視して次のレコードの処理を継続
# 更新後のデータを順序付けて取得
@ -2989,17 +3027,16 @@ def update_checkins_old(request):
try:
with transaction.atomic():
update_base = request.data
logger.info(f"Processing update data: {update_base}")
logger.info(f"UPDATE_CHECKINS_OLD: Processing update data for zekken {update_base.get('zekken_number')}, event {update_base.get('event_code')} by user {request.user.email if request.user.is_authenticated else 'Anonymous'}")
zekken_number = update_base['zekken_number']
event_code = update_base['event_code']
for update in update_base['checkins']:
if 'id' in update and int(update['id'])>0:
# 既存レコードの更新
logger.info(f"Updating existing checkin : {update}")
logger.info(f"UPDATE_CHECKINS_OLD: Updating existing checkin ID {update['id']} - CP {update.get('cp_number')}")
try:
checkin = GpsCheckin.objects.get(id=update['id'])
logger.info(f"Updating existing checkin: {checkin}")
# 既存レコードの更新
checkin.serial_number = update['order']
@ -3007,10 +3044,10 @@ def update_checkins_old(request):
checkin.validate_location = update.get('validation', False)
checkin.points = update.get('points', 0)
checkin.save()
logger.info(f"Updated existing checkin result: {checkin}")
logger.info(f"UPDATE_CHECKINS_OLD: Successfully updated checkin ID {checkin.id} for zekken {zekken_number}")
except GpsCheckin.DoesNotExist:
logger.error(f"Checkin with id {update['id']} not found")
logger.error(f"UPDATE_CHECKINS_OLD: Checkin with id {update['id']} not found for zekken {zekken_number}")
return Response(
{"error": f"Checkin with id {update['id']} not found"},
status=status.HTTP_404_NOT_FOUND
@ -3018,7 +3055,7 @@ def update_checkins_old(request):
for update in update_base['checkins']:
if 'id' in update and int(update['id'])==0:
# 新規レコードの作成
logger.info("Creating new checkin:{update}")
logger.info(f"UPDATE_CHECKINS_OLD: Creating new checkin for CP {update.get('cp_number')}, validation: {update.get('validation')}")
try:
checkin = GpsCheckin.objects.create(
zekken=update_base['zekken_number'],