Fix userpage hat counter showing equipped.

Essentially, just needed to not reuse owned_hats.
remotes/1693176582716663532/tmp_refs/heads/watchparty
Snakes 2022-11-09 10:32:14 -05:00
parent e0f43c3668
commit 4f849c2c36
Signed by: Snakes
GPG Key ID: E745A82778055C7E
2 changed files with 7 additions and 11 deletions

View File

@ -147,11 +147,10 @@ class User(Base):
referrals = relationship("User")
designed_hats = relationship("HatDef", primaryjoin="User.id==HatDef.author_id", back_populates="author")
owned_hats = relationship("Hat", back_populates="owners")
hats_equipped = relationship("Hat", lazy="raise", viewonly=True)
sub_mods = relationship("Mod", primaryjoin="User.id == Mod.user_id", lazy="raise")
sub_exiles = relationship("Exile", primaryjoin="User.id == Exile.user_id", lazy="raise")
_equipped_hats = None
def __init__(self, **kwargs):
if "password" in kwargs:
@ -220,13 +219,11 @@ class User(Base):
@property
def equipped_hats(self):
if self._equipped_hats is None:
self._equipped_hats = g.db.query(Hat).filter_by(user_id=self.id, equipped=True).all()
return self._equipped_hats
@equipped_hats.setter
def equipped_hats(self, hats):
self._equipped_hats = hats
try:
return self.hats_equipped
except:
print("except")
return g.db.query(Hat).filter_by(user_id=self.id, equipped=True).all()
@property
@lazy

View File

@ -177,7 +177,7 @@ def get_posts(pids:Iterable[int], v:Optional[User]=None, eager:bool=False) -> Li
if eager:
query = query.options(
selectinload(Submission.author).options(
selectinload(User.owned_hats.and_(Hat.equipped == True)) \
selectinload(User.hats_equipped.and_(Hat.equipped == True)) \
.joinedload(Hat.hat_def, innerjoin=True),
selectinload(User.sub_mods),
selectinload(User.sub_exiles),
@ -195,7 +195,6 @@ def get_posts(pids:Iterable[int], v:Optional[User]=None, eager:bool=False) -> Li
output[i].voted = results[i][1] or 0
output[i].is_blocking = results[i][2] or 0
output[i].is_blocked = results[i][3] or 0
output[i].author.equipped_hats = output[i].author.owned_hats
else:
output = results