diff --git a/aurweb/models/tu_voteinfo.py b/aurweb/models/tu_voteinfo.py index 35675ccc..64551998 100644 --- a/aurweb/models/tu_voteinfo.py +++ b/aurweb/models/tu_voteinfo.py @@ -20,6 +20,11 @@ class TUVoteInfo(Base): foreign_keys=[__table__.c.SubmitterID]) def __init__(self, **kwargs): + # Default Quorum, Yes, No and Abstain columns to 0. + for col in ("Quorum", "Yes", "No", "Abstain"): + if col not in kwargs: + kwargs.update({col: 0}) + super().__init__(**kwargs) if self.Agenda is None: @@ -46,12 +51,6 @@ class TUVoteInfo(Base): orig="TU_VoteInfo.End", params=("NULL")) - if self.Quorum is None: - raise IntegrityError( - statement="Column Quorum cannot be null.", - orig="TU_VoteInfo.Quorum", - params=("NULL")) - if not self.Submitter: raise IntegrityError( statement="Foreign key SubmitterID cannot be null.", @@ -67,9 +66,7 @@ class TUVoteInfo(Base): def __getattribute__(self, key: str): """ Customize getattr to floatify any fetched Quorum values. """ attr = super().__getattribute__(key) - if attr is None: - return attr - elif key == "Quorum": + if key == "Quorum": return float(attr) return attr diff --git a/test/test_tu_voteinfo.py b/test/test_tu_voteinfo.py index 26fa9522..beefda36 100644 --- a/test/test_tu_voteinfo.py +++ b/test/test_tu_voteinfo.py @@ -140,12 +140,11 @@ def test_tu_voteinfo_null_end_raises(user: User): rollback() -def test_tu_voteinfo_null_quorum_raises(user: User): - with pytest.raises(IntegrityError): - with db.begin(): - create(TUVoteInfo, - Agenda="Blah blah.", - User=user.Username, - Submitted=0, End=0, - Submitter=user) - rollback() +def test_tu_voteinfo_null_quorum_default(user: User): + with db.begin(): + vi = create(TUVoteInfo, + Agenda="Blah blah.", + User=user.Username, + Submitted=0, End=0, + Submitter=user) + assert vi.Quorum == 0