fix: tu last votes listing vote id

Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
Kevin Morris 2022-02-04 18:02:13 -08:00
parent 2c08672f15
commit ab1479925b
No known key found for this signature in database
GPG key ID: F7E46DED420788F3
2 changed files with 15 additions and 12 deletions

View file

@ -5,7 +5,7 @@ from http import HTTPStatus
from fastapi import APIRouter, Form, HTTPException, Request
from fastapi.responses import RedirectResponse, Response
from sqlalchemy import and_, or_
from sqlalchemy import and_, func, or_
from aurweb import db, l10n, logging, models, time
from aurweb.auth import creds, requires_auth
@ -80,18 +80,21 @@ async def trusted_user(request: Request,
if past_by == "asc" else past_votes.all()
context["past_off"] = past_off
# TODO
# We order last votes by TUVote.VoteID and User.Username.
# This is really bad. We should add a Created column to
# TUVote of type Timestamp and order by that instead.
last_votes_by_tu = db.query(models.TUVote).filter(
last_vote = func.max(models.TUVote.VoteID).label("LastVote")
last_votes_by_tu = db.query(models.TUVote).join(
models.User
).join(models.TUVoteInfo).filter(
and_(models.TUVote.VoteID == models.TUVoteInfo.ID,
models.User.ID == models.TUVote.UserID,
models.TUVoteInfo.End <= ts,
models.TUVote.UserID == models.User.ID,
or_(models.User.AccountTypeID == 2,
models.User.AccountTypeID == 4))
).group_by(models.User.ID).order_by(
models.TUVote.VoteID.desc(), models.User.Username.asc())
).with_entities(
models.TUVote.UserID,
func.max(models.TUVote.VoteID).label("LastVote"),
models.User.Username
).group_by(models.TUVote.UserID).order_by(
last_vote.desc(), models.User.Username.asc())
context["last_votes_by_tu"] = last_votes_by_tu.all()
context["current_by_next"] = "asc" if current_by == "desc" else "desc"

View file

@ -18,10 +18,10 @@
{% else %}
{% for vote in votes %}
<tr>
<td>{{ vote.User.Username }}</td>
<td>{{ vote.Username }}</td>
<td>
<a href="/tu/{{ vote.VoteID }}">
{{ vote.VoteID }}
<a href="/tu/{{ vote.LastVote }}">
{{ vote.LastVote }}
</a>
</td>
</tr>