rairo commited on
Commit
fea38d1
·
verified ·
1 Parent(s): 5e26fd0

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +89 -2
main.py CHANGED
@@ -538,11 +538,64 @@ def add_member():
538
  try:
539
  db.reference(f"members/{member_id}").set(data)
540
  logger.info(f"Member added successfully with ID: {member_id}")
541
- return jsonify({"message": "Member added"}), 200
542
  except Exception as e:
543
  logger.error(f"Error adding member {member_id}: {e}", exc_info=True)
544
  return jsonify({"error": "Internal server error"}), 500
545
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
546
  @app.route("/create_job", methods=["POST"])
547
  def create_job():
548
  logger.info("Handling /create_job request")
@@ -587,6 +640,40 @@ def create_job():
587
  logger.error(f"Error creating job {job_id}: {e}", exc_info=True)
588
  return jsonify({"error": "Internal server error"}), 500
589
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
590
  @app.route("/schedule_job/<job_id>", methods=["POST"])
591
  def schedule_job(job_id):
592
  """Schedule a job to start at a specific time"""
@@ -1063,4 +1150,4 @@ except Exception as e:
1063
  # === Run Server ===
1064
  if __name__ == "__main__":
1065
  logger.info("Starting Flask application...")
1066
- app.run(debug=True, host="0.0.0.0", port=int(os.getenv("PORT", 7860)))
 
538
  try:
539
  db.reference(f"members/{member_id}").set(data)
540
  logger.info(f"Member added successfully with ID: {member_id}")
541
+ return jsonify({"message": "Member added", "member_id": member_id}), 200
542
  except Exception as e:
543
  logger.error(f"Error adding member {member_id}: {e}", exc_info=True)
544
  return jsonify({"error": "Internal server error"}), 500
545
 
546
+ @app.route("/update_member/<member_id>", methods=["POST"])
547
+ def update_member(member_id):
548
+ logger.info(f"Handling /update_member/{member_id} request")
549
+ user = verify_token(request)
550
+ if not user:
551
+ logger.warning(f"Unauthorized access attempt to /update_member/{member_id}")
552
+ return jsonify({"error": "Unauthorized"}), 401
553
+
554
+ data = request.json
555
+ if not data:
556
+ logger.warning(f"Update member request for {member_id} has no JSON body.")
557
+ return jsonify({"error": "Request body cannot be empty"}), 400
558
+
559
+ logger.debug(f"Updating member {member_id} with data: {data}")
560
+ member_ref = db.reference(f"members/{member_id}")
561
+
562
+ # Check if member exists before updating
563
+ if not member_ref.get():
564
+ logger.warning(f"Attempted to update non-existent member {member_id}")
565
+ return jsonify({"error": "Member not found"}), 404
566
+
567
+ try:
568
+ member_ref.update(data)
569
+ logger.info(f"Member {member_id} updated successfully.")
570
+ updated_data = {**data, "id": member_id}
571
+ return jsonify({"message": "Member updated", "member": updated_data}), 200
572
+ except Exception as e:
573
+ logger.error(f"Error updating member {member_id}: {e}", exc_info=True)
574
+ return jsonify({"error": "Internal server error"}), 500
575
+
576
+ @app.route("/delete_member/<member_id>", methods=["DELETE"])
577
+ def delete_member(member_id):
578
+ logger.info(f"Handling /delete_member/{member_id} request")
579
+ user = verify_token(request)
580
+ if not user:
581
+ logger.warning(f"Unauthorized access attempt to /delete_member/{member_id}")
582
+ return jsonify({"error": "Unauthorized"}), 401
583
+
584
+ member_ref = db.reference(f"members/{member_id}")
585
+
586
+ # Check if member exists before deleting
587
+ if not member_ref.get():
588
+ logger.warning(f"Attempted to delete non-existent member {member_id}")
589
+ return jsonify({"error": "Member not found"}), 404
590
+
591
+ try:
592
+ member_ref.delete()
593
+ logger.info(f"Member {member_id} deleted successfully.")
594
+ return jsonify({"message": f"Member {member_id} deleted"}), 200
595
+ except Exception as e:
596
+ logger.error(f"Error deleting member {member_id}: {e}", exc_info=True)
597
+ return jsonify({"error": "Internal server error"}), 500
598
+
599
  @app.route("/create_job", methods=["POST"])
600
  def create_job():
601
  logger.info("Handling /create_job request")
 
640
  logger.error(f"Error creating job {job_id}: {e}", exc_info=True)
641
  return jsonify({"error": "Internal server error"}), 500
642
 
643
+ @app.route("/update_job/<job_id>", methods=["POST"])
644
+ def update_job(job_id):
645
+ logger.info(f"Handling /update_job/{job_id} request")
646
+ user = verify_token(request)
647
+ if not user:
648
+ logger.warning(f"Unauthorized access attempt to /update_job/{job_id}")
649
+ return jsonify({"error": "Unauthorized"}), 401
650
+
651
+ data = request.json
652
+ if not data:
653
+ logger.warning(f"Update job request for {job_id} has no JSON body.")
654
+ return jsonify({"error": "Request body cannot be empty"}), 400
655
+
656
+ logger.debug(f"Updating job {job_id} with data: {data}")
657
+ job_ref = db.reference(f"jobs/{job_id}")
658
+
659
+ # Check if job exists
660
+ if not job_ref.get():
661
+ logger.warning(f"Attempted to update non-existent job {job_id}")
662
+ return jsonify({"error": "Job not found"}), 404
663
+
664
+ try:
665
+ # Prevent overwriting critical, managed fields from a general update endpoint
666
+ data.pop('assignments', None)
667
+ data.pop('rotation_history', None)
668
+ data.pop('status', None)
669
+
670
+ job_ref.update(data)
671
+ logger.info(f"Job {job_id} updated successfully.")
672
+ return jsonify({"message": f"Job {job_id} updated"}), 200
673
+ except Exception as e:
674
+ logger.error(f"Error updating job {job_id}: {e}", exc_info=True)
675
+ return jsonify({"error": "Internal server error"}), 500
676
+
677
  @app.route("/schedule_job/<job_id>", methods=["POST"])
678
  def schedule_job(job_id):
679
  """Schedule a job to start at a specific time"""
 
1150
  # === Run Server ===
1151
  if __name__ == "__main__":
1152
  logger.info("Starting Flask application...")
1153
+ app.run(debug=True, host="0.0.0.0", port=int(os.getenv("PORT", 7860)))