From ec38d2f5a0545cf07e59cce3fa2d012f23451c5b Mon Sep 17 00:00:00 2001 From: Kevin Morris Date: Sun, 18 Jul 2021 01:55:39 -0700 Subject: [PATCH] PackageBase: automatically cast Popularity to float Signed-off-by: Kevin Morris --- aurweb/models/package_base.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/aurweb/models/package_base.py b/aurweb/models/package_base.py index 261c30f3..9177c422 100644 --- a/aurweb/models/package_base.py +++ b/aurweb/models/package_base.py @@ -35,6 +35,9 @@ class PackageBase(Base): "User", backref=backref("package_bases", lazy="dynamic"), foreign_keys=[PackagerUID]) + # A set used to check for floatable values. + TO_FLOAT = {"Popularity"} + def __init__(self, Name: str = None, Flagger: aurweb.models.user.User = None, Maintainer: aurweb.models.user.User = None, @@ -62,3 +65,9 @@ class PackageBase(Base): datetime.utcnow().timestamp()) self.ModifiedTS = kwargs.get("ModifiedTS", datetime.utcnow().timestamp()) + + def __getattribute__(self, key: str): + attr = super().__getattribute__(key) + if key in PackageBase.TO_FLOAT and not isinstance(attr, float): + return float(attr) + return attr