Add stats for number of PayPal subscribers
This commit is contained in:
@@ -9,17 +9,18 @@ class Command(BaseCommand):
|
||||
|
||||
def generate_stats(self):
|
||||
utils_stats.calc_next_events()
|
||||
member_count, green_count, six_month_plus_count, vetted_count = utils_stats.calc_member_counts()
|
||||
counts = utils_stats.calc_member_counts()
|
||||
signup_count = utils_stats.calc_signup_counts()
|
||||
|
||||
# do this hourly in case an admin causes a change
|
||||
models.StatsMemberCount.objects.update_or_create(
|
||||
date=utils.today_alberta_tz(),
|
||||
defaults=dict(
|
||||
member_count=member_count,
|
||||
green_count=green_count,
|
||||
six_month_plus_count=six_month_plus_count,
|
||||
vetted_count=vetted_count,
|
||||
member_count=counts['member_count'],
|
||||
green_count=counts['green_count'],
|
||||
six_month_plus_count=counts['six_month_plus_count'],
|
||||
vetted_count=counts['vetted_count'],
|
||||
subscriber_count=counts['subscriber_count'],
|
||||
),
|
||||
)
|
||||
|
||||
|
@@ -152,6 +152,7 @@ class StatsMemberCount(models.Model):
|
||||
green_count = models.IntegerField()
|
||||
six_month_plus_count = models.IntegerField()
|
||||
vetted_count = models.IntegerField()
|
||||
subscriber_count = models.IntegerField()
|
||||
|
||||
class StatsSignupCount(models.Model):
|
||||
month = models.DateField()
|
||||
|
@@ -4,6 +4,7 @@ logger = logging.getLogger(__name__)
|
||||
import time
|
||||
from datetime import date, datetime, timedelta
|
||||
import requests
|
||||
from django.db.models import Prefetch
|
||||
from django.core.cache import cache
|
||||
from django.utils.timezone import now, pytz
|
||||
from apiserver.api import models
|
||||
@@ -73,11 +74,33 @@ def calc_member_counts():
|
||||
|
||||
vetted_count = not_paused.filter(vetted_date__isnull=False).count()
|
||||
|
||||
related_membership_tx = Prefetch(
|
||||
'user__transactions',
|
||||
queryset=models.Transaction.objects.exclude(
|
||||
number_of_membership_months=0,
|
||||
).exclude(
|
||||
number_of_membership_months__isnull=True,
|
||||
),
|
||||
)
|
||||
|
||||
subscriber_count = 0
|
||||
for member in not_paused.prefetch_related(related_membership_tx):
|
||||
if not member.user.transactions.count():
|
||||
continue
|
||||
if member.user.transactions.latest('date').paypal_txn_type == 'subscr_payment':
|
||||
subscriber_count += 1
|
||||
|
||||
cache.set('member_count', member_count)
|
||||
cache.set('paused_count', paused_count)
|
||||
cache.set('green_count', green_count)
|
||||
|
||||
return member_count, green_count, six_month_plus_count, vetted_count
|
||||
return dict(
|
||||
member_count=member_count,
|
||||
green_count=green_count,
|
||||
six_month_plus_count=six_month_plus_count,
|
||||
vetted_count=vetted_count,
|
||||
subscriber_count=subscriber_count,
|
||||
)
|
||||
|
||||
def calc_signup_counts():
|
||||
month_beginning = today_alberta_tz().replace(day=1)
|
||||
|
Reference in New Issue
Block a user