Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

from datetime import datetime, timedelta 

from collections import Counter 

from typing import Optional 

 

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(date: Optional[datetime] = None): 

if date is None: 

date = get_today_as_datetime() - timedelta(days=1) 

 

DailyConnections.objects.update_or_create( 

date=date, defaults=dict(nb_connections=get_daily_connections(date)) 

) 

 

 

def update_daily_exchange_contributions_info(date: Optional[datetime] = None): 

if date is None: 

date = get_today_as_datetime() - timedelta(days=1) 

 

contributions_profiles = get_contributions_profiles(date) 

 

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=date, 

type=contribution_profile.type, 

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(date: Optional[datetime] = None): 

if date is None: 

date = get_today_as_datetime() - timedelta(days=1) 

 

update_daily_connections(date) 

update_daily_exchange_contributions_info(date)