From 8ec489beb325d1b3e614806a8384c2a01ecf434b Mon Sep 17 00:00:00 2001 From: Jagraj Aulakh Date: Thu, 6 Apr 2023 18:51:43 -0400 Subject: [PATCH] #6 Created route to enroll student into a course --- backend/app/models.py | 1 + backend/app/routes.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/backend/app/models.py b/backend/app/models.py index 3431fc8..4a4044d 100644 --- a/backend/app/models.py +++ b/backend/app/models.py @@ -42,6 +42,7 @@ class User(UserMixin, db.Model): def enroll(self, c) -> bool: if not self.is_enrolled(c): self.enrolled_courses.append(c) + db.session.commit() return True return False diff --git a/backend/app/routes.py b/backend/app/routes.py index fd86958..75e7c57 100644 --- a/backend/app/routes.py +++ b/backend/app/routes.py @@ -73,6 +73,7 @@ def register(): @bp.route("/course", methods=["POST"]) +@login_required def create_course(): data = request.get_json() @@ -97,6 +98,7 @@ def create_course(): @bp.route("/user//courses", methods=["GET"]) +@login_required def get_courses(id): u = User.query.get(id) d = {"courses": []} @@ -104,3 +106,21 @@ def get_courses(id): d["courses"].append(c.to_dict()) resp = jsonify(d) return resp + + +@bp.route("/user//enroll/", methods=["POST"]) +@login_required +def enroll_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.enroll(c): + return error_response(400, f"User {uid} is already enrolled in course {cid}") + + resp = {"user": u.to_dict(), "course": c.to_dict()} + return jsonify(resp)