diff options
| author | rubenwardy <rw@rubenwardy.com> | 2019-01-28 21:49:29 +0000 |
|---|---|---|
| committer | rubenwardy <rw@rubenwardy.com> | 2019-01-28 21:49:29 +0000 |
| commit | 5cd8b35d1f58104b78ed31724e174c2b478f3498 (patch) | |
| tree | 301dd3ea76595dd079c6053a2f3acd8058405acb /app/views | |
| parent | 84b996c489b2003c8da010baf92b748915170974 (diff) | |
| download | cheatdb-5cd8b35d1f58104b78ed31724e174c2b478f3498.tar.xz | |
Add ability to bulk change releases
Diffstat (limited to 'app/views')
| -rw-r--r-- | app/views/packages/releases.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/app/views/packages/releases.py b/app/views/packages/releases.py index 98a72a1..13f0a32 100644 --- a/app/views/packages/releases.py +++ b/app/views/packages/releases.py @@ -160,3 +160,38 @@ def edit_release_page(package, id): return redirect(package.getDetailsURL()) return render_template("packages/release_edit.html", package=package, release=release, form=form) + + + +class BulkReleaseForm(FlaskForm): + set_min = BooleanField("Set Min") + min_rel = QuerySelectField("Minimum Minetest Version", [InputRequired()], + query_factory=lambda: MinetestRelease.query.order_by(db.asc(MinetestRelease.id)), get_pk=lambda a: a.id, get_label=lambda a: a.name) + set_max = BooleanField("Set Max") + max_rel = QuerySelectField("Maximum Minetest Version", [InputRequired()], + query_factory=lambda: MinetestRelease.query.order_by(db.asc(MinetestRelease.id)), get_pk=lambda a: a.id, get_label=lambda a: a.name) + submit = SubmitField("Update") + + +@app.route("/packages/<author>/<name>/releases/bulk_change/", methods=["GET", "POST"]) +@login_required +@is_package_page +def bulk_change_release_page(package): + if not package.checkPerm(current_user, Permission.MAKE_RELEASE): + return redirect(package.getDetailsURL()) + + # Initial form class from post data and default data + form = BulkReleaseForm() + + if request.method == "POST" and form.validate(): + for release in package.releases.all(): + if form["set_min"].data: + release.min_rel = form["min_rel"].data.getActual() + if form["set_max"].data: + release.max_rel = form["max_rel"].data.getActual() + + db.session.commit() + + return redirect(package.getDetailsURL()) + + return render_template("packages/release_bulk_change.html", package=package, form=form) |
