aboutsummaryrefslogtreecommitdiff
path: root/app/admin
diff options
context:
space:
mode:
authorGertjan van den Burg <gertjanvandenburg@gmail.com>2019-06-03 15:19:28 +0100
committerGertjan van den Burg <gertjanvandenburg@gmail.com>2019-06-03 15:19:28 +0100
commit94c3656bea0ff16b826f1adf34a3ada9084c7f8f (patch)
treeb9e64849ea5dd15ab94fb3b8f79a2080fa050d1e /app/admin
parentInitial version of demo (diff)
downloadAnnotateChange-94c3656bea0ff16b826f1adf34a3ada9084c7f8f.tar.gz
AnnotateChange-94c3656bea0ff16b826f1adf34a3ada9084c7f8f.zip
Rewrite the task assignment flow
With the demo in place, we're rewriting the task assignment flow such that users only get a task assigned when: 1. They finish the demo 2. They finish a task 3. They login again. This way we can better balance the datasets and we won't have datasets that don't get enough annotations because some users didn't finish tasks they were assigned.
Diffstat (limited to 'app/admin')
-rw-r--r--app/admin/forms.py14
-rw-r--r--app/admin/routes.py41
2 files changed, 12 insertions, 43 deletions
diff --git a/app/admin/forms.py b/app/admin/forms.py
index bd1dce6..5ff5361 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 SubmitField, SelectField, IntegerField
-from wtforms.validators import ValidationError, InputRequired, NumberRange
+from wtforms import SubmitField, SelectField
+from wtforms.validators import ValidationError, InputRequired
from werkzeug.utils import secure_filename
@@ -15,16 +15,6 @@ from app.models import Dataset
from app.utils.datasets import validate_dataset, get_name_from_dataset
-class AdminAutoAssignForm(FlaskForm):
- max_per_user = IntegerField(
- "Maximum Tasks per User", [NumberRange(min=0, max=10)], default=5
- )
- num_per_dataset = IntegerField(
- "Tasks per Dataset", [NumberRange(min=1, max=20)], default=10
- )
- submit = SubmitField("Submit")
-
-
class AdminManageTaskForm(FlaskForm):
username = SelectField(
"Username", coerce=int, validators=[InputRequired()]
diff --git a/app/admin/routes.py b/app/admin/routes.py
index f0d7817..d244a77 100644
--- a/app/admin/routes.py
+++ b/app/admin/routes.py
@@ -10,7 +10,6 @@ from app import db
from app.admin import bp
from app.decorators import admin_required
from app.admin.forms import (
- AdminAutoAssignForm,
AdminManageTaskForm,
AdminAddDatasetForm,
AdminManageDatasetsForm,
@@ -24,54 +23,38 @@ from app.utils.datasets import (
dataset_is_demo,
load_data_for_chart,
)
-from app.utils.tasks import generate_auto_assign_tasks
@bp.route("/manage/tasks", methods=("GET", "POST"))
@admin_required
def manage_tasks():
- form_auto = AdminAutoAssignForm()
-
user_list = [(u.id, u.username) for u in User.query.all()]
dataset_list = [
(d.id, d.name) for d in Dataset.query.order_by(Dataset.name).all()
]
- form_manual = AdminManageTaskForm()
- form_manual.username.choices = user_list
- form_manual.dataset.choices = dataset_list
-
- if form_auto.validate_on_submit() and form_auto.submit.data:
- max_per_user = form_auto.max_per_user.data
- num_per_dataset = form_auto.num_per_dataset.data
+ form = AdminManageTaskForm()
+ form.username.choices = user_list
+ form.dataset.choices = dataset_list
- for task, error in generate_auto_assign_tasks(
- max_per_user, num_per_dataset
- ):
- if task is None:
- flash(error, "error")
- return redirect(url_for("admin.manage_tasks"))
- db.session.add(task)
- db.session.commit()
- flash("Automatic task assignment successful.", "success")
- elif form_manual.validate_on_submit():
- user = User.query.filter_by(id=form_manual.username.data).first()
+ if form.validate_on_submit():
+ user = User.query.filter_by(id=form.username.data).first()
if user is None:
flash("User does not exist.", "error")
return redirect(url_for("admin.manage_tasks"))
- dataset = Dataset.query.filter_by(id=form_manual.dataset.data).first()
+ dataset = Dataset.query.filter_by(id=form.dataset.data).first()
if dataset is None:
flash("Dataset does not exist.", "error")
return redirect(url_for("admin.manage_tasks"))
action = None
- if form_manual.assign.data:
+ if form.assign.data:
action = "assign"
- elif form_manual.delete.data:
+ elif form.delete.data:
action = "delete"
else:
flash(
- "Internal error: no button is true but form_manual was submitted.",
+ "Internal error: no button is true but form was submitted.",
"error",
)
return redirect(url_for("admin.manage_tasks"))
@@ -107,11 +90,7 @@ def manage_tasks():
.all()
)
return render_template(
- "admin/manage.html",
- title="Assign Task",
- form_auto=form_auto,
- form_manual=form_manual,
- tasks=tasks,
+ "admin/manage.html", title="Assign Task", form=form, tasks=tasks
)