Skip to content
Snippets Groups Projects
Commit 3f41513a authored by Robert Goldmann's avatar Robert Goldmann
Browse files

RoadmapAPI: added full json request for roadmap; adapted client;

parent 515d6e19
Branches
Tags
No related merge requests found
import json import json
from datetime import datetime
from flask import Flask, send_from_directory from flask import Flask, send_from_directory
from flask import jsonify from flask import jsonify
from gevent.pywsgi import WSGIServer from gevent.pywsgi import WSGIServer
...@@ -13,6 +14,8 @@ with open("settings.json", "r") as f: ...@@ -13,6 +14,8 @@ with open("settings.json", "r") as f:
database = Database(SETTINGS["database"]) database = Database(SETTINGS["database"])
DEFAULT_DATE = datetime(2000, 1, 1, 0, 0, 0)
@app.route('/') @app.route('/')
def index(): def index():
...@@ -29,6 +32,46 @@ def get_roadmap(roadmapID): ...@@ -29,6 +32,46 @@ def get_roadmap(roadmapID):
return jsonify(database.get_roadmap(roadmapID)) return jsonify(database.get_roadmap(roadmapID))
@app.route('/roadmap/<int:roadmapID>/full', methods=['GET'])
def get_roadmap_fast(roadmapID):
roadmap = database.get_roadmap(roadmapID)
roadmap["milestones"] = database.get_milestones(roadmapID)
numberOfOpenMilestones = 0
for milestone in roadmap["milestones"]:
if milestone["DueDate"] == DEFAULT_DATE:
milestone["DueDate"] = "-"
else:
milestone["DueDate"] = datetime.strftime(milestone["DueDate"], "%d.%m.%Y")
if milestone["CompletionDate"] == DEFAULT_DATE:
milestone["CompletionDate"] = "-"
else:
milestone["CompletionDate"] = datetime.strftime(milestone["CompletionDate"], "%d.%m.%Y")
if milestone["Status"] == 0:
numberOfOpenMilestones += 1
milestone["tasks"] = database.get_tasks(milestone["ID"])
numberOfOpenTasks = 0
for task in milestone["tasks"]:
task["subtasks"] = database.get_sub_tasks(task["ID"])
numberOfOpenSubTasks = 0
for subtask in task["subtasks"]:
if subtask["Status"] == 0:
numberOfOpenSubTasks += 1
task["numberOfOpenSubTasks"] = numberOfOpenSubTasks
if task["Status"] == 0:
numberOfOpenTasks += 1
milestone["numberOfOpenTasks"] = numberOfOpenTasks
roadmap["numberOfOpenMilestones"] = numberOfOpenMilestones
return jsonify(roadmap)
@app.route('/milestones/<int:roadmapID>', methods=['GET']) @app.route('/milestones/<int:roadmapID>', methods=['GET'])
def get_milestones(roadmapID): def get_milestones(roadmapID):
return jsonify(database.get_milestones(roadmapID)) return jsonify(database.get_milestones(roadmapID))
......
...@@ -8,7 +8,7 @@ from Localization import LOCALIZATION ...@@ -8,7 +8,7 @@ from Localization import LOCALIZATION
app = Flask(__name__) app = Flask(__name__)
API_URL = "http://127.0.0.1:5000" API_URL = "http://127.0.0.1:10000"
DEFAULT_DATE = datetime(2000, 1, 1, 0, 0, 0) DEFAULT_DATE = datetime(2000, 1, 1, 0, 0, 0)
...@@ -38,50 +38,13 @@ def roadmap_by_id(roadmapID): ...@@ -38,50 +38,13 @@ def roadmap_by_id(roadmapID):
if roadmapID < 1: if roadmapID < 1:
return render_template("error.html", message=LOCALIZATION["error_param_invalid"]) return render_template("error.html", message=LOCALIZATION["error_param_invalid"])
roadmap = requests.get(build_url("roadmap", roadmapID)).json() roadmap = requests.get(build_url("roadmap", roadmapID, "full")).json()
if roadmap is None: if roadmap is None:
return render_template("error.html", message=LOCALIZATION["error_roadmap_not_existing"]) return render_template("error.html", message=LOCALIZATION["error_roadmap_not_existing"])
roadmap["milestones"] = requests.get(build_url("milestones", roadmapID)).json()
numberOfOpenMilestones = 0
for milestone in roadmap["milestones"]:
dueDate = datetime.strptime(milestone["DueDate"], "%a, %d %b %Y %H:%M:%S %Z")
if dueDate == DEFAULT_DATE:
milestone["DueDate"] = "-"
else:
milestone["DueDate"] = datetime.strftime(dueDate, "%d.%m.%Y")
completionDate = datetime.strptime(milestone["CompletionDate"], "%a, %d %b %Y %H:%M:%S %Z")
if completionDate == DEFAULT_DATE:
milestone["CompletionDate"] = "-"
else:
milestone["CompletionDate"] = datetime.strftime(completionDate, "%d.%m.%Y")
if milestone["Status"] == 0:
numberOfOpenMilestones += 1
milestone["tasks"] = requests.get(build_url("tasks", milestone["ID"])).json()
numberOfOpenTasks = 0
for task in milestone["tasks"]:
task["subtasks"] = requests.get(build_url("subtasks", task["ID"])).json()
numberOfOpenSubTasks = 0
for subtask in task["subtasks"]:
if subtask["Status"] == 0:
numberOfOpenSubTasks += 1
task["numberOfOpenSubTasks"] = numberOfOpenSubTasks
if task["Status"] == 0:
numberOfOpenTasks += 1
milestone["numberOfOpenTasks"] = numberOfOpenTasks
roadmap["numberOfOpenMilestones"] = numberOfOpenMilestones
return render_template("index.html", roadmap=roadmap, localization=LOCALIZATION) return render_template("index.html", roadmap=roadmap, localization=LOCALIZATION)
if __name__ == "__main__": if __name__ == "__main__":
http_server = WSGIServer(("0.0.0.0", 10000), app) http_server = WSGIServer(("0.0.0.0", 11000), app)
http_server.serve_forever() http_server.serve_forever()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment