def handle(self, *args, **options): logger.info("send_reminders called.") check_dates = [] # Collect end-dates of evaluations whose participants need to be reminded today. for number_of_days in settings.REMIND_X_DAYS_AHEAD_OF_END_DATE: check_dates.append(datetime.date.today() + datetime.timedelta(days=number_of_days)) recipients = set() for evaluation in Evaluation.objects.filter( state=Evaluation.State.IN_EVALUATION, vote_end_date__in=check_dates): recipients.update(evaluation.due_participants) for recipient in recipients: due_evaluations = recipient.get_sorted_due_evaluations() # entry 0 is first due evaluation, entry 1 in tuple is number of days first_due_in_days = due_evaluations[0][1] EmailTemplate.send_reminder_to_user( recipient, first_due_in_days=first_due_in_days, due_evaluations=due_evaluations) logger.info("send_reminders finished.") logger.info("sent reminders to {} people.".format(len(recipients)))
def handle(self, *args, **options): logger.info("send_reminders called.") check_dates = [] # Collect end-dates of courses whose participants need to be reminded today. for number_of_days in settings.REMIND_X_DAYS_AHEAD_OF_END_DATE: check_dates.append(datetime.date.today() + datetime.timedelta(days=number_of_days)) recipients = set() for course in Course.objects.filter(state="in_evaluation", vote_end_date__in=check_dates): recipients.update(course.due_participants) for recipient in recipients: due_courses = dict() for course in Course.objects.filter(participants=recipient, state="in_evaluation").exclude( voters=recipient ): due_courses[course] = (course.vote_end_date - datetime.date.today()).days first_due_in_days = min(due_courses.values()) # Sort courses by number of days left for evaluation and bring them to following format: # [(course, due_in_days), ...] due_courses = sorted(due_courses.items(), key=operator.itemgetter(1)) EmailTemplate.send_reminder_to_user(recipient, first_due_in_days=first_due_in_days, due_courses=due_courses) logger.info("send_reminders finished.") logger.info("sent reminders to {} people.".format(len(recipients)))
def handle(self, *args, **options): logger.info("send_reminders called.") check_dates = [] # Collect end-dates of courses whose participants need to be reminded today. for number_of_days in settings.REMIND_X_DAYS_AHEAD_OF_END_DATE: check_dates.append(datetime.date.today() + datetime.timedelta(days=number_of_days)) recipients = set() for course in Course.objects.filter(state='in_evaluation', vote_end_date__in=check_dates): recipients.update(course.due_participants) for recipient in recipients: due_courses = dict() for course in Course.objects.filter( participants=recipient, state='in_evaluation').exclude(voters=recipient): due_courses[course] = (course.vote_end_date - datetime.date.today()).days first_due_in_days = min(due_courses.values()) # Sort courses by number of days left for evaluation and bring them to following format: # [(course, due_in_days), ...] due_courses = sorted(due_courses.items(), key=operator.itemgetter(1)) EmailTemplate.send_reminder_to_user( recipient, first_due_in_days=first_due_in_days, due_courses=due_courses) logger.info("send_reminders finished.") logger.info("sent reminders to {} people.".format(len(recipients)))
def handle(self, *args, **options): logger.info("send_reminders called.") check_dates = [] # Collect end-dates of courses whose participants need to be reminded today. for number_of_days in settings.REMIND_X_DAYS_AHEAD_OF_END_DATE: check_dates.append(datetime.date.today() + datetime.timedelta(days=number_of_days)) recipients = set() for course in Course.objects.filter(state='in_evaluation', vote_end_date__in=check_dates): recipients.update(course.due_participants) for recipient in recipients: due_courses = get_due_courses_for_user(recipient) first_due_in_days = due_courses[0][ 1] # entry 0 is first due course, entry 1 in tuple is number of days EmailTemplate.send_reminder_to_user( recipient, first_due_in_days=first_due_in_days, due_courses=due_courses) logger.info("send_reminders finished.") logger.info("sent reminders to {} people.".format(len(recipients)))
def check_reminders(self): check_dates = [] for number_of_days in settings.REMIND_X_DAYS_AHEAD_OF_END_DATE: check_dates.append(datetime.date.today() + datetime.timedelta(days=number_of_days)) recipients = set() for course in Course.objects.filter(state='inEvaluation', vote_end_date__in=check_dates): recipients.update(course.due_participants) for recipient in recipients: due_courses = list(set(Course.objects.filter(participants=recipient, state='inEvaluation').exclude(voters=recipient))) due_in_number_of_days = min((course.vote_end_date - datetime.date.today()).days for course in due_courses) EmailTemplate.send_reminder_to_user(recipient, due_in_number_of_days=due_in_number_of_days, due_courses=due_courses)
def handle(self, *args, **options): logger.info("send_reminders called.") check_dates = [] # Collect end-dates of courses whose participants need to be reminded today. for number_of_days in settings.REMIND_X_DAYS_AHEAD_OF_END_DATE: check_dates.append(datetime.date.today() + datetime.timedelta(days=number_of_days)) recipients = set() for course in Course.objects.filter(state='in_evaluation', vote_end_date__in=check_dates): recipients.update(course.due_participants) for recipient in recipients: due_courses = get_due_courses_for_user(recipient) first_due_in_days = due_courses[0][1] # entry 0 is first due course, entry 1 in tuple is number of days EmailTemplate.send_reminder_to_user(recipient, first_due_in_days=first_due_in_days, due_courses=due_courses) logger.info("send_reminders finished.") logger.info("sent reminders to {} people.".format(len(recipients)))
def check_reminders(self): logger.info("check_reminders called.") check_dates = [] for number_of_days in settings.REMIND_X_DAYS_AHEAD_OF_END_DATE: check_dates.append(datetime.date.today() + datetime.timedelta(days=number_of_days)) recipients = set() for course in Course.objects.filter(state='inEvaluation', vote_end_date__in=check_dates): recipients.update(course.due_participants) for recipient in recipients: due_courses = dict() for course in Course.objects.filter(participants=recipient, state='inEvaluation').exclude(voters=recipient): due_courses[course] = (course.vote_end_date - datetime.date.today()).days first_due_in_days = min(due_courses.values()) # sort courses by number of days left for evaluation and bring them to following format: [(course, due_in_days), ...] due_courses = sorted(due_courses.items(), key=operator.itemgetter(1)) EmailTemplate.send_reminder_to_user(recipient, first_due_in_days=first_due_in_days, due_courses=due_courses) logger.info("check_reminders finished.")