Untitled

 avatar
unknown
python
6 months ago
3.1 kB
3
Indexable
import uuid
from flask import Flask, request, abort
from db import specializations, course_items
app = Flask(__name__)
@app.get("/course_item/<string:course_item_id>")
def get_course_item(course_item_id):
try:
return course_items[course_item_id]
except KeyError:
abort(404, message="Course_item not found.")
@app.post("/course_item")
def create_course_item():
course_item_data = request.get_json()
if (
"type" not in course_item_data
or "specialization_id" not in course_item_data
or "name" not in course_item_data
):
abort(
400,
message="Bad request. Ensure 'type', 'specialization_id', and 'name' are included in the JSON payload.",
)
for course_item in course_items.values():
if (
course_item_data["name"] == course_item["name"]
and course_item_data["specialization_id"] == course_item["specialization_id"]
):
abort(400, message="Course_item already exists.")
course_item_id = uuid.uuid4().hex
course_item = {**course_item_data, "id": course_item_id}
course_items[course_item_id] = course_item
return course_item
@app.delete("/course_item/<string:course_item_id>")
def delete_course_item(course_item_id):
try:
del course_items[course_item_id]
return {"message": "Course_item deleted."}
except KeyError:
abort(404, message="Course_item not found.")
@app.put("/course_item/<string:course_item_id>")
def update_course_item(course_item_id):
course_item_data = request.get_json()
if "type" not in course_item_data or "name" not in course_item_data:
abort(
400,
message="Bad request. Ensure 'type', and 'name' are included in the JSON payload.",
)
try:
course_item = course_items[course_item_id]
course_item |= course_item_data
return course_item
except KeyError:
abort(404, message="Course_item not found.")
@app.get("/course_item")
def get_all_course_items():
return {"course_items": list(course_items.values())}
@app.get("/specialization/<string:specialization_id>")
def get_specialization(specialization_id):
try:
# Here you might also want to add the course_items in this specialization
# We'll do that later on in the course
return specializations[specialization_id]
except KeyError:
abort(404, message="Specialization not found.")
@app.post("/specialization")
def create_specialization():
specialization_data = request.get_json()
if "name" not in specialization_data:
abort(
400,
message="Bad request. Ensure 'name' is included in the JSON payload.",
)
for specialization in specializations.values():
if specialization_data["name"] == specialization["name"]:
abort(400, message=f"Specialization already exists.")
specialization_id = uuid.uuid4().hex
specialization = {**specialization_data, "id": specialization_id}
specializations[specialization_id] = specialization
return specialization
@app.delete("/specialization/<string:specialization_id>")
def delete_specialization(specialization_id):
try:
del specializations[specialization_id]
return {"message": "Specialization deleted."}
except KeyError:
abort(404, message="Specialization not found.")
@app.get("/specialization")
def get_specializations():
return {"specializations": list(specializations.values())}
Editor is loading...
Leave a Comment