예제 #1
0
    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,
                )
예제 #2
0
 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",
         )
예제 #3
0
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)
예제 #4
0
 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,
             )
예제 #5
0
    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)
예제 #6
0
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
예제 #7
0
def get_current_semester():
    return current_semester().pk