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