From 7e9b23d4a12dd88ddafdf815caf067cd5ba1693c Mon Sep 17 00:00:00 2001 From: Midgard Date: Sat, 25 Jul 2020 18:28:04 +0200 Subject: [PATCH] Remove hardcoded "A" and "I" These stand for "admitted" and "interested", but we have constants for that. Also: fix a typo, remove cargo culted `.all()`, use saner indentation. --- events/tasks.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/events/tasks.py b/events/tasks.py index 6f24540..54eb9d5 100644 --- a/events/tasks.py +++ b/events/tasks.py @@ -6,11 +6,14 @@ from events.models import Event, EventRegistration from users.models import CustomUser -def calc_score(user: CustomUser): - registrations_last_month = EventRegistration.objects.all().filter(user_id=user.id, - event__date__gt=date.today() - timedelta(days=30), - event__date__lte=date.today(), - state__exact='A') +def calc_score(user: CustomUser, for_date): + registrations_last_month = EventRegistration.objects.filter( + user_id=user.id, + event__date__gt=for_date - timedelta(days=30), + event__date__lte=for_date, + state=EventRegistration.ADMITTED + ) + score = 0 for r in registrations_last_month: days_ago = (date.today() - r.event.date.date()).days @@ -22,7 +25,7 @@ def calc_score(user: CustomUser): @app.task(bind=True) def assign_reservations(self): """ - Chech if there are any events the next day. + Check if there are any events tomorrow. If so, calculate the current score for every interested user and assign the ones with the lowest scores. :param self: :return: @@ -33,9 +36,10 @@ def assign_reservations(self): events = Event.objects.all().filter(date__date=date.today() + timedelta(days=1)) # Reservations - registrations: List[EventRegistration] = EventRegistration.objects.all().filter( + registrations: List[EventRegistration] = EventRegistration.objects.filter( event_id__in=map(lambda event: event.id, events), - state__exact='I') + state=EventRegistration.INTERESTED) + if len(registrations) == 0: print("NO REGISTRATIONS?")