From b71c23d70687ed9d1e4243379b01311faa586eaf Mon Sep 17 00:00:00 2001 From: Jagraj Aulakh Date: Thu, 6 Apr 2023 19:06:44 -0400 Subject: [PATCH] #6 Added unenroll endpoint by sending DELETE request to enroll endpoint --- backend/app/models.py | 7 +++++++ backend/app/routes.py | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/backend/app/models.py b/backend/app/models.py index 4a4044d..2ca99b8 100644 --- a/backend/app/models.py +++ b/backend/app/models.py @@ -46,6 +46,13 @@ class User(UserMixin, db.Model): return True return False + def unenroll(self, c) -> bool: + if self.is_enrolled(c): + self.enrolled_courses.remove(c) + db.session.commit() + return True + return False + def to_dict(self) -> dict: return { "id": self.id, diff --git a/backend/app/routes.py b/backend/app/routes.py index 75e7c57..00968a1 100644 --- a/backend/app/routes.py +++ b/backend/app/routes.py @@ -124,3 +124,20 @@ def enroll_student(uid, cid): resp = {"user": u.to_dict(), "course": c.to_dict()} return jsonify(resp) + + +@bp.route("/user//enroll/", methods=["DELETE"]) +@login_required +def unenroll_student(uid, cid): + u = User.query.get(uid) + if not u: + return error_response(400, f"User with id {uid} does not exist") + + c = Course.query.get(cid) + if not c: + return error_response(400, f"Course with id {cid} does not exist") + + if not u.unenroll(c): + return error_response(400, f"User {uid} is not enrolled in course {cid}") + resp = {"user": u.to_dict(), "course": c.to_dict()} + return jsonify(resp)