diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2019-03-19 15:55:35 +0000 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2019-03-19 15:55:35 +0000 |
| commit | d06c8ccae125a81eba25f52f30d7da3c1a2bd907 (patch) | |
| tree | 0c61953c155d8e3f44d4676137685d858a582548 /app | |
| parent | language (diff) | |
| download | AnnotateChange-d06c8ccae125a81eba25f52f30d7da3c1a2bd907.tar.gz AnnotateChange-d06c8ccae125a81eba25f52f30d7da3c1a2bd907.zip | |
Allow task deletion from management panel
Diffstat (limited to 'app')
| -rw-r--r-- | app/admin/forms.py | 9 | ||||
| -rw-r--r-- | app/admin/routes.py | 47 | ||||
| -rw-r--r-- | app/templates/admin/index.html | 2 | ||||
| -rw-r--r-- | app/templates/admin/manage.html (renamed from app/templates/admin/assign.html) | 2 |
4 files changed, 40 insertions, 20 deletions
diff --git a/app/admin/forms.py b/app/admin/forms.py index 6e48ee9..0c35933 100644 --- a/app/admin/forms.py +++ b/app/admin/forms.py @@ -6,8 +6,8 @@ from flask import current_app from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileRequired -from wtforms import StringField, SubmitField, SelectField -from wtforms.validators import DataRequired, ValidationError, InputRequired +from wtforms import SubmitField, SelectField +from wtforms.validators import ValidationError, InputRequired from werkzeug.utils import secure_filename @@ -15,12 +15,13 @@ from app.models import Dataset from app.admin.datasets import validate_dataset, get_name_from_dataset -class AdminAssignTaskForm(FlaskForm): +class AdminManageTaskForm(FlaskForm): username = SelectField( "Username", coerce=int, validators=[InputRequired()] ) dataset = SelectField("Dataset", coerce=int, validators=[InputRequired()]) - submit = SubmitField("Assign") + assign = SubmitField("Assign") + delete = SubmitField("Delete") class AdminAddDatasetForm(FlaskForm): diff --git a/app/admin/routes.py b/app/admin/routes.py index 7617943..bcd4603 100644 --- a/app/admin/routes.py +++ b/app/admin/routes.py @@ -10,17 +10,17 @@ from app import db from app.admin import bp from app.admin.datasets import get_name_from_dataset, md5sum from app.admin.decorators import admin_required -from app.admin.forms import AdminAssignTaskForm, AdminAddDatasetForm +from app.admin.forms import AdminManageTaskForm, AdminAddDatasetForm from app.models import User, Dataset, Task -@bp.route("/assign", methods=("GET", "POST")) +@bp.route("/manage", methods=("GET", "POST")) @admin_required -def assign(): +def manage(): user_list = [(u.id, u.username) for u in User.query.all()] dataset_list = [(d.id, d.name) for d in Dataset.query.all()] - form = AdminAssignTaskForm() + form = AdminManageTaskForm() form.username.choices = user_list form.dataset.choices = dataset_list @@ -28,26 +28,45 @@ def assign(): user = User.query.filter_by(id=form.username.data).first() if user is None: flash("User does not exist.") - return redirect(url_for("admin.assign")) + return redirect(url_for("admin.manage")) dataset = Dataset.query.filter_by(id=form.dataset.data).first() if dataset is None: flash("Dataset does not exist.") - return redirect(url_for("admin.assign")) + return redirect(url_for("admin.manage")) + + action = None + if form.assign.data: + action = "assign" + elif form.delete.data: + action = "delete" + else: + flash("Internal error: no button is true but form was submitted.") + return redirect(url_for("admin.manage")) task = Task.query.filter_by( annotator_id=user.id, dataset_id=dataset.id ).first() - if not task is None: - flash("Task assignment already exists.") - return redirect(url_for("admin.assign")) + if task is None: + if action == "delete": + flash("Can't delete a task that doesn't exist.") + return redirect(url_for("admin.manage")) + else: + task = Task(annotator_id=user.id, dataset_id=dataset.id) + db.session.add(task) + db.session.commit() + flash("Task registered successfully.") + else: + if action == "assign": + flash("Task assignment already exists.") + return redirect(url_for("admin.manage")) + else: + db.session.delete(task) + db.session.commit() + flash("Task deleted successfully.") - task = Task(annotator_id=user.id, dataset_id=dataset.id) - db.session.add(task) - db.session.commit() - flash("Task registered successfully.") tasks = Task.query.all() return render_template( - "admin/assign.html", title="Assign Task", form=form, tasks=tasks + "admin/manage.html", title="Assign Task", form=form, tasks=tasks ) diff --git a/app/templates/admin/index.html b/app/templates/admin/index.html index 0a1bd5e..212ead0 100644 --- a/app/templates/admin/index.html +++ b/app/templates/admin/index.html @@ -7,7 +7,7 @@ <a href="/admin/add">Add dataset</a> </li> <li> - <a href="/admin/assign">View and assign tasks</a> + <a href="/admin/manage">View and manage tasks</a> </li> </ul> {% endblock %} diff --git a/app/templates/admin/assign.html b/app/templates/admin/manage.html index a2658e6..aaff8ff 100644 --- a/app/templates/admin/assign.html +++ b/app/templates/admin/manage.html @@ -5,7 +5,7 @@ <h1>Assign Task</h1> <div class="row"> <div class="col-md-4"> - {{ wtf.quick_form(form) }} + {{ wtf.quick_form(form, button_map={'assign': 'primary', 'delete': 'danger'}) }} </div> </div> <article class="overview"> |
