from datetime import timedelta from collections import Counter from backend_app.models.university import University from stats_app.models import DailyConnections, DailyExchangeContributionsInfo from stats_app.utils import ( get_daily_connections, get_today_as_datetime, get_contributions_profiles, ) def update_daily_connections(): yesterday = get_today_as_datetime() - timedelta(days=1) DailyConnections.objects.update_or_create( date=yesterday, defaults=dict(nb_connections=get_daily_connections()) ) def update_daily_exchange_contributions_info(): yesterday = get_today_as_datetime() - timedelta(days=1) contributions_profiles = get_contributions_profiles() nb_contributions_by_profile = Counter(contributions_profiles) for contribution_profile, nb_contributions in nb_contributions_by_profile.items(): university = University.objects.get(pk=contribution_profile.university_pk) DailyExchangeContributionsInfo.objects.update_or_create( date=yesterday, major=contribution_profile.major, minor=contribution_profile.minor, exchange_semester=contribution_profile.exchange_semester, university=university, defaults=dict(nb_contributions=nb_contributions), ) def update_all_stats(): update_daily_connections() update_daily_exchange_contributions_info()