diff --git a/common/tables.py b/common/tables.py index 7ec7539..e2d55bc 100644 --- a/common/tables.py +++ b/common/tables.py @@ -29,13 +29,8 @@ class User(SQLModel, table=True): given_name: str = NoFinalHebrewString() family_name: str = NoFinalHebrewString() first_login: datetime.datetime = Field(default_factory=datetime.datetime.utcnow) - subscription_expiry: datetime.datetime | None = None - - def has_active_subscription(self) -> bool: - if self.subscription_expiry is None: - return False - else: - return self.subscription_expiry > datetime.datetime.utcnow() + # subscription_expiry: datetime.datetime | None = None + subscriptions: "UserSubscription" = Relationship() class UserHistory(SQLModel, table=True): diff --git a/logic/user_logic.py b/logic/user_logic.py index 5415be3..06333ad 100644 --- a/logic/user_logic.py +++ b/logic/user_logic.py @@ -287,9 +287,15 @@ def clues_used(self) -> int: return session.exec(query).one_or_none() or 0 async def get_clue(self) -> str | None: + user_logic = UserLogic(self.session) + expiry = user_logic.get_subscription_expiry(self.user) + if expiry is None or expiry < datetime.datetime.utcnow(): + has_active_subscription = False + else: + has_active_subscription = True if self.clues_used < len(self.clues): if ( - not self.user.has_active_subscription() + not has_active_subscription and await self._used_max_clues_for_inactive() ): raise ValueError() # TODO: custom exception