From 034315d421c01c5524565d24e3f7fd3666a77ee1 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Mon, 28 Jan 2019 22:28:47 +0000 Subject: [PATCH] Add notes about min/max, and hide invalid options --- app/public/static/release_minmax.js | 18 +++++++++++++++ .../packages/release_bulk_change.html | 15 +++++++++++++ app/templates/packages/release_edit.html | 19 ++++++++++++++-- app/templates/packages/release_new.html | 15 +++++++++++++ app/views/packages/releases.py | 22 ++++++++++++++----- 5 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 app/public/static/release_minmax.js diff --git a/app/public/static/release_minmax.js b/app/public/static/release_minmax.js new file mode 100644 index 0000000..5e63de3 --- /dev/null +++ b/app/public/static/release_minmax.js @@ -0,0 +1,18 @@ +var min = $("#min_rel"); +var max = $("#max_rel"); +var none = $("#min_rel option:first-child").attr("value"); +var warning = $("#minmax_warning"); + +function ver_check() { + var minv = min.val(); + var maxv = max.val(); + + if (minv != none && maxv != none && minv > maxv) { + warning.show(); + } else { + warning.hide(); + } +} + +min.change(ver_check); +max.change(ver_check); diff --git a/app/templates/packages/release_bulk_change.html b/app/templates/packages/release_bulk_change.html index 73d45e1..f416ada 100644 --- a/app/templates/packages/release_bulk_change.html +++ b/app/templates/packages/release_bulk_change.html @@ -24,6 +24,21 @@ {{ render_field(form.max_rel, class_="col-sm-10") }} + + +

+ Note: Min and max versions will be used to hide the package on + platforms not within the range. + You cannot selected the oldest version for min or the newest version + for max as this does not make sense - you can't predict the future. +

+ {{ render_submit_field(form.submit) }} {% endblock %} + +{% block scriptextra %} + +{% endblock %} diff --git a/app/templates/packages/release_edit.html b/app/templates/packages/release_edit.html index 32df306..2f69f2c 100644 --- a/app/templates/packages/release_edit.html +++ b/app/templates/packages/release_edit.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - Create a release | {{ package.title }} + Edit release | {{ package.title }} {% endblock %} {% block content %} @@ -39,12 +39,27 @@ Approved: {{ release.approved }} {% endif %} {% endif %} - +
{{ render_field(form.min_rel, class_="col-sm-6") }} {{ render_field(form.max_rel, class_="col-sm-6") }}
+ + +

+ Note: Min and max versions will be used to hide the package on + platforms not within the range. + You cannot selected the oldest version for min or the newest version + for max as this does not make sense - you can't predict the future. +

+ {{ render_submit_field(form.submit) }} {% endblock %} + +{% block scriptextra %} + +{% endblock %} diff --git a/app/templates/packages/release_new.html b/app/templates/packages/release_new.html index 32cc8d8..69fe91e 100644 --- a/app/templates/packages/release_new.html +++ b/app/templates/packages/release_new.html @@ -24,6 +24,21 @@ {{ render_field(form.max_rel, class_="col-sm-6") }} + + +

+ Note: Min and max versions will be used to hide the package on + platforms not within the range. + You cannot selected the oldest version for min or the newest version + for max as this does not make sense - you can't predict the future. +

+ {{ render_submit_field(form.submit) }} {% endblock %} + +{% block scriptextra %} + +{% endblock %} diff --git a/app/views/packages/releases.py b/app/views/packages/releases.py index 13f0a32..a8ea37d 100644 --- a/app/views/packages/releases.py +++ b/app/views/packages/releases.py @@ -30,15 +30,25 @@ from wtforms.validators import * from wtforms.ext.sqlalchemy.fields import QuerySelectField +def get_mt_releases(is_max): + query = MinetestRelease.query.order_by(db.asc(MinetestRelease.id)) + if is_max: + query = query.limit(query.count() - 1) + else: + query = query.filter(MinetestRelease.name != "0.4.17") + + return query + + class CreatePackageReleaseForm(FlaskForm): title = StringField("Title", [InputRequired(), Length(1, 30)]) uploadOpt = RadioField ("Method", choices=[("upload", "File Upload")], default="upload") vcsLabel = StringField("VCS Commit or Branch", default="master") fileUpload = FileField("File Upload") 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) + query_factory=lambda: get_mt_releases(False), get_pk=lambda a: a.id, get_label=lambda a: a.name) 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) + query_factory=lambda: get_mt_releases(True), get_pk=lambda a: a.id, get_label=lambda a: a.name) submit = SubmitField("Save") class EditPackageReleaseForm(FlaskForm): @@ -47,9 +57,9 @@ class EditPackageReleaseForm(FlaskForm): task_id = StringField("Task ID") approved = BooleanField("Is Approved") 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) + query_factory=lambda: get_mt_releases(False), get_pk=lambda a: a.id, get_label=lambda a: a.name) 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) + query_factory=lambda: get_mt_releases(True), get_pk=lambda a: a.id, get_label=lambda a: a.name) submit = SubmitField("Save") @app.route("/packages///releases/new/", methods=["GET", "POST"]) @@ -166,10 +176,10 @@ def edit_release_page(package, id): 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) + query_factory=lambda: get_mt_releases(False), 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) + query_factory=lambda: get_mt_releases(True), get_pk=lambda a: a.id, get_label=lambda a: a.name) submit = SubmitField("Update")