Polish ticket assignees

This commit is contained in:
Drew DeVault 2018-11-30 08:25:32 -05:00
parent d18096b10b
commit da915d2bf6
3 changed files with 49 additions and 40 deletions

View File

@ -181,3 +181,10 @@ select.form-control {
margin-left: 0.2rem;
}
}
.assign {
&[open] {
background: #f5f5f5;
padding: 0.5rem;
}
}

View File

@ -285,24 +285,32 @@ def _assignment_get_ticket(owner, name, ticket_id):
return ticket
def _assignment_get_user():
username = request.form.get('username')
def _assignment_get_user(valid):
username = valid.optional('username')
if not username:
abort(400)
if 'myself' in valid:
username = current_user.username
else:
valid.error("Username is required", field="username")
if not valid.ok:
return None
if username.startswith("~"):
username = username[1:]
user = User.query.filter_by(username=username).one_or_none()
if not user:
abort(404)
valid.expect(user, "User not found.", field="username")
return user
@ticket.route("/<owner>/<name>/<int:ticket_id>/assign", methods=["POST"])
@loginrequired
def ticket_assign(owner, name, ticket_id):
valid = Validation(request)
ticket = _assignment_get_ticket(owner, name, ticket_id)
user = _assignment_get_user()
user = _assignment_get_user(valid)
if not valid.ok:
_, access = get_ticket(ticket.tracker, ticket_id)
ctx = get_ticket_context(ticket, ticket.tracker, access)
return render_template("ticket.html", **valid.kwargs, **ctx)
assign(ticket, user, current_user)
db.session.commit()
@ -312,8 +320,12 @@ def ticket_assign(owner, name, ticket_id):
@ticket.route("/<owner>/<name>/<int:ticket_id>/unassign", methods=["POST"])
@loginrequired
def ticket_unassign(owner, name, ticket_id):
valid = Validation(request)
ticket = _assignment_get_ticket(owner, name, ticket_id)
user = _assignment_get_user()
user = _assignment_get_user(valid)
if not valid.ok:
ctx = get_ticket_context(ticket, ticket.tracker, access)
return render_template("ticket.html", valid, **ctx)
unassign(ticket, user)
db.session.commit()

View File

@ -123,19 +123,18 @@
type="hidden"
name="username"
value="~{{ assignee.username }}" />
<button type="submit" class="btn btn-default">
Unassign
{{ icon('caret-right') }}
</button>
<button
type="submit"
class="btn btn-link btn-block"
style="text-align: right"
>(unassign)</button>
</form>
{% endif %}
</div>
</div>
{% else %}
No-one.
{% endfor %}
<details>
<details class="assign" {{"open" if not valid.ok else ""}}>
<summary>
Assign someone
</summary>
@ -145,33 +144,24 @@
style="margin-bottom: 0"
>
{{ csrf_token() }}
<div class="row">
<div class="col-md-6">
<input
type="text"
name="username"
required="required"
style="width: 100%; max-width: 12rem;" />
</div>
<div class="col-md-6">
<button class="btn btn-default" style="margin: .2rem 0">
Assign {{ icon('caret-right') }}
</button>
</div>
<div class="form-group">
<input
type="text"
name="username"
class="form-control {{valid.cls("username")}}"
value="{{username}}" />
{{valid.summary("username")}}
</div>
</form>
<form method="POST" action="{{ ticket|ticket_assign_url }}">
{{ csrf_token() }}
<input type="hidden" name="username" value="{{ current_user }}" />
<div class="row">
<div class="col-md-6">
</div>
<div class="col-md-6">
<button class="btn btn-default">
Assign myself {{ icon('caret-right') }}
</button>
</div>
<div class="pull-right">
<button
name="myself"
class="btn btn-default"
>Assign myself {{ icon('caret-right') }}</button>
<button class="btn btn-primary">
Assign {{ icon('caret-right') }}
</button>
</div>
<div class="clearfix"></div>
</form>
</details>
</dd>