def setUpTestData(cls) -> None: mail_reminder = tutor_models.TutorMail.objects.create( sender=fahrt_models.FahrtMail.SET_TUTOR, subject="Reminder_mail {{tutor}}", text="Reminder_mail_text {{task}}", ) cls.setting = tutor_models.Settings.objects.create( semester=common_models.current_semester(), close_registration=cls.todatetime, open_registration=cls.todatetime, mail_reminder=mail_reminder, reminder_tour_days_count=0, ) course_bundle_info = settool_common.models.CourseBundle.objects.create( name="Info", name_de="Informatics", name_en="Informatik", ) subject = settool_common.models.Subject.objects.create( degree=settool_common.models.Subject.MASTER, subject="OR", subject_de="Operatopms Recearch", subject_en="Operatopms Recearch", course_bundle=course_bundle_info, ) event = tutor_models.Event.objects.create( semester=common_models.current_semester(), name="enent", begin=cls.todatetime, end=cls.todatetime, meeting_point="-", ) for i in range(2): tutor_models.Tutor.objects.create( semester=common_models.current_semester(), first_name=f"firstname {i}", last_name=f"surname {i}", email=f"a{i}@test.de", tshirt_size="L", tshirt_girls_cut=False, status=tutor_models.Tutor.STATUS_OPTIONS[i % len( tutor_models.Tutor.STATUS_OPTIONS)][0], subject=subject, ) tutors = list(tutor_models.Tutor.objects.all()) for i in range(10): task = tutor_models.Task.objects.create( semester=common_models.current_semester(), name=f"task {i}", begin=cls.todatetime, end=cls.todatetime, meeting_point="-", event=event, ) for tutor in tutors: tutor_models.TutorAssignment.objects.create( tutor=tutor, task=task, )
def setUpTestData(cls) -> None: payment_mail = fahrt_models.FahrtMail.objects.create( sender=fahrt_models.FahrtMail.SET_FAHRT, subject="Payment_mail {{participant}}", text="Payment_mail_text", ) reminder_email = fahrt_models.FahrtMail.objects.create( sender=fahrt_models.FahrtMail.SET_FAHRT, subject="Reminder_mail {{participant}}", text="Reminder_mail_text", ) cls.fahrt_obj = fahrt_models.Fahrt.objects.create( semester=common_models.current_semester(), date=cls.today + timedelta(days=1), close_registration=cls.todatetime, open_registration=cls.todatetime, mail_reminder=reminder_email, reminder_tour_days_count=0, mail_payment_deadline=payment_mail, reminder_payment_deadline_days_count=0, ) course_bundle_info = settool_common.models.CourseBundle.objects.create( name="Info", name_de="Informatics", name_en="Informatik", ) subject = settool_common.models.Subject.objects.create( degree=settool_common.models.Subject.MASTER, subject="OR", subject_de="Operatopms Recearch", subject_en="Operatopms Recearch", course_bundle=course_bundle_info, ) for i in range(10): fahrt_models.Participant.objects.create( semester=common_models.current_semester(), gender=random.choice( fahrt_models.Participant.GENDER_CHOICES)[0], # nosec: B311 firstname=f"firstname {i}", surname=f"surname {i}", birthday=cls.today - timedelta(weeks=random.randint(1, 200)), # nosec: B311 email=f"a{i}@test.de", phone=f"+49 000 {i}", subject=subject, nutrition="normal", payment_deadline=date.today() + timedelta(days=1) if i % 2 == 0 else None, # nosec: B311 status="confirmed", )
def reminder_cronjob(): today = date.today() semester = current_semester() fahrt_date_reminder(semester, today) fahrt_payment_reminder(semester, today) tutor_reminder(semester, today) guidedtour_reminder(semester, today)
def setUpTestData(cls) -> None: mail_reminder = tour_models.TourMail.objects.create( sender=fahrt_models.FahrtMail.SET, subject="Reminder_mail {{participant}}", text="Reminder_mail_text", ) cls.setting = tour_models.Setting.objects.create( semester=common_models.current_semester(), mail_reminder=mail_reminder, reminder_tour_days_count=0, ) course_bundle_info = settool_common.models.CourseBundle.objects.create( name="Info", name_de="Informatics", name_en="Informatik", ) subject = settool_common.models.Subject.objects.create( degree=settool_common.models.Subject.MASTER, subject="OR", subject_de="Operatopms Recearch", subject_en="Operatopms Recearch", course_bundle=course_bundle_info, ) for i in range(4): tour_models.Tour.objects.create( semester=common_models.current_semester(), name="tour today", date=cls.today + timedelta(days=i), capacity=10, open_registration=cls.todatetime, close_registration=cls.todatetime, ) for tour in tour_models.Tour.objects.all(): for i in range(10): tour_models.Participant.objects.create( tour=tour, firstname=f"firstname {i}", surname=f"surname {i}", email=f"a{i}@test.de", phone=f"+49 000 {i}", subject=subject, )
def test_tutor_reminder(self): for days_until in range(-2, 4): self.setting.reminder_tour_days_count = days_until self.setting.save() days_until = max(days_until, 0) lookup_day = self.today + timedelta(days=days_until) task: tutor_models.Task for task in tutor_models.Task.objects.filter( Q(semester=common_models.current_semester()) & Q(begin__day=lookup_day.day) # begin is datetime & Q(begin__month=lookup_day.month) & Q(begin__year=lookup_day.year), ): tutor: tutor_models.Tutor for tutor in list(task.tutors.all()): self.setting.mail_reminder.send_mail_task(tutor, task) expected = serialise_outbox() cron.tutor_reminder(common_models.current_semester(), self.today) curr = serialise_outbox() self.assertEqual(curr, expected)
def generate_semesters(): semester1 = Semester(semester="WS", year=2019) # legacy data that should not be shown semester1.save() semester2 = current_semester() semester2.save() return semester1, semester2
def get_current_semester(): return current_semester().pk