From c6885dde36356dc2b862a4dd49a1275cec244625 Mon Sep 17 00:00:00 2001 From: Timur Demin Date: Sun, 11 Aug 2019 21:49:20 +0500 Subject: [PATCH] Allow POSTing PIDs right at the task creation time --- project_amber/handlers/task.py | 3 ++- project_amber/helpers/task.py | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/project_amber/handlers/task.py b/project_amber/handlers/task.py index 052856f..65ab0e6 100644 --- a/project_amber/handlers/task.py +++ b/project_amber/handlers/task.py @@ -69,7 +69,8 @@ def handle_task_request(): # if only I could `get("status", d=0)` like we do that with dicts if status is None: status = 0 - new_id = addTask(text, status) + parent_id = request.json.get("parent_id") # ok to be `None` + new_id = addTask(text, status, parent_id) return dumps({ "id": new_id }) def handle_task_id_request(task_id: int): diff --git a/project_amber/helpers/task.py b/project_amber/helpers/task.py index ae40e22..5913013 100644 --- a/project_amber/helpers/task.py +++ b/project_amber/helpers/task.py @@ -6,13 +6,20 @@ from project_amber.helpers import time from project_amber.models.task import Task -def addTask(text: str, status: int) -> int: +def addTask(text: str, status: int, parent_id: int) -> int: """ Creates a new task. Returns its ID. """ task_time = time() + gen = 0 + if not parent_id is None: + parent = db.session.query(Task)\ + .filter_by(id=parent_id, owner=request.user.id).one_or_none() + if parent is None: + raise NotFound(MSG_TASK_NOT_FOUND) + gen = parent.gen + 1 task = Task(owner=request.user.id, text=text, creation_time=task_time, \ - last_mod_time=task_time, status=status, gen=0) + last_mod_time=task_time, status=status, parent_id=parent_id, gen=gen) db.session.add(task) db.session.commit() return task.id