diff --git a/api/DateFormatter.py b/api/DateFormatter.py new file mode 100644 index 0000000000000000000000000000000000000000..3531ef2891f742d85f6dbb08376cb383451703cd --- /dev/null +++ b/api/DateFormatter.py @@ -0,0 +1,12 @@ +from datetime import datetime, date + + +class DateFormatter: + DEFAULT_DATE = date(2000, 1, 1) + FORMAT = "%d.%m.%Y" + + @staticmethod + def format(dateObject): + if dateObject == DateFormatter.DEFAULT_DATE: + return "-" + return datetime.strftime(dateObject, DateFormatter.FORMAT) diff --git a/api/blueprints/MilestoneAPI.py b/api/blueprints/MilestoneAPI.py index 3dce87a9c2a01b2a5b0686c177b4a02d51483b7c..a1ef6f75b1285887151321604b383b5f856a241b 100644 --- a/api/blueprints/MilestoneAPI.py +++ b/api/blueprints/MilestoneAPI.py @@ -3,6 +3,7 @@ from enum import Enum from flask import Blueprint, jsonify, request from flask_jwt_extended import jwt_required +from DateFormatter import DateFormatter from RequestValidator import RequestValidator, ValidationError @@ -21,24 +22,42 @@ class MilestoneParameters(Enum): return [m.value for m in MilestoneParameters] +def prepare_milestone(milestone): + milestone[MilestoneParameters.DUE_DATE.value] = DateFormatter.format( + milestone[MilestoneParameters.DUE_DATE.value]) + milestone[MilestoneParameters.COMPLETION_DATE.value] = DateFormatter.format( + milestone[MilestoneParameters.COMPLETION_DATE.value]) + return milestone + + def construct_blueprint(database): milestone_api = Blueprint('milestone_api', __name__) @milestone_api.route('/milestones/<int:roadmapID>', methods=['GET']) def get_milestones(roadmapID): - return jsonify(database.get_milestones(roadmapID)) + milestones = database.get_milestones(roadmapID) + results = [] + for m in milestones.json: + results.append(prepare_milestone(m)) + return jsonify(results) @milestone_api.route('/milestones/<int:roadmapID>/open', methods=['GET']) def get_open_milestones(roadmapID): - return jsonify(database.get_open_milestones(roadmapID)) + milestones = database.get_open_milestones(roadmapID) + results = [] + for m in milestones: + results.append(prepare_milestone(m)) + return jsonify(results) @milestone_api.route('/milestones/<int:roadmapID>/latest', methods=['GET']) def get_latest_milestone(roadmapID): - return jsonify(database.get_latest_milestone(roadmapID)) + milestone = database.get_latest_milestone(roadmapID) + return jsonify(prepare_milestone(milestone)) @milestone_api.route('/milestone/<int:milestoneID>', methods=['GET']) def get_milestone(milestoneID): - return jsonify(database.get_milestone(milestoneID)) + milestone = database.get_milestone(milestoneID) + return jsonify(prepare_milestone(milestone)) @milestone_api.route('/milestone', methods=['POST']) @jwt_required diff --git a/api/blueprints/RoadmapAPI.py b/api/blueprints/RoadmapAPI.py index 003bfa2fba5ba72e456285d228b3ccf5ea9be945..a3888c96297d2697be27bdf06d787d12b6e120c2 100644 --- a/api/blueprints/RoadmapAPI.py +++ b/api/blueprints/RoadmapAPI.py @@ -4,10 +4,9 @@ from enum import Enum from flask import Blueprint, jsonify, request from flask_jwt_extended import jwt_required +from DateFormatter import DateFormatter from RequestValidator import RequestValidator, ValidationError -DEFAULT_DATE = date(2000, 1, 1) - class RoadmapParameters(Enum): ID = "ID" @@ -26,21 +25,14 @@ def construct_blueprint(database): return jsonify(database.get_roadmap(roadmapID)) @roadmap_api.route('/roadmap/<int:roadmapID>/full', methods=['GET']) - def get_roadmap_fast(roadmapID): + def get_roadmap_full(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") + milestone["DueDate"] = DateFormatter.format(milestone["DueDate"]) + milestone["CompletionDate"] = DateFormatter.format(milestone["CompletionDate"]) if milestone["Status"] == 0: numberOfOpenMilestones += 1 @@ -91,7 +83,8 @@ def construct_blueprint(database): @jwt_required def update_roadmap(): try: - parameters = RequestValidator.validate(request, [RoadmapParameters.ID.value, RoadmapParameters.PROJECT_NAME.value]) + parameters = RequestValidator.validate(request, + [RoadmapParameters.ID.value, RoadmapParameters.PROJECT_NAME.value]) except ValidationError as e: return e.response, 400 @@ -102,7 +95,8 @@ def construct_blueprint(database): if __name_already_used(parameters[RoadmapParameters.PROJECT_NAME.value]): return jsonify({"success": False, "msg": "A roadmap with this name already exists"}), 400 - database.update_roadmap(parameters[RoadmapParameters.ID.value], parameters[RoadmapParameters.PROJECT_NAME.value]) + database.update_roadmap(parameters[RoadmapParameters.ID.value], + parameters[RoadmapParameters.PROJECT_NAME.value]) return jsonify({"success": True}) def __roadmaps_exists(roadmapID):