mirror of
https://github.com/simple-login/app.git
synced 2025-02-25 00:03:03 +08:00
compute metrics
This commit is contained in:
parent
980942a1f9
commit
2a33f112b9
1 changed files with 108 additions and 0 deletions
108
cron.py
108
cron.py
|
@ -44,6 +44,7 @@ from app.models import (
|
||||||
Monitoring,
|
Monitoring,
|
||||||
Contact,
|
Contact,
|
||||||
CoinbaseSubscription,
|
CoinbaseSubscription,
|
||||||
|
Metric,
|
||||||
)
|
)
|
||||||
from server import create_app
|
from server import create_app
|
||||||
|
|
||||||
|
@ -305,6 +306,111 @@ def stats_before(moment: Arrow) -> Stats:
|
||||||
return Stats(**data)
|
return Stats(**data)
|
||||||
|
|
||||||
|
|
||||||
|
def compute_metrics():
|
||||||
|
now = arrow.now()
|
||||||
|
|
||||||
|
Metric.create(name=Metric.NB_USER, value=User.query.count(), commit=True)
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_ACTIVATED_USER,
|
||||||
|
value=User.query.filter_by(activated=True).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_REFERRED_USER,
|
||||||
|
value=User.query.filter(User.referral_id.isnot(None)).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_REFERRED_USER_PAID,
|
||||||
|
value=nb_referred_user_paid,
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
Metric.create(name=Metric.NB_ALIAS, value=Alias.query.count(), commit=True)
|
||||||
|
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_BOUNCED,
|
||||||
|
value=EmailLog.query.filter_by(bounced=True).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_SPAM,
|
||||||
|
value=EmailLog.query.filter_by(is_spam=True).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_REPLY,
|
||||||
|
value=EmailLog.query.filter_by(is_reply=True).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_BLOCK,
|
||||||
|
value=EmailLog.query.filter_by(blocked=True).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_FORWARD,
|
||||||
|
value=EmailLog.query.filter_by(
|
||||||
|
bounced=False, is_spam=False, is_reply=False, blocked=False
|
||||||
|
).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_PREMIUM,
|
||||||
|
value=Subscription.query.filter(Subscription.cancelled.is_(False)).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_CANCELLED_PREMIUM,
|
||||||
|
value=Subscription.query.filter(Subscription.cancelled.is_(True)).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_APPLE_PREMIUM,
|
||||||
|
value=AppleSubscription.query.count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_MANUAL_PREMIUM,
|
||||||
|
value=ManualSubscription.query.filter(
|
||||||
|
ManualSubscription.end_at > now,
|
||||||
|
ManualSubscription.is_giveaway.is_(False),
|
||||||
|
).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_COINBASE_PREMIUM,
|
||||||
|
value=CoinbaseSubscription.query.filter(
|
||||||
|
CoinbaseSubscription.end_at > now
|
||||||
|
).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_VERIFIED_CUSTOM_DOMAIN,
|
||||||
|
value=CustomDomain.query.filter_by(verified=True).count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
Metric.create(
|
||||||
|
name=Metric.NB_APP,
|
||||||
|
value=Client.query.count(),
|
||||||
|
commit=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def increase_percent(old, new) -> str:
|
def increase_percent(old, new) -> str:
|
||||||
if old == 0:
|
if old == 0:
|
||||||
return "N/A"
|
return "N/A"
|
||||||
|
@ -319,6 +425,8 @@ def stats():
|
||||||
# nothing to do
|
# nothing to do
|
||||||
return
|
return
|
||||||
|
|
||||||
|
compute_metrics()
|
||||||
|
|
||||||
stats_today = stats_before(arrow.now())
|
stats_today = stats_before(arrow.now())
|
||||||
stats_yesterday = stats_before(arrow.now().shift(days=-1))
|
stats_yesterday = stats_before(arrow.now().shift(days=-1))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue