Skip to content
Snippets Groups Projects
Commit c1aac6e0 authored by Tobias Ullerich's avatar Tobias Ullerich
Browse files

#35 - Add close milestone (tasks, sub tasks) route

parent 15ae076f
No related branches found
No related tags found
No related merge requests found
from enum import Enum
from sqlite3.dbapi2 import Date
import psycopg2
from psycopg2.extras import RealDictCursor
......@@ -107,6 +108,10 @@ class Database:
self.__query(query, roadmapID, versionCode, versionName, title, dueDate, completionDate, status, milestoneID,
fetch_type=FetchType.NONE)
def finish_milestone(self, milestoneID):
query = f'UPDATE milestones SET "{MilestoneParameters.COMPLETION_DATE.value}"=%s, "{MilestoneParameters.STATUS.value}"=%s WHERE "{MilestoneParameters.ID.value}"=%s;'
self.__query(query, Date.today(), 1, milestoneID, fetch_type=FetchType.NONE)
def delete_milestone(self, milestoneID):
query = f'DELETE FROM milestones WHERE "{MilestoneParameters.ID.value}"=%s;'
self.__query(query, milestoneID, fetch_type=FetchType.NONE)
......@@ -136,6 +141,10 @@ class Database:
query = f'UPDATE tasks SET "{TaskParameters.MILESTONE_ID.value}"=%s, "{TaskParameters.TITLE.value}"=%s, "{TaskParameters.DESCRIPTION.value}"=%s, "{TaskParameters.STATUS.value}"=%s WHERE "{TaskParameters.ID.value}"=%s;'
self.__query(query, milestoneID, title, description, status, taskID, fetch_type=FetchType.NONE)
def finish_task(self, taskID):
query = f'UPDATE tasks SET "{TaskParameters.STATUS.value}"=%s WHERE "{TaskParameters.ID.value}"=%s;'
self.__query(query, 1, taskID, fetch_type=FetchType.NONE)
def delete_task(self, taskID):
query = f'DELETE FROM tasks WHERE "{TaskParameters.ID.value}"=%s;'
self.__query(query, taskID, fetch_type=FetchType.NONE)
......@@ -165,6 +174,10 @@ class Database:
query = f'UPDATE subtasks SET "{SubTaskParameters.TASK_ID.value}"=%s, "{SubTaskParameters.TITLE.value}"=%s, "{SubTaskParameters.DESCRIPTION.value}"=%s, "{SubTaskParameters.STATUS.value}"=%s WHERE "{SubTaskParameters.ID.value}"=%s;'
self.__query(query, taskID, title, description, status, subTaskID, fetch_type=FetchType.NONE)
def finish_sub_task(self, subTaskID):
query = f'UPDATE subtasks SET "{SubTaskParameters.STATUS.value}"=%s WHERE "{SubTaskParameters.ID.value}"=%s;'
self.__query(query, 1, subTaskID, fetch_type=FetchType.NONE)
def delete_sub_task(self, subTaskID):
query = f'DELETE FROM subtasks WHERE "{SubTaskParameters.ID.value}"=%s;'
self.__query(query, subTaskID, fetch_type=FetchType.NONE)
......@@ -5,6 +5,8 @@ from flask_jwt_extended import jwt_required
from DateFormatter import DateFormatter
from RequestValidator import RequestValidator, ValidationError
from blueprints.SubTaskAPI import SubTaskParameters
from blueprints.TaskAPI import TaskParameters
class MilestoneParameters(Enum):
......@@ -83,6 +85,25 @@ def construct_blueprint(database):
parameters[MilestoneParameters.STATUS.value])
return jsonify({"success": True})
@milestone_api.route("/milestone/<int:milestoneID>/close", methods=['POST'])
@jwt_required
def close_milestone(milestoneID):
if not __milestone_exists(milestoneID):
return jsonify({"success": False, "msg": "No milestone with id '{}' existing".format(milestoneID)}), 400
database.finish_milestone(milestoneID)
tasks = database.get_tasks(milestoneID)
for task in tasks:
task_id = task[TaskParameters.ID.value]
database.finish_task(task_id)
sub_tasks = database.get_sub_tasks(task_id)
for sub_task in sub_tasks:
database.finish_sub_task(sub_task[SubTaskParameters.ID.value])
return jsonify({"success": True})
@milestone_api.route('/milestone/<int:milestoneID>', methods=['DELETE'])
@jwt_required
def delete_milestone(milestoneID):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment