Add function to calculate member signup counts
This commit is contained in:
parent
d7a529dd94
commit
7d370fe4b2
|
@ -1,26 +1,28 @@
|
||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
from django.utils.timezone import now, pytz
|
from django.utils.timezone import now
|
||||||
from apiserver.api import models, utils, utils_stats
|
from apiserver.api import models, utils, utils_stats
|
||||||
|
|
||||||
from datetime import datetime
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
def today_alberta_tz():
|
|
||||||
return datetime.now(pytz.timezone('America/Edmonton')).date()
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = 'Tasks to run on the portal hourly.'
|
help = 'Tasks to run on the portal hourly.'
|
||||||
|
|
||||||
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 = utils_stats.calc_member_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=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),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
models.StatsSignupCount.objects.update_or_create(
|
||||||
|
month=utils.today_alberta_tz().replace(day=1),
|
||||||
|
defaults=dict(signup_count=signup_count),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
self.stdout.write('{} - Beginning hourly tasks'.format(str(now())))
|
self.stdout.write('{} - Beginning hourly tasks'.format(str(now())))
|
||||||
|
|
|
@ -2,13 +2,16 @@ import logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import datetime
|
from datetime import date, datetime
|
||||||
import requests
|
import requests
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now, pytz
|
||||||
from apiserver.api import models
|
from apiserver.api import models
|
||||||
from apiserver import secrets
|
from apiserver import secrets
|
||||||
|
|
||||||
|
def today_alberta_tz():
|
||||||
|
return datetime.now(pytz.timezone('America/Edmonton')).date()
|
||||||
|
|
||||||
DEFAULTS = {
|
DEFAULTS = {
|
||||||
'last_card_change': time.time(),
|
'last_card_change': time.time(),
|
||||||
'next_meeting': None,
|
'next_meeting': None,
|
||||||
|
@ -63,6 +66,15 @@ def calc_member_counts():
|
||||||
|
|
||||||
return member_count, green_count
|
return member_count, green_count
|
||||||
|
|
||||||
|
def calc_signup_counts():
|
||||||
|
month_beginning = today_alberta_tz().replace(day=1)
|
||||||
|
|
||||||
|
members = models.Member.objects
|
||||||
|
new_members = members.filter(application_date__gte=month_beginning)
|
||||||
|
num_new_members = new_members.count()
|
||||||
|
|
||||||
|
return num_new_members
|
||||||
|
|
||||||
def check_minecraft_server():
|
def check_minecraft_server():
|
||||||
if secrets.MINECRAFT:
|
if secrets.MINECRAFT:
|
||||||
url = 'https://api.minetools.eu/ping/' + secrets.MINECRAFT
|
url = 'https://api.minetools.eu/ping/' + secrets.MINECRAFT
|
||||||
|
|
Loading…
Reference in New Issue
Block a user