Skip to content

Commit f578bac

Browse files
committed
improve logigng to review_submission
1 parent 20862e3 commit f578bac

File tree

1 file changed

+108
-22
lines changed

1 file changed

+108
-22
lines changed

backend/apps/events/views.py

Lines changed: 108 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import json
22
import uuid
3+
import logging
4+
import traceback
35
from datetime import timedelta
46
import pytz
57

@@ -27,6 +29,8 @@
2729

2830
from .models import Events, EventSubmission, EventInterest, EventDates
2931

32+
logger = logging.getLogger(__name__)
33+
3034

3135
@api_view(["GET"])
3236
@permission_classes([AllowAny])
@@ -674,36 +678,118 @@ def get_submissions(request):
674678
@jwt_required
675679
@ratelimit(key="ip", rate="100/hr", block=True)
676680
def review_submission(request, event_id):
677-
"""Approve or reject submission
678-
"""
681+
"""Approve or reject submission"""
679682
try:
680-
data = json.loads(request.body)
681-
event = get_object_or_404(Events, id=event_id)
682-
submission = event.submission
683-
if not submission:
684-
return Response({"message": "No submission found for this event"}, status=status.HTTP_404_NOT_FOUND)
683+
logger.info(f"[review_submission] Starting review for event_id={event_id}, user_id={request.user_id}")
684+
685+
# Parse request body
686+
try:
687+
data = json.loads(request.body)
688+
logger.debug(f"[review_submission] Parsed request data: {data}")
689+
except json.JSONDecodeError as e:
690+
logger.error(f"[review_submission] JSON decode error: {e}, body: {request.body}")
691+
return Response(
692+
{"message": "Invalid JSON in request body", "error": str(e)},
693+
status=status.HTTP_400_BAD_REQUEST
694+
)
695+
696+
# Get event
697+
try:
698+
event = get_object_or_404(Events, id=event_id)
699+
logger.debug(f"[review_submission] Found event: id={event.id}, title={event.title}, status={event.status}")
700+
except Exception as e:
701+
logger.error(f"[review_submission] Error getting event {event_id}: {e}")
702+
logger.error(f"[review_submission] Traceback: {traceback.format_exc()}")
703+
return Response(
704+
{"message": f"Event not found: {event_id}", "error": str(e)},
705+
status=status.HTTP_404_NOT_FOUND
706+
)
707+
708+
# Get submission (safer query method)
709+
try:
710+
submission = EventSubmission.objects.filter(created_event=event).first()
711+
if not submission:
712+
logger.warning(f"[review_submission] No submission found for event_id={event_id}")
713+
return Response(
714+
{"message": "No submission found for this event"},
715+
status=status.HTTP_404_NOT_FOUND
716+
)
717+
logger.debug(f"[review_submission] Found submission: id={submission.id}, submitted_by={submission.submitted_by}")
718+
except Exception as e:
719+
logger.error(f"[review_submission] Error getting submission for event {event_id}: {e}")
720+
logger.error(f"[review_submission] Traceback: {traceback.format_exc()}")
721+
return Response(
722+
{"message": "Error retrieving submission", "error": str(e)},
723+
status=status.HTTP_500_INTERNAL_SERVER_ERROR
724+
)
725+
726+
# Get action
685727
action = data.get("action")
728+
if not action:
729+
logger.warning(f"[review_submission] No action provided in request data")
730+
return Response(
731+
{"message": "Action is required. Use 'approve' or 'reject'"},
732+
status=status.HTTP_400_BAD_REQUEST
733+
)
734+
735+
logger.info(f"[review_submission] Processing action={action} for event_id={event_id}")
686736

687737
if action == "approve":
688-
event.status = "CONFIRMED"
689-
event.save()
690-
submission.reviewed_at = timezone.now()
691-
submission.reviewed_by = request.user_id
692-
submission.save()
693-
return Response({"message": "Event approved", "event_id": event.id})
738+
try:
739+
event.status = "CONFIRMED"
740+
event.save()
741+
logger.debug(f"[review_submission] Updated event status to CONFIRMED")
742+
743+
submission.reviewed_at = timezone.now()
744+
submission.reviewed_by = request.user_id
745+
submission.save()
746+
logger.info(f"[review_submission] Successfully approved event_id={event_id}")
747+
748+
return Response({"message": "Event approved", "event_id": event.id})
749+
except Exception as e:
750+
logger.error(f"[review_submission] Error approving event {event_id}: {e}")
751+
logger.error(f"[review_submission] Traceback: {traceback.format_exc()}")
752+
return Response(
753+
{"message": "Error approving event", "error": str(e)},
754+
status=status.HTTP_500_INTERNAL_SERVER_ERROR
755+
)
694756

695757
elif action == "reject":
696-
submission.reviewed_at = timezone.now()
697-
submission.reviewed_by = request.user_id
698-
submission.save()
699-
if event:
700-
event.status = "CANCELLED"
701-
event.save()
702-
return Response({"message": "Event rejected"})
758+
try:
759+
submission.reviewed_at = timezone.now()
760+
submission.reviewed_by = request.user_id
761+
submission.save()
762+
logger.debug(f"[review_submission] Updated submission review info")
763+
764+
if event:
765+
event.status = "CANCELLED"
766+
event.save()
767+
logger.debug(f"[review_submission] Updated event status to CANCELLED")
768+
769+
logger.info(f"[review_submission] Successfully rejected event_id={event_id}")
770+
return Response({"message": "Event rejected"})
771+
except Exception as e:
772+
logger.error(f"[review_submission] Error rejecting event {event_id}: {e}")
773+
logger.error(f"[review_submission] Traceback: {traceback.format_exc()}")
774+
return Response(
775+
{"message": "Error rejecting event", "error": str(e)},
776+
status=status.HTTP_500_INTERNAL_SERVER_ERROR
777+
)
703778

704-
return Response({"message": "Invalid action. Use 'approve' or 'reject'"}, status=status.HTTP_400_BAD_REQUEST)
779+
logger.warning(f"[review_submission] Invalid action: {action}")
780+
return Response(
781+
{"message": "Invalid action. Use 'approve' or 'reject'"},
782+
status=status.HTTP_400_BAD_REQUEST
783+
)
784+
705785
except Exception as e:
706-
return Response({"message": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
786+
logger.error(f"[review_submission] Unexpected error in review_submission: {e}")
787+
logger.error(f"[review_submission] Traceback: {traceback.format_exc()}")
788+
logger.error(f"[review_submission] Request data: event_id={event_id}, user_id={getattr(request, 'user_id', 'unknown')}")
789+
return Response(
790+
{"message": "Internal server error", "error": str(e)},
791+
status=status.HTTP_500_INTERNAL_SERVER_ERROR
792+
)
707793

708794

709795
@api_view(["GET"])

0 commit comments

Comments
 (0)