From 52376484a583753c87fb71489d86a5f0421282b6 Mon Sep 17 00:00:00 2001 From: Son Nguyen Kim Date: Wed, 28 Jul 2021 18:31:59 +0200 Subject: [PATCH] Add nb_block_last_24h, nb_bounced_last_24h, nb_forward_last_24h, nb_reply_last_24h --- app/models.py | 7 ++++ cron.py | 31 +++++++++------- .../versions/2021_072818_dfee471558bd_.py | 35 +++++++++++++++++++ 3 files changed, 61 insertions(+), 12 deletions(-) create mode 100644 migrations/versions/2021_072818_dfee471558bd_.py diff --git a/app/models.py b/app/models.py index 7bf95e08..e93aefd3 100644 --- a/app/models.py +++ b/app/models.py @@ -2269,12 +2269,19 @@ class Metric2(db.Model, ModelMixin): nb_alias = db.Column(db.Float, nullable=True) + # Obsolete as only for the last 14 days nb_forward = db.Column(db.Float, nullable=True) nb_block = db.Column(db.Float, nullable=True) nb_reply = db.Column(db.Float, nullable=True) nb_bounced = db.Column(db.Float, nullable=True) nb_spam = db.Column(db.Float, nullable=True) + # should be used instead + nb_forward_last_24h = db.Column(db.Float, nullable=True) + nb_block_last_24h = db.Column(db.Float, nullable=True) + nb_reply_last_24h = db.Column(db.Float, nullable=True) + nb_bounced_last_24h = db.Column(db.Float, nullable=True) + nb_verified_custom_domain = db.Column(db.Float, nullable=True) nb_app = db.Column(db.Float, nullable=True) diff --git a/cron.py b/cron.py index 3e9d63c5..5e83ba6f 100644 --- a/cron.py +++ b/cron.py @@ -215,6 +215,8 @@ def poll_apple_subscription(): def compute_metric2() -> Metric2: now = arrow.now() + _24h_ago = now.shift(days=-1) + nb_referred_user_paid = 0 for user in User.query.filter(User.referral_id.isnot(None)): if user.is_paid(): @@ -244,13 +246,19 @@ def compute_metric2() -> Metric2: 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_forward_last_24h=EmailLog.query.filter(EmailLog.created_at > _24h_ago) + .filter_by(bounced=False, is_spam=False, is_reply=False, blocked=False) + .count(), + nb_bounced_last_24h=EmailLog.query.filter(EmailLog.created_at > _24h_ago) + .filter_by(bounced=True) + .count(), + nb_reply_last_24h=EmailLog.query.filter(EmailLog.created_at > _24h_ago) + .filter_by(is_reply=True) + .count(), + nb_block_last_24h=EmailLog.query.filter(EmailLog.created_at > _24h_ago) + .filter_by(blocked=True) + .count(), + # other stats nb_verified_custom_domain=CustomDomain.query.filter_by(verified=True).count(), nb_app=Client.query.count(), commit=True, @@ -388,11 +396,10 @@ nb_manual_premium: {stats_today.nb_manual_premium} - {increase_percent(stats_yes nb_coinbase_premium: {stats_today.nb_coinbase_premium} - {increase_percent(stats_yesterday.nb_coinbase_premium, stats_today.nb_coinbase_premium)}
nb_alias: {stats_today.nb_alias} - {increase_percent(stats_yesterday.nb_alias, stats_today.nb_alias)}
-nb_forward: {stats_today.nb_forward} - {increase_percent(stats_yesterday.nb_forward, stats_today.nb_forward)}
-nb_reply: {stats_today.nb_reply} - {increase_percent(stats_yesterday.nb_reply, stats_today.nb_reply)}
-nb_block: {stats_today.nb_block} - {increase_percent(stats_yesterday.nb_block, stats_today.nb_block)}
-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_forward_last_24h: {stats_today.nb_forward_last_24h} - {increase_percent(stats_yesterday.nb_forward_last_24h, stats_today.nb_forward_last_24h)}
+nb_reply_last_24h: {stats_today.nb_reply_last_24h} - {increase_percent(stats_yesterday.nb_reply_last_24h, stats_today.nb_reply_last_24h)}
+nb_block_last_24h: {stats_today.nb_block_last_24h} - {increase_percent(stats_yesterday.nb_block_last_24h, stats_today.nb_block_last_24h)}
+nb_bounced_last_24h: {stats_today.nb_bounced_last_24h} - {increase_percent(stats_yesterday.nb_bounced_last_24h, stats_today.nb_bounced_last_24h)}
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)}
diff --git a/migrations/versions/2021_072818_dfee471558bd_.py b/migrations/versions/2021_072818_dfee471558bd_.py new file mode 100644 index 00000000..17b1659d --- /dev/null +++ b/migrations/versions/2021_072818_dfee471558bd_.py @@ -0,0 +1,35 @@ +"""empty message + +Revision ID: dfee471558bd +Revises: 20c738810b1b +Create Date: 2021-07-28 18:29:46.072981 + +""" +import sqlalchemy_utils +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'dfee471558bd' +down_revision = '20c738810b1b' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('metric2', sa.Column('nb_block_last_24h', sa.Float(), nullable=True)) + op.add_column('metric2', sa.Column('nb_bounced_last_24h', sa.Float(), nullable=True)) + op.add_column('metric2', sa.Column('nb_forward_last_24h', sa.Float(), nullable=True)) + op.add_column('metric2', sa.Column('nb_reply_last_24h', sa.Float(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('metric2', 'nb_reply_last_24h') + op.drop_column('metric2', 'nb_forward_last_24h') + op.drop_column('metric2', 'nb_bounced_last_24h') + op.drop_column('metric2', 'nb_block_last_24h') + # ### end Alembic commands ###