Add stats for number of members older than six months

This commit is contained in:
Tanner Collin 2020-11-18 23:54:44 +00:00
parent e8878fc02e
commit 4b74bc8ade
3 changed files with 12 additions and 4 deletions

View File

@ -9,13 +9,17 @@ class Command(BaseCommand):
def generate_stats(self): def generate_stats(self):
utils_stats.calc_next_events() utils_stats.calc_next_events()
member_count, green_count = utils_stats.calc_member_counts() member_count, green_count, six_month_plus_count = utils_stats.calc_member_counts()
signup_count = utils_stats.calc_signup_counts() signup_count = utils_stats.calc_signup_counts()
# do this hourly in case an admin causes a change # do this hourly in case an admin causes a change
models.StatsMemberCount.objects.update_or_create( models.StatsMemberCount.objects.update_or_create(
date=utils.today_alberta_tz(), date=utils.today_alberta_tz(),
defaults=dict(member_count=member_count, green_count=green_count), defaults=dict(
member_count=member_count,
green_count=green_count,
six_month_plus_count=six_month_plus_count,
),
) )
models.StatsSignupCount.objects.update_or_create( models.StatsSignupCount.objects.update_or_create(

View File

@ -142,6 +142,7 @@ class StatsMemberCount(models.Model):
date = models.DateField(default=today_alberta_tz) date = models.DateField(default=today_alberta_tz)
member_count = models.IntegerField() member_count = models.IntegerField()
green_count = models.IntegerField() green_count = models.IntegerField()
six_month_plus_count = models.IntegerField()
class StatsSignupCount(models.Model): class StatsSignupCount(models.Model):
month = models.DateField() month = models.DateField()

View File

@ -2,7 +2,7 @@ import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
import time import time
from datetime import date, datetime from datetime import date, datetime, timedelta
import requests import requests
from django.core.cache import cache from django.core.cache import cache
from django.utils.timezone import now, pytz from django.utils.timezone import now, pytz
@ -64,11 +64,14 @@ def calc_member_counts():
paused_count = members.count() - member_count paused_count = members.count() - member_count
green_count = num_current + num_prepaid green_count = num_current + num_prepaid
six_months_ago = today_alberta_tz() - timedelta(days=183)
six_month_plus_count = not_paused.filter(application_date__lte=six_months_ago).count()
cache.set('member_count', member_count) cache.set('member_count', member_count)
cache.set('paused_count', paused_count) cache.set('paused_count', paused_count)
cache.set('green_count', green_count) cache.set('green_count', green_count)
return member_count, green_count return member_count, green_count, six_month_plus_count
def calc_signup_counts(): def calc_signup_counts():
month_beginning = today_alberta_tz().replace(day=1) month_beginning = today_alberta_tz().replace(day=1)