Skip to content

Commit d40f46a

Browse files
committed
wave01
1 parent c76d9c9 commit d40f46a

File tree

1 file changed

+83
-31
lines changed

1 file changed

+83
-31
lines changed

app/routes.py

+83-31
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,104 @@
1-
# from app import db
2-
# from app.models.task import Task
3-
# from flask import Blueprint, request, make_response, jsonify
4-
5-
# task_bp = Blueprint("tasks",__name__, url_prefix="/tasks")
6-
7-
# @task_bp.route("",method=["POST"])
8-
# def handle_books():
9-
# if request.method == "POST":
10-
# request_body = request.json()
11-
# new_task = Task(
12-
# title = request_body["title"],
13-
# description = request_body["description"],
14-
# complete_at = request_body["complete_at"] )
15-
16-
# db.session.add(new_task)
17-
# db.session.commit()
18-
19-
# return make_response(f"Task {new_task.title} successfully added")
201

212
from app import db
223
from app.models.task import Task
234
from flask import request, Blueprint, make_response, jsonify
5+
from sqlalchemy import asc, desc
246

257
tasks_bp = Blueprint("tasks", __name__, url_prefix="/tasks")
268

9+
10+
def is_complete(completed_at):
11+
12+
if completed_at is None:
13+
return False
14+
else:
15+
return True
16+
2717
@tasks_bp.route("", methods=["GET", "POST"])
2818
def handle_tasks():
19+
2920
if request.method == "GET":
3021
tasks = Task.query.all()
3122
tasks_response = []
3223
for task in tasks:
33-
tasks_response.append({
34-
"task_id": task.task_id,
24+
if task.completed_at is None :
25+
tasks_response.append({
26+
"id": task.task_id,
3527
"title": task.title,
3628
"description": task.description,
37-
"completed_at": task.completed_at
38-
29+
"is_complete" : False
3930
})
40-
return jsonify(tasks_response)
41-
elif request.method == "POST":
31+
else:
32+
tasks_response.append({
33+
"id": task.task_id,
34+
"title": task.title,
35+
"description": task.description,
36+
"completed_at": task.completed_at,
37+
"is_complete" : False
38+
})
39+
return jsonify(tasks_response), 200
40+
41+
if request.method == "POST":
4242
request_body = request.get_json()
43-
new_task = Task(
44-
title = request_body["title"],
45-
description = request_body["description"],
46-
completed_at = request_body["completed_at"] )
47-
db.session.add(new_task)
43+
if "title" not in request_body or "description" not in request_body or "completed_at" not in request_body:
44+
return make_response({
45+
"details": "Invalid data"
46+
}, 400)
47+
else:
48+
new_task = Task(title=request_body["title"], description=request_body["description"], completed_at=request_body["completed_at"])
49+
db.session.add(new_task)
50+
db.session.commit()
51+
return make_response(
52+
{ "task": {
53+
"id": new_task.task_id,
54+
"title": new_task.title,
55+
"description": new_task.description,
56+
"is_complete": is_complete(new_task.completed_at)
57+
}}, 201)
58+
59+
@tasks_bp.route("/<task_id>", methods=["GET","PUT", "DELETE"])
60+
def handle_tasks_id(task_id):
61+
task = Task.query.get(task_id)
62+
if task is None:
63+
return make_response("", 404)
64+
65+
if request.method == "GET":
66+
if task is not None:
67+
return {"task":{
68+
"id": task.task_id,
69+
"title": task.title,
70+
"description": task.description,
71+
"is_complete": False
72+
}}
73+
74+
75+
elif request.method == "PUT":
76+
data = request.get_json()
77+
78+
task.title = data["title"]
79+
task.description = data["description"]
80+
task.completed_at = data["completed_at"]
81+
4882
db.session.commit()
83+
84+
data_response= {
85+
"task": {
86+
"id": task.task_id,
87+
"title": task.title,
88+
"description": task.description,
89+
"is_complete": is_complete(task.completed_at)
90+
}
91+
}
92+
return make_response(jsonify(data_response),200)
93+
94+
95+
elif request.method == "DELETE":
96+
db.session.delete(task)
97+
db.session.commit()
98+
99+
delete_id_response= f'Task {task.task_id} "{task.title}" successfully deleted'
100+
101+
return make_response(jsonify({"details":delete_id_response}))
49102

50-
return make_response(f"Planet {new_task.name} successfully created", 201)
51103

52104

0 commit comments

Comments
 (0)