diff --git a/aurweb/models/tu_voteinfo.py b/aurweb/models/tu_voteinfo.py index 2225b4d7..a246f132 100644 --- a/aurweb/models/tu_voteinfo.py +++ b/aurweb/models/tu_voteinfo.py @@ -1,3 +1,5 @@ +import typing + from sqlalchemy import Column, ForeignKey, Integer from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import backref, relationship @@ -64,7 +66,7 @@ class TUVoteInfo(Base): statement="Column Quorum cannot be null.", orig="TU_VoteInfo.Quorum", params=("NULL")) - self.Quorum = str(Quorum) + self.Quorum = Quorum self.Submitter = Submitter if not self.Submitter: @@ -72,3 +74,14 @@ class TUVoteInfo(Base): statement="Foreign key SubmitterID cannot be null.", orig="TU_VoteInfo.SubmitterID", params=("NULL")) + + def __setattr__(self, key: str, value: typing.Any): + """ Customize setattr to stringify any Quorum keys given. """ + if key == "Quorum": + value = str(value) + return super().__setattr__(key, value) + + def __getattribute__(self, key: str): + """ Customize getattr to floatify any fetched Quorum values. """ + attr = super().__getattribute__(key) + return float(attr) if key == "Quorum" else attr diff --git a/test/test_tu_voteinfo.py b/test/test_tu_voteinfo.py index e95f174b..37609efd 100644 --- a/test/test_tu_voteinfo.py +++ b/test/test_tu_voteinfo.py @@ -39,7 +39,7 @@ def test_tu_voteinfo_creation(): assert tu_voteinfo.User == user.Username assert tu_voteinfo.Submitted == ts assert tu_voteinfo.End == ts + 5 - assert float(tu_voteinfo.Quorum) == 0.5 + assert tu_voteinfo.Quorum == 0.5 assert tu_voteinfo.Submitter == user assert tu_voteinfo.Yes == 0 assert tu_voteinfo.No == 0