Don't cause http 500 if no label is chosen

This commit is contained in:
Ivan Habunek 2018-10-25 09:59:57 +02:00 committed by Drew DeVault
parent a6d0f9254c
commit b8e3b947b2
2 changed files with 19 additions and 2 deletions

View File

@ -320,6 +320,18 @@ def ticket_add_label(owner, name, ticket_id):
if not TicketAccess.edit in access:
abort(401)
valid = Validation(request)
label_id = valid.require("label_id", friendly_name="A label")
if not valid.ok:
return render_template("ticket.html",
tracker=tracker, ticket=ticket, access=access, **valid.kwargs)
valid.expect(re.match(r"^\d+$", label_id),
"Label ID must be numeric", field="label_id")
if not valid.ok:
return render_template("ticket.html",
tracker=tracker, ticket=ticket, access=access, **valid.kwargs)
label_id = int(request.form.get('label_id'))
label = Label.query.filter(Label.id == label_id).first()
if not label:

View File

@ -141,8 +141,12 @@
ticket_id=ticket.scoped_id,
)
}}">
<select id="label_id" name="label_id" class="form-control">
<option>-- Pick one --</option>
<select
id="label_id"
name="label_id"
class="form-control {{ valid.cls("label_id") }}"
>
<option value="">-- Pick one --</option>
{% for label in tracker.labels if label not in ticket.labels %}
<option
value="{{ label.id }}"
@ -155,6 +159,7 @@
<button type="submit" class="btn btn-default">
Add label {{icon('caret-right')}}
</button>
{{ valid.summary('label_id') }}
</form>
</dd>
{% else %}