From 9d5c2e3f80aff41a4481f253547c304be0f0290b Mon Sep 17 00:00:00 2001 From: Son NK <> Date: Fri, 26 Mar 2021 12:14:48 +0100 Subject: [PATCH] display when subscription ends in admin --- app/admin_model.py | 1 + app/models.py | 25 +++++++++++++++++++++++++ server.py | 5 ++++- 3 files changed, 30 insertions(+), 1 deletion(-) 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, )