From 0f4e803639952e7f149d2098e54a8bae4ebe342c Mon Sep 17 00:00:00 2001 From: Son NK Date: Mon, 3 Feb 2020 13:11:38 +0700 Subject: [PATCH] WIP send user onboarding email 1day after the account creation --- app/models.py | 16 +++++++++++++++- cron.py | 2 ++ job_runner.py | 4 +--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/models.py b/app/models.py index 6577d962..bc36729e 100644 --- a/app/models.py +++ b/app/models.py @@ -10,7 +10,13 @@ from sqlalchemy import text, desc from sqlalchemy_utils import ArrowType from app import s3 -from app.config import EMAIL_DOMAIN, MAX_NB_EMAIL_FREE_PLAN, URL, AVATAR_URL_EXPIRATION +from app.config import ( + EMAIL_DOMAIN, + MAX_NB_EMAIL_FREE_PLAN, + URL, + AVATAR_URL_EXPIRATION, + JOB_ONBOARDING_1, +) from app.email_utils import get_email_name from app.extensions import db from app.log import LOG @@ -144,6 +150,14 @@ class User(db.Model, ModelMixin, UserMixin): GenEmail.create_new(user.id, prefix="my-first-alias") db.session.flush() + # Schedule onboarding emails + Job.create( + name=JOB_ONBOARDING_1, + payload={"user_id": user.id}, + run_at=arrow.now().shift(days=1), + ) + db.session.flush() + return user def lifetime_or_active_subscription(self) -> bool: diff --git a/cron.py b/cron.py index 49e1880c..8562426f 100644 --- a/cron.py +++ b/cron.py @@ -122,6 +122,8 @@ if __name__ == "__main__": with app.app_context(): if args.job == "stats": + LOG.d("Compute stats") stats() elif args.job == "notify_trial_end": + LOG.d("Notify users with trial ending soon") notify_trial_end() diff --git a/job_runner.py b/job_runner.py index f9839070..3bf1d8a3 100644 --- a/job_runner.py +++ b/job_runner.py @@ -6,9 +6,7 @@ import time import arrow -from app.config import ( - JOB_ONBOARDING_1, -) +from app.config import JOB_ONBOARDING_1 from app.email_utils import ( send_email, render,