roshcheeku commited on
Commit
c840593
·
verified ·
1 Parent(s): 30ae173

Create courses.py

Browse files
Files changed (1) hide show
  1. routes/courses.py +45 -0
routes/courses.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # routes/courses.py
2
+ from flask import Blueprint, request, jsonify, g
3
+ from bson.objectid import ObjectId
4
+ from db import db
5
+ from utils.auth import token_required, admin_required
6
+
7
+ courses_bp = Blueprint("courses", __name__)
8
+
9
+ @courses_bp.route("/", methods=["GET"])
10
+ def list_courses():
11
+ docs = list(db.courses.find({}))
12
+ for d in docs:
13
+ d["_id"] = str(d["_id"])
14
+ return jsonify(docs)
15
+
16
+ @courses_bp.route("/", methods=["POST"])
17
+ @token_required
18
+ @admin_required
19
+ def create_course():
20
+ data = request.json or {}
21
+ title = data.get("title")
22
+ code = data.get("code")
23
+ if not title:
24
+ return jsonify({"error":"Title required"}), 400
25
+ course = {"title": title, "code": code, "created_at": None}
26
+ res = db.courses.insert_one(course)
27
+ return jsonify({"message":"Course created", "id": str(res.inserted_id)}), 201
28
+
29
+ @courses_bp.route("/<course_id>", methods=["PUT"])
30
+ @token_required
31
+ @admin_required
32
+ def update_course(course_id):
33
+ data = request.json or {}
34
+ update = {}
35
+ if "title" in data: update["title"] = data["title"]
36
+ if "code" in data: update["code"] = data["code"]
37
+ db.courses.update_one({"_id": ObjectId(course_id)}, {"$set": update})
38
+ return jsonify({"message":"Updated"})
39
+
40
+ @courses_bp.route("/<course_id>", methods=["DELETE"])
41
+ @token_required
42
+ @admin_required
43
+ def delete_course(course_id):
44
+ db.courses.delete_one({"_id": ObjectId(course_id)})
45
+ return jsonify({"message":"Deleted"})