Implement linking tickets to labels

This commit is contained in:
Ivan Habunek 2018-10-15 13:18:52 +02:00 committed by Drew DeVault
parent fb70ccd774
commit 5730d360aa
3 changed files with 65 additions and 1 deletions

View File

@ -8,6 +8,7 @@ from todosrht.types import Tracker, User, Ticket, TicketStatus, TicketAccess
from todosrht.types import TicketComment, TicketResolution, TicketSeen
from todosrht.types import TicketSubscription
from todosrht.types import Event, EventType, EventNotification
from todosrht.types import Label, TicketLabel
from todosrht.email import notify
from srht.config import cfg
from srht.database import db
@ -306,3 +307,38 @@ def ticket_edit_POST(owner, name, ticket_id):
owner=tracker.owner.canonical_name(),
name=name,
ticket_id=ticket.scoped_id))
@ticket.route("/<owner>/<name>/<int:ticket_id>/add_label", methods=["POST"])
@loginrequired
def ticket_add_label(owner, name, ticket_id):
tracker, _ = get_tracker(owner, name)
if not tracker:
abort(404)
ticket, access = get_ticket(tracker, ticket_id)
if not ticket:
abort(404)
if not TicketAccess.edit in access:
abort(401)
label_id = int(request.form.get('label_id'))
label = Label.query.filter(Label.id==label_id).first()
if not label:
abort(404)
ticket_label = (TicketLabel.query
.filter(TicketLabel.label_id == label.id)
.filter(TicketLabel.ticket_id == ticket_id)).first()
if not ticket_label:
ticket_label = TicketLabel()
ticket_label.ticket_id = ticket_id
ticket_label.label_id = label.id
ticket_label.user_id = current_user.id
db.session.add(ticket_label)
db.session.commit()
return redirect(url_for("ticket.ticket_GET",
owner=tracker.owner.canonical_name(),
name=name,
ticket_id=ticket_id))

View File

@ -133,6 +133,34 @@
</div>
{% endfor %}
</dd>
{% if TicketAccess.edit in access %}
<dt class="col-md-3">Add label</dt>
<dd class="col-md-9">
<form
method="POST"
action="{{
url_for(".ticket_add_label",
owner=tracker.owner.canonical_name(),
name=tracker.name,
ticket_id=ticket.scoped_id,
)
}}">
<select id="label_id" name="label_id">
<option>-- Pick one --</option>
{% for label in tracker.labels %}
<option value="{{ label.id }}">
{{ label.name }}
</option>
{% endfor %}
</select>
<button type="submit" class="btn btn-primary">Add</button>
</form>
</dd>
{% else %}
No labels
{% endif %}
</dl>
</div>
<div class="col-md-6">

View File

@ -7,4 +7,4 @@ from .ticket import Ticket
from .ticketsubscription import TicketSubscription
from .ticketcomment import TicketComment
from .event import Event, EventType, EventNotification
from .label import Label
from .label import Label, TicketLabel