Extract mark_seen logic

This commit is contained in:
Ivan Habunek 2018-11-27 10:01:37 +01:00 committed by Drew DeVault
parent 8ac07f4114
commit 2376114ee8
2 changed files with 15 additions and 10 deletions

View File

@ -5,10 +5,10 @@ from srht.database import db
from srht.flask import loginrequired
from srht.validation import Validation
from todosrht.access import get_tracker, get_ticket
from todosrht.tickets import add_comment
from todosrht.tickets import add_comment, mark_seen
from todosrht.types import Event, EventType
from todosrht.types import Label, TicketLabel
from todosrht.types import TicketAccess, TicketResolution, TicketSeen
from todosrht.types import TicketAccess, TicketResolution
from todosrht.types import TicketSubscription
from todosrht.urls import ticket_url
@ -25,14 +25,7 @@ def ticket_GET(owner, name, ticket_id):
is_subscribed = False
tracker_sub = None
if current_user:
seen = (TicketSeen.query
.filter(TicketSeen.user_id == current_user.id,
TicketSeen.ticket_id == ticket.id)
.one_or_none())
if not seen:
seen = TicketSeen(user_id=current_user.id, ticket_id=ticket.id)
seen.update()
db.session.add(seen)
mark_seen(ticket, current_user)
db.session.commit()
tracker_sub = (TicketSubscription.query

View File

@ -5,6 +5,7 @@ from srht.database import db
from todosrht.email import notify
from todosrht.types import Event, EventType, EventNotification
from todosrht.types import TicketComment, TicketStatus, TicketSubscription
from todosrht.types import TicketSeen
from todosrht.urls import ticket_url
smtp_user = cfg("mail", "smtp-user", default=None)
@ -135,3 +136,14 @@ def add_comment(user, ticket,
db.session.commit()
return comment
def mark_seen(ticket, user):
"""Mark the ticket as seen by user."""
seen = TicketSeen.query.filter_by(user=user, ticket=ticket).one_or_none()
if seen:
seen.update() # Updates last_view time
else:
seen = TicketSeen(user_id=user.id, ticket_id=ticket.id)
db.session.add(seen)
return seen