From 981f29b04caf2c81e7c6109037ec26ee4aadc7f7 Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Mon, 1 Apr 2019 15:58:58 +0100 Subject: Give admin the ability to delete users --- app/admin/forms.py | 4 ++++ app/admin/routes.py | 23 ++++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) (limited to 'app/admin') 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 ) -- cgit v1.2.3