aboutsummaryrefslogtreecommitdiff
path: root/app/blueprints
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2020-08-18 14:22:16 +0100
committerrubenwardy <rw@rubenwardy.com>2020-08-18 14:22:16 +0100
commit5db633d911bb0f83c44176fce4391f9e2898aab7 (patch)
tree8084791b454fdd7175e104891bb0f053677074f6 /app/blueprints
parent2f208d9239b36db9426cf446cbc3fde651dad3e9 (diff)
downloadcheatdb-5db633d911bb0f83c44176fce4391f9e2898aab7.tar.xz
Add ability to delete unused metapackages
Diffstat (limited to 'app/blueprints')
-rw-r--r--app/blueprints/admin/admin.py10
-rw-r--r--app/blueprints/metapackages/__init__.py5
2 files changed, 14 insertions, 1 deletions
diff --git a/app/blueprints/admin/admin.py b/app/blueprints/admin/admin.py
index d6f9965..50ea64f 100644
--- a/app/blueprints/admin/admin.py
+++ b/app/blueprints/admin/admin.py
@@ -150,6 +150,16 @@ def admin_page():
else:
flash("No downloads to create", "danger")
+ return redirect(url_for("admin.admin_page"))
+
+ elif action == "delmetapackages":
+ query = MetaPackage.query.filter(~MetaPackage.dependencies.any(), ~MetaPackage.packages.any())
+ count = query.count()
+ query.delete(synchronize_session=False)
+ db.session.commit()
+
+ flash("Deleted " + str(count) + " unused meta packages", "success")
+ return redirect(url_for("admin.admin_page"))
else:
flash("Unknown action: " + action, "danger")
diff --git a/app/blueprints/metapackages/__init__.py b/app/blueprints/metapackages/__init__.py
index ef9f803..6d32e65 100644
--- a/app/blueprints/metapackages/__init__.py
+++ b/app/blueprints/metapackages/__init__.py
@@ -24,7 +24,10 @@ from app.models import *
@bp.route("/metapackages/")
def list_all():
- mpackages = MetaPackage.query.order_by(db.asc(MetaPackage.name)).all()
+ mpackages = db.session.query(MetaPackage, func.count(MetaPackage.id)) \
+ .select_from(MetaPackage).outerjoin(MetaPackage.packages) \
+ .order_by(db.asc(MetaPackage.name)) \
+ .group_by(MetaPackage.id).all()
return render_template("meta/list.html", mpackages=mpackages)
@bp.route("/metapackages/<name>/")