Merge branch 'master' into live

This commit is contained in:
Kevin Morris 2022-02-07 18:35:51 -08:00
commit 1162303d24
No known key found for this signature in database
GPG key ID: F7E46DED420788F3
2 changed files with 28 additions and 12 deletions

View file

@ -81,17 +81,18 @@ async def trusted_user(request: Request,
context["past_off"] = past_off context["past_off"] = past_off
last_vote = func.max(models.TUVote.VoteID).label("LastVote") last_vote = func.max(models.TUVote.VoteID).label("LastVote")
last_votes_by_tu = db.query(models.TUVote).join( last_votes_by_tu = db.query(models.TUVote).join(models.User).join(
models.User models.TUVoteInfo,
).join(models.TUVoteInfo).filter( models.TUVoteInfo.ID == models.TUVote.VoteID
).filter(
and_(models.TUVote.VoteID == models.TUVoteInfo.ID, and_(models.TUVote.VoteID == models.TUVoteInfo.ID,
models.User.ID == models.TUVote.UserID, models.User.ID == models.TUVote.UserID,
models.TUVoteInfo.End <= ts, models.TUVoteInfo.End < ts,
or_(models.User.AccountTypeID == 2, or_(models.User.AccountTypeID == 2,
models.User.AccountTypeID == 4)) models.User.AccountTypeID == 4))
).with_entities( ).with_entities(
models.TUVote.UserID, models.TUVote.UserID,
func.max(models.TUVote.VoteID).label("LastVote"), last_vote,
models.User.Username models.User.Username
).group_by(models.TUVote.UserID).order_by( ).group_by(models.TUVote.UserID).order_by(
last_vote.desc(), models.User.Username.asc()) last_vote.desc(), models.User.Username.asc())

View file

@ -10,7 +10,7 @@ import pytest
from fastapi.testclient import TestClient from fastapi.testclient import TestClient
from aurweb import config, db, filters, time from aurweb import config, db, filters, time
from aurweb.models.account_type import DEVELOPER_ID, AccountType from aurweb.models.account_type import DEVELOPER_ID, TRUSTED_USER_ID, AccountType
from aurweb.models.tu_vote import TUVote from aurweb.models.tu_vote import TUVote
from aurweb.models.tu_voteinfo import TUVoteInfo from aurweb.models.tu_voteinfo import TUVoteInfo
from aurweb.models.user import User from aurweb.models.user import User
@ -97,6 +97,16 @@ def tu_user():
yield tu_user yield tu_user
@pytest.fixture
def tu_user2():
with db.begin():
tu_user2 = db.create(User, Username="test_tu2",
Email="test_tu2@example.org",
RealName="Test TU 2", Passwd="testPassword",
AccountTypeID=TRUSTED_USER_ID)
yield tu_user2
@pytest.fixture @pytest.fixture
def user(): def user():
user_type = db.query(AccountType, user_type = db.query(AccountType,
@ -435,7 +445,8 @@ def test_tu_index_sorting(client, tu_user):
]) ])
def test_tu_index_last_votes(client, tu_user, user): def test_tu_index_last_votes(client: TestClient, tu_user: User, tu_user2: User,
user: User):
ts = time.utcnow() ts = time.utcnow()
with db.begin(): with db.begin():
@ -445,12 +456,14 @@ def test_tu_index_last_votes(client, tu_user, user):
Submitted=(ts - 1000), Submitted=(ts - 1000),
End=(ts - 5), End=(ts - 5),
Yes=1, Yes=1,
No=1,
ActiveTUs=1, ActiveTUs=1,
Quorum=0.0, Quorum=0.0,
Submitter=tu_user) Submitter=tu_user)
# Create a vote on it from tu_user. # Create a vote on it from tu_user.
db.create(TUVote, VoteInfo=voteinfo, User=tu_user) db.create(TUVote, VoteInfo=voteinfo, User=tu_user)
db.create(TUVote, VoteInfo=voteinfo, User=tu_user2)
# Now, check that tu_user got populated in the .last-votes table. # Now, check that tu_user got populated in the .last-votes table.
cookies = {"AURSID": tu_user.login(Request(), "testPassword")} cookies = {"AURSID": tu_user.login(Request(), "testPassword")}
@ -461,16 +474,18 @@ def test_tu_index_last_votes(client, tu_user, user):
root = parse_root(response.text) root = parse_root(response.text)
table = get_table(root, "last-votes") table = get_table(root, "last-votes")
rows = get_table_rows(table) rows = get_table_rows(table)
assert len(rows) == 1 assert len(rows) == 2
last_vote = rows[0] last_vote = rows[0]
user, vote_id = last_vote.xpath("./td") user, vote_id = last_vote.xpath("./td/a")
user = user.xpath("./a")[0]
vote_id = vote_id.xpath("./a")[0]
assert user.text.strip() == tu_user.Username assert user.text.strip() == tu_user.Username
assert int(vote_id.text.strip()) == voteinfo.ID assert int(vote_id.text.strip()) == voteinfo.ID
last_vote = rows[1]
user, vote_id = last_vote.xpath("./td/a")
assert int(vote_id.text.strip()) == voteinfo.ID
assert user.text.strip() == tu_user2.Username
def test_tu_proposal_not_found(client, tu_user): def test_tu_proposal_not_found(client, tu_user):
cookies = {"AURSID": tu_user.login(Request(), "testPassword")} cookies = {"AURSID": tu_user.login(Request(), "testPassword")}