Extract getting recent users

This commit is contained in:
Ivan Habunek 2019-08-11 14:12:02 +02:00 committed by Drew DeVault
parent 51aa558ba4
commit e7aab9cbad
2 changed files with 19 additions and 12 deletions

View File

@ -8,13 +8,14 @@ from todosrht.access import get_tracker, get_ticket
from todosrht.filters import invalidate_markup_cache
from todosrht.search import find_usernames
from todosrht.tickets import add_comment, mark_seen, assign, unassign
from todosrht.types import Event, EventType
from todosrht.types import Label, Ticket, TicketLabel
from todosrht.trackers import get_recent_users
from todosrht.types import Event, EventType, Label, TicketLabel
from todosrht.types import TicketAccess, TicketResolution
from todosrht.types import TicketSubscription, User
from todosrht.urls import ticket_url
from todosrht.webhooks import TrackerWebhook, TicketWebhook
ticket = Blueprint("ticket", __name__)
def get_ticket_context(ticket, tracker, access):
@ -28,15 +29,6 @@ def get_ticket_context(ticket, tracker, access):
ticket_sub = TicketSubscription.query.filter_by(
ticket=ticket, tracker=None, user=current_user).one_or_none()
# Find users who recently interacted with this tracker
recent_user_events = (db.session.query(Event.id, User.username)
.join(User, User.id == Event.user_id)
.join(Ticket, Ticket.id == Event.ticket_id)
.filter(Ticket.tracker_id == tracker.id)
.order_by(Event.created.desc())
.limit(20))
recent_users = {e[1] for e in recent_user_events}
return {
"tracker": tracker,
"ticket": ticket,
@ -46,7 +38,7 @@ def get_ticket_context(ticket, tracker, access):
"access": access,
"tracker_sub": tracker_sub,
"ticket_sub": ticket_sub,
"recent_users": recent_users,
"recent_users": get_recent_users(tracker),
}
@ticket.route("/<owner>/<name>/<int:ticket_id>")

15
todosrht/trackers.py Normal file
View File

@ -0,0 +1,15 @@
from srht.database import db
from todosrht.types import Event, Ticket, User
def get_recent_users(tracker, limit=20):
"""Find users who recently interacted with a tracker."""
recent_user_events = (db.session.query(Event.id, User.username)
.join(User, User.id == Event.user_id)
.join(Ticket, Ticket.id == Event.ticket_id)
.filter(Ticket.tracker_id == tracker.id)
.order_by(Event.created.desc())
.limit(20))
return {e[1] for e in recent_user_events}