Implement linking tickets to labels
This commit is contained in:
parent
fb70ccd774
commit
5730d360aa
|
@ -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))
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue