aboutsummaryrefslogtreecommitdiff
path: root/app/admin
diff options
context:
space:
mode:
authorGertjan van den Burg <gertjanvandenburg@gmail.com>2019-04-01 15:58:58 +0100
committerGertjan van den Burg <gertjanvandenburg@gmail.com>2019-04-01 15:58:58 +0100
commit981f29b04caf2c81e7c6109037ec26ee4aadc7f7 (patch)
treefeab05ac45e229cce689c4ab7b9ec1cbf5303bf5 /app/admin
parentMove task assignment to separate module (diff)
downloadAnnotateChange-981f29b04caf2c81e7c6109037ec26ee4aadc7f7.tar.gz
AnnotateChange-981f29b04caf2c81e7c6109037ec26ee4aadc7f7.zip
Give admin the ability to delete users
Diffstat (limited to 'app/admin')
-rw-r--r--app/admin/forms.py4
-rw-r--r--app/admin/routes.py23
2 files changed, 26 insertions, 1 deletions
diff --git a/app/admin/forms.py b/app/admin/forms.py
index 3d76b5d..a5aa321 100644
--- a/app/admin/forms.py
+++ b/app/admin/forms.py
@@ -69,3 +69,7 @@ class AdminAddDatasetForm(FlaskForm):
class AdminManageDatasetsForm(FlaskForm):
dataset = SelectField("Dataset", coerce=int, validators=[InputRequired()])
delete = SubmitField("Delete")
+
+class AdminManageUsersForm(FlaskForm):
+ user = SelectField("User", coerce=int, validators=[InputRequired()])
+ delete = SubmitField("Delete")
diff --git a/app/admin/routes.py b/app/admin/routes.py
index 859f8ac..c8a23a4 100644
--- a/app/admin/routes.py
+++ b/app/admin/routes.py
@@ -16,6 +16,7 @@ from app.admin.forms import (
AdminManageTaskForm,
AdminAddDatasetForm,
AdminManageDatasetsForm,
+ AdminManageUsersForm,
)
from app.models import User, Dataset, Task, Annotation
from app.utils.tasks import generate_auto_assign_tasks
@@ -113,8 +114,28 @@ def manage_tasks():
@admin_required
def manage_users():
users = User.query.all()
+ user_list = [(u.id, u.username) for u in users]
+
+ form = AdminManageUsersForm()
+ form.user.choices = user_list
+
+ if form.validate_on_submit():
+ user = User.query.filter_by(id=form.user.data).first()
+ if user is None:
+ flash("User doesn't exist.", "error")
+ return redirect(url_for("admin.manage_users"))
+
+ tasks = Task.query.filter_by(annotator_id=user.id).all()
+ for task in tasks:
+ for ann in Annotation.query.filter_by(task_id=task.id).all():
+ db.session.delete(ann)
+ db.session.delete(task)
+ db.session.delete(user)
+ db.session.commit()
+ flash("User deleted successfully.", "success")
+ return redirect(url_for("admin.manage_users"))
return render_template(
- "admin/manage_users.html", title="Manage Users", users=users
+ "admin/manage_users.html", title="Manage Users", users=users, form=form
)