diff --git a/client/blueprints/Tasks.py b/client/blueprints/Tasks.py new file mode 100644 index 0000000000000000000000000000000000000000..70aa4a0dd62b429f3fcd9c8f5706244d46055fac --- /dev/null +++ b/client/blueprints/Tasks.py @@ -0,0 +1,70 @@ +import requests +from flask import Blueprint, render_template, redirect, url_for, request + +from ApiRequest import ApiRequest +from Localization import LOCALIZATION + + +def construct_blueprint(urlBuilder): + tasks = Blueprint('admin_tasks', __name__) + + @tasks.route('/admin/tasks/overview', methods=['GET']) + def overview(): + roadmap_ID = request.args.get('milestone_ID') + if not roadmap_ID or int(roadmap_ID) < 0: + return render_template('error.html', message=LOCALIZATION['error_param_invalid']) + + tasks = requests.get(urlBuilder.build_url('tasks', roadmap_ID)).json() + return render_template('admin/tasks/overview.html', tasks=tasks, roadmap_ID=roadmap_ID) + + @tasks.route('/admin/tasks/add', methods=['GET']) + def add(): + return render_template('admin/tasks/edit.html', + title='New Task', + roadmap_ID=request.args.get('roadmap_ID'), + form_url=url_for('admin_tasks.add_post')) + + @tasks.route('/admin/tasks/add', methods=['POST']) + def add_post(): + success, response = ApiRequest.send_api_request(urlBuilder.build_url('task'), + requests.post, request.form, + ['MilestoneID', 'Title', 'Description', 'Status']) + + if not success: + return response + return redirect(url_for('admin_tasks.overview', roadmap_ID=request.form.get('MilestoneID'))) + + @tasks.route('/admin/tasks/edit', methods=['GET']) + def edit(): + ID = request.args.get('ID') + if not ID or int(ID) < 0: + return render_template('error.html', message=LOCALIZATION['error_param_invalid']) + + task = requests.get(urlBuilder.build_url('milestone', ID)).json() + return render_template('admin/tasks/edit.html', + title='Edit Task', + task=task, + form_url=url_for('admin_tasks.edit_post')) + + @tasks.route('/admin/tasks/edit', methods=['POST']) + def edit_post(): + success, response = ApiRequest.send_api_request(urlBuilder.build_url('task'), + requests.put, request.form, + ['ID', 'MilestoneID', 'Title', 'Description', 'Status']) + + if not success: + return response + return redirect(url_for('admin_tasks.overview', roadmap_ID=request.args.get('milestone_ID'))) + + @tasks.route('/admin/tasks/delete', methods=['GET']) + def delete(): + ID = request.args.get('ID') + if not ID or int(ID) < 0: + return render_template('error.html', message=LOCALIZATION['error_param_invalid']) + + success, response = ApiRequest.send_api_request(urlBuilder.build_url('task', ID), requests.delete, {}, []) + if not success: + return response + return redirect(url_for('admin_tasks.overview', roadmap_ID=request.args.get('milestone_ID'))) + + return tasks