diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2019-03-27 15:03:33 +0000 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2019-03-27 15:03:33 +0000 |
| commit | 750220190948c8698a7a81c90e03dae0af410a1a (patch) | |
| tree | 1fd813dcd101dad486b1e4309fdaf6165deec97c /app/admin | |
| parent | Validate name of dataset (diff) | |
| download | AnnotateChange-750220190948c8698a7a81c90e03dae0af410a1a.tar.gz AnnotateChange-750220190948c8698a7a81c90e03dae0af410a1a.zip | |
Add ability for admin to delete datasets
Diffstat (limited to 'app/admin')
| -rw-r--r-- | app/admin/forms.py | 5 | ||||
| -rw-r--r-- | app/admin/routes.py | 29 |
2 files changed, 32 insertions, 2 deletions
diff --git a/app/admin/forms.py b/app/admin/forms.py index 0c35933..30070d2 100644 --- a/app/admin/forms.py +++ b/app/admin/forms.py @@ -52,3 +52,8 @@ class AdminAddDatasetForm(FlaskForm): raise ValidationError( "A dataset with the name '%s' already exists." % name ) + + +class AdminManageDatasetsForm(FlaskForm): + dataset = SelectField("Dataset", coerce=int, validators=[InputRequired()]) + delete = SubmitField("Delete") diff --git a/app/admin/routes.py b/app/admin/routes.py index bec6cd3..f8d72d2 100644 --- a/app/admin/routes.py +++ b/app/admin/routes.py @@ -10,7 +10,11 @@ from app import db from app.admin import bp from app.admin.datasets import get_name_from_dataset, md5sum from app.decorators import admin_required -from app.admin.forms import AdminManageTaskForm, AdminAddDatasetForm +from app.admin.forms import ( + AdminManageTaskForm, + AdminAddDatasetForm, + AdminManageDatasetsForm, +) from app.models import User, Dataset, Task, Annotation @@ -85,9 +89,29 @@ def manage_users(): ) -@bp.route("/manage/datasets", methods=("GET",)) +@bp.route("/manage/datasets", methods=("GET", "POST")) @admin_required def manage_datasets(): + dataset_list = [(d.id, d.name) for d in Dataset.query.all()] + + form = AdminManageDatasetsForm() + form.dataset.choices = dataset_list + + if form.validate_on_submit(): + dataset = Dataset.query.filter_by(id=form.dataset.data).first() + if dataset is None: + flash("Dataset doesn't exist.", "error") + return redirect(url_for("admin.manage_datasets")) + + tasks = Task.query.filter_by(dataset_id=dataset.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(dataset) + db.session.commit() + flash("Dataset deleted successfully.", "success") + overview = [] for dataset in Dataset.query.all(): tasks = Task.query.filter_by(dataset_id=dataset.id).all() @@ -105,6 +129,7 @@ def manage_datasets(): "admin/manage_datasets.html", title="Manage Datasets", overview=overview, + form=form, ) |
