"""Stack Web Services LLC""" import validators from flask import Blueprint, redirect, render_template, request, url_for from SWSCloudCore.controllers.tasks.manage import ControllerManageTasks from SWSCloudAdministrator.Administrator.common import requires_login from SWSCloudCore import models view_administrator_tasks = Blueprint( 'administrator_tasks', __name__, url_prefix='/administrator/tasks') @view_administrator_tasks.route('/', methods=['GET']) @requires_login def index(): return render_template( 'administrator/tasks/index.html', total=models.Tasks.count_items(), tasks=ControllerManageTasks().get()) @view_administrator_tasks.route('/edit.html', methods=['GET']) @requires_login def edit(): task_id = request.form.get('task_id') if not validators.uuid(task_id) or not models.Tasks.exists(task_id): return redirect(url_for('administrator_tasks.index')) task = ControllerManageTasks().get_task(task_id) return render_template( 'administrator/tasks/edit.html', task=task) @view_administrator_tasks.route('/edit.html', methods=['POST']) @requires_login def edit_post(): task_id = request.form.get('task_id') # todo: validate status = request.form.get('status') if not validators.uuid(task_id) or not models.Tasks.exists(task_id): return redirect(url_for('administrator_tasks.index')) task = models.Tasks.update( status=status ).where(models.Tasks.id == task_id) task.execute() return redirect(url_for('administrator_tasks.edit', task_id=task_id)) @view_administrator_tasks.route('/delete.html', methods=['GET']) @requires_login def delete(): task_id = request.args.get('task_id') if not validators.uuid(task_id) or not models.Tasks.exists(task_id): return redirect(url_for('administrator_tasks.index')) task = ControllerManageTasks().get_task(task_id) return render_template( 'administrator/tasks/delete.html', task=task ) @view_administrator_tasks.route('/delete.html', methods=['POST']) @requires_login def delete_post(): task_id = request.form.get('task_id') if not validators.uuid(task_id) or not models.Tasks.exists(task_id): return redirect(url_for('administrator_tasks.index')) task = models.Tasks.delete().where(models.Tasks.id == task_id) task.execute() return redirect(url_for('administrator_tasks.index'))