diff options
author | rubenwardy <rw@rubenwardy.com> | 2020-08-18 14:22:16 +0100 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2020-08-18 14:22:16 +0100 |
commit | 5db633d911bb0f83c44176fce4391f9e2898aab7 (patch) | |
tree | 8084791b454fdd7175e104891bb0f053677074f6 | |
parent | 2f208d9239b36db9426cf446cbc3fde651dad3e9 (diff) | |
download | cheatdb-5db633d911bb0f83c44176fce4391f9e2898aab7.tar.xz |
Add ability to delete unused metapackages
-rw-r--r-- | app/blueprints/admin/admin.py | 10 | ||||
-rw-r--r-- | app/blueprints/metapackages/__init__.py | 5 | ||||
-rw-r--r-- | app/templates/admin/list.html | 10 | ||||
-rw-r--r-- | app/templates/meta/list.html | 33 |
4 files changed, 49 insertions, 9 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>/") diff --git a/app/templates/admin/list.html b/app/templates/admin/list.html index 211c86d..4f42674 100644 --- a/app/templates/admin/list.html +++ b/app/templates/admin/list.html @@ -25,15 +25,17 @@ <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> <div class="row px-3"> <select name="action" class="custom-select col"> - <option value="delstuckreleases" selected>Delete stuck releases</option> - <option value="checkreleases">Validate all Zip releases</option> + <option value="cleanuploads" selected>Delete unreachable uploads</option> + <option value="delmetapackages">Delete unused meta packages</option> + <option value="delstuckreleases">Delete stuck releases</option> <option value="reimportpackages">Reimport meta</option> + <option value="recalcscores">Recalculate package scores</option> + <option value="div">------</option> + <option value="checkreleases">Validate all Zip releases</option> <option value="importmodlist">Import forum topics</option> <option value="importforeign">Import foreign release downloads</option> - <option value="recalcscores">Recalculate package scores</option> <option value="checkusers">Check forum users</option> <option value="importscreenshots">Import screenshots from VCS</option> - <option value="cleanuploads">Delete unreachable uploads</option> </select> <input type="submit" value="Perform" class="col-sm-auto btn btn-primary ml-2" /> </div> diff --git a/app/templates/meta/list.html b/app/templates/meta/list.html index 525bafd..a2a468c 100644 --- a/app/templates/meta/list.html +++ b/app/templates/meta/list.html @@ -5,11 +5,36 @@ Meta Packages {% endblock %} {% block content %} - <ul> - {% for meta in mpackages %} - <li><a href="{{ url_for('metapackages.view', name=meta.name) }}">{{ meta.name }}</a> ({{ meta.packages.filter_by(soft_deleted=False, approved=True).all() | count }} packages)</li> + <div class="list-group"> + <div class="list-group-item"> + <div class="row text-muted"> + <div class="col-sm"> + {{ _("Name") }} + </div> + + <div class="col-sm-1 text-center"> + {{ _("Packages") }} + </div> + </div> + </div> + + {% for pair in mpackages %} + {% set meta = pair[0] %} + {% set count = pair[1] %} + <a class="list-group-item list-group-item-action" + href="{{ url_for('metapackages.view', name=meta.name) }}"> + <div class="row"> + <div class="col-sm"> + {{ meta.name }} + </div> + + <div class="col-sm-1 text-center"> + {{ count }} + </div> + </div> + </a> {% else %} <li><i>No meta packages found.</i></li> {% endfor %} - </ul> + </div> {% endblock %} |