diff --git a/app/admin_model.py b/app/admin_model.py index 0dac58c1..5da29adf 100644 --- a/app/admin_model.py +++ b/app/admin_model.py @@ -50,6 +50,7 @@ class UserAdmin(SLModelView): def scaffold_list_columns(self): ret = super().scaffold_list_columns() ret.insert(0, "upgrade_channel") + ret.insert(0, "premium_end") return ret @action( diff --git a/app/models.py b/app/models.py index 1b4b63ae..753d4268 100644 --- a/app/models.py +++ b/app/models.py @@ -478,6 +478,31 @@ class User(db.Model, ModelMixin, UserMixin): return "N/A" + @property + def premium_end(self) -> str: + if self.lifetime: + return "Forever" + + sub: Subscription = self.get_subscription() + if sub: + return str(sub.next_bill_date) + + apple_sub: AppleSubscription = AppleSubscription.get_by(user_id=self.id) + if apple_sub and apple_sub.is_valid(): + return apple_sub.expires_date.humanize() + + manual_sub: ManualSubscription = ManualSubscription.get_by(user_id=self.id) + if manual_sub and manual_sub.is_active(): + return manual_sub.end_at.humanize() + + coinbase_subscription: CoinbaseSubscription = CoinbaseSubscription.get_by( + user_id=self.id + ) + if coinbase_subscription and coinbase_subscription.is_active(): + return coinbase_subscription.end_at.humanize() + + return "N/A" + def can_create_new_alias(self) -> bool: if self.is_premium(): return True diff --git a/server.py b/server.py index d06a365f..b929f380 100644 --- a/server.py +++ b/server.py @@ -388,7 +388,10 @@ def fake_data(): db.session.commit() ManualSubscription.create( - user_id=user2.id, end_at=arrow.now().shift(years=1, days=1), commit=True + user_id=user2.id, + end_at=arrow.now().shift(years=1, days=1), + comment="Local manual", + commit=True, )