From a6ae87abf21ec2305e7e2e7180637c1480fcc8c9 Mon Sep 17 00:00:00 2001 From: Jagraj Aulakh Date: Thu, 13 Apr 2023 18:05:43 -0400 Subject: [PATCH] #45 Added backend route to enroll student by username --- backend/app/routes.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/backend/app/routes.py b/backend/app/routes.py index 9b9e64e..5c57a2e 100644 --- a/backend/app/routes.py +++ b/backend/app/routes.py @@ -24,7 +24,6 @@ def check_data(data, required_fields): def instructor_required(func): @wraps(func) def dec(*args, **kwargs): - print(current_user) if current_user.role != "instructor": return error_response(400, "User is not instructor!") return func(*args, **kwargs) @@ -173,3 +172,28 @@ def enroll_student(uid, cid): resp = {"user": u.to_dict(), "course": c.to_dict()} return jsonify(resp) +@bp.route("/user//enroll/", methods=["POST"]) +@login_required +@instructor_required +def enroll_student_by_username(username, cid): + u = User.query.filter_by(username=username).first() + if not u: + return error_response(400, f"User with username {username} does not exist") + + c = Course.query.get(cid) + if not c: + return error_response(400, f"Course with id {cid} does not exist") + + if request.method == "POST": + if not u.enroll(c): + return error_response( + 400, f"User {u.id} is already enrolled in course {cid}" + ) + + elif request.method == "DELETE": + if not u.unenroll(c): + return error_response(400, f"User {u.id} is not enrolled in course {cid}") + + resp = {"user": u.to_dict(), "course": c.to_dict()} + return jsonify(resp) +