From 58b0c91db5f91effb0f144ec5dddb75ae5bcc04d Mon Sep 17 00:00:00 2001 From: Son NK <> Date: Tue, 23 Mar 2021 10:50:32 +0100 Subject: [PATCH] use Metric2 system --- cron.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/cron.py b/cron.py index c2b93b20..8059f791 100644 --- a/cron.py +++ b/cron.py @@ -321,6 +321,49 @@ def compute_metrics(): ) +def compute_metric2(now) -> Metric2: + nb_referred_user_paid = 0 + for user in User.query.filter(User.referral_id.isnot(None)): + if user.is_paid(): + nb_referred_user_paid += 1 + + return Metric2.create( + date=now, + # user stats + nb_user=User.query.count(), + nb_activated_user=User.query.filter_by(activated=True).count(), + # subscription stats + nb_premium=Subscription.query.filter(Subscription.cancelled.is_(False)).count(), + nb_cancelled_premium=Subscription.query.filter( + Subscription.cancelled.is_(True) + ).count(), + # todo: filter by expires_date > now + nb_apple_premium=AppleSubscription.query.count(), + nb_manual_premium=ManualSubscription.query.filter( + ManualSubscription.end_at > now, + ManualSubscription.is_giveaway.is_(False), + ).count(), + nb_coinbase_premium=CoinbaseSubscription.query.filter( + CoinbaseSubscription.end_at > now + ).count(), + # referral stats + nb_referred_user=User.query.filter(User.referral_id.isnot(None)).count(), + nb_referred_user_paid=nb_referred_user_paid, + nb_alias=Alias.query.count(), + # email log stats + nb_bounced=EmailLog.query.filter_by(bounced=True).count(), + nb_spam=EmailLog.query.filter_by(is_spam=True).count(), + nb_reply=EmailLog.query.filter_by(is_reply=True).count(), + nb_forward=EmailLog.query.filter_by( + bounced=False, is_spam=False, is_reply=False, blocked=False + ).count(), + nb_block=EmailLog.query.filter_by(blocked=True).count(), + nb_verified_custom_domain=CustomDomain.query.filter_by(verified=True).count(), + nb_app=Client.query.count(), + commit=True, + ) + + def increase_percent(old, new) -> str: if old == 0: return "N/A" @@ -377,10 +420,11 @@ def stats(): # nothing to do return + # todo: remove metrics1 compute_metrics() - stats_today = stats_before(arrow.now()) - stats_yesterday = stats_before(arrow.now().shift(days=-1)) + stats_today = compute_metric2(arrow.now()) + stats_yesterday = compute_metric2(arrow.now().shift(days=-1)) nb_user_increase = increase_percent(stats_yesterday.nb_user, stats_today.nb_user) nb_alias_increase = increase_percent(stats_yesterday.nb_alias, stats_today.nb_alias) @@ -407,10 +451,10 @@ nb_block: {stats_today.nb_block} - {increase_percent(stats_yesterday.nb_block, s nb_bounced: {stats_today.nb_bounced} - {increase_percent(stats_yesterday.nb_bounced, stats_today.nb_bounced)}
nb_spam: {stats_today.nb_spam} - {increase_percent(stats_yesterday.nb_spam, stats_today.nb_spam)}
-nb_custom_domain: {stats_today.nb_custom_domain} - {increase_percent(stats_yesterday.nb_custom_domain, stats_today.nb_custom_domain)}
+nb_custom_domain: {stats_today.nb_verified_custom_domain} - {increase_percent(stats_yesterday.nb_verified_custom_domain, stats_today.nb_verified_custom_domain)}
nb_app: {stats_today.nb_app} - {increase_percent(stats_yesterday.nb_app, stats_today.nb_app)}
nb_referred_user: {stats_today.nb_referred_user} - {increase_percent(stats_yesterday.nb_referred_user, stats_today.nb_referred_user)}
-nb_referred_user_upgrade: {stats_today.nb_referred_user_upgrade} - {increase_percent(stats_yesterday.nb_referred_user_upgrade, stats_today.nb_referred_user_upgrade)}
+nb_referred_user_upgrade: {stats_today.nb_referred_user_paid} - {increase_percent(stats_yesterday.nb_referred_user_paid, stats_today.nb_referred_user_paid)}
""" html += f"""
@@ -420,6 +464,8 @@ nb_referred_user_upgrade: {stats_today.nb_referred_user_upgrade} - {increase_per for email, bounces in bounce_report(): html += f"{email}: {bounces}
" + LOG.d("report email: %s", html) + send_email( ADMIN_EMAIL, subject=f"SimpleLogin Stats for {today}, {nb_user_increase} users, {nb_alias_increase} aliases, {nb_forward_increase} forwards",