def test_all_recipients(self):
        # totally fake Event and SelfOrganisedSubmission
        e = Event.objects.create(
            slug="test-event",
            host=Organization.objects.first(),
            administrator=Organization.objects.get(domain="self-organized"),
            start=date.today() + timedelta(days=7),
            end=date.today() + timedelta(days=8),
            country="GB",
        )
        e.tags.set(Tag.objects.filter(name__in=["LC", "Circuits", "automated-email"]))
        r = SelfOrganisedSubmission.objects.create(
            state="p",
            personal="Harry",
            family="Potter",
            email="*****@*****.**",
            institution_other_name="Hogwarts",
            workshop_url="",
            workshop_format="",
            workshop_format_other="",
            workshop_types_other_explain="",
            language=Language.objects.get(name="English"),
            event=e,
            additional_contact=TAG_SEPARATOR.join(["*****@*****.**", "*****@*****.**"]),
        )
        r.workshop_types.set(Curriculum.objects.filter(carpentry="LC"))

        a = SelfOrganisedRequestAction(
            trigger=Trigger(action="test-action", template=EmailTemplate()),
            objects=dict(event=e, request=r),
        )

        self.assertEqual(
            a.all_recipients(), "[email protected], [email protected], [email protected]"
        )
Exemple #2
0
    def test_all_recipients(self):
        # totally fake Event
        e = Event.objects.create(
            slug="test-event",
            host=Organization.objects.first(),
            administrator=Organization.objects.get(domain="carpentries.org"),
            start=date.today() + timedelta(days=7),
            end=date.today() + timedelta(days=8),
            contact=TAG_SEPARATOR.join(["*****@*****.**", "*****@*****.**"]),
            country="GB",
        )
        e.tags.set(Tag.objects.filter(name__in=["LC", "automated-email"]))
        # tasks
        Task.objects.create(person=self.person1, role=self.host, event=e)
        Task.objects.create(
            person=self.person2,
            role=self.instructor,
            event=e,
        )
        Task.objects.create(
            person=self.person3,
            role=self.instructor,
            event=e,
        )

        a = InstructorsHostIntroductionAction(
            trigger=Trigger(action="test-action", template=EmailTemplate()),
            objects=dict(event=e),
        )

        self.assertEqual(
            a.all_recipients(),
            "[email protected], [email protected], [email protected], [email protected], [email protected]",
        )
Exemple #3
0
    def testContext(self):
        """Make sure `get_additional_context` works correctly."""
        a = SelfOrganisedRequestAction(
            trigger=Trigger(action="test-action", template=EmailTemplate()))

        # method fails when obligatory objects are missing
        with self.assertRaises(KeyError):
            a.get_additional_context(dict())  # missing 'event' and 'request'
        with self.assertRaises(AttributeError):
            # now both objects are present, but the method tries to execute
            # `refresh_from_db` on them
            a.get_additional_context(dict(event="dummy", request="dummy"))

        # totally fake Event and SelfOrganisedSubmission
        e = Event.objects.create(
            slug="test-event",
            host=Organization.objects.first(),
            administrator=Organization.objects.get(domain="self-organized"),
            start=date.today() + timedelta(days=7),
            end=date.today() + timedelta(days=8),
            country="GB",
        )
        e.tags.set(
            Tag.objects.filter(name__in=["LC", "Circuits", "automated-email"]))
        r = SelfOrganisedSubmission.objects.create(
            state="p",
            personal="Harry",
            family="Potter",
            email="*****@*****.**",
            institution_other_name="Hogwarts",
            workshop_url="",
            workshop_format="",
            workshop_format_other="",
            workshop_types_other_explain="",
            language=Language.objects.get(name="English"),
            event=e,
            additional_contact=TAG_SEPARATOR.join(
                ["*****@*****.**", "*****@*****.**"]),
        )
        r.workshop_types.set(Curriculum.objects.filter(carpentry="LC"))

        ctx = a.get_additional_context(objects=dict(event=e, request=r))
        self.maxDiff = None
        self.assertEqual(
            ctx,
            dict(
                workshop=e,
                request=r,
                workshop_main_type="LC",
                dates=e.human_readable_date,
                host=Organization.objects.first(),
                regional_coordinator_email=["*****@*****.**"],
                short_notice=True,
                all_emails=[
                    "*****@*****.**", "*****@*****.**", "*****@*****.**"
                ],
                assignee="Regional Coordinator",
                tags=["automated-email", "Circuits", "LC"],
            ),
        )
Exemple #4
0
    def testRecipients(self):
        """Make sure InstructorsHostIntroductionAction correctly renders recipients.

        They should get overwritten by InstructorsHostIntroductionAction during email
        building."""
        # totally fake Event
        e = Event.objects.create(
            slug="test-event",
            host=Organization.objects.first(),
            administrator=Organization.objects.get(domain="carpentries.org"),
            start=date.today() + timedelta(days=7),
            end=date.today() + timedelta(days=8),
            contact=TAG_SEPARATOR.join(["*****@*****.**", "*****@*****.**"]),
            country="GB",
        )
        e.tags.set(Tag.objects.filter(name__in=["LC", "automated-email"]))
        # tasks
        Task.objects.create(person=self.person1, role=self.host, event=e)
        Task.objects.create(
            person=self.person2,
            role=self.instructor,
            event=e,
        )
        Task.objects.create(
            person=self.person3,
            role=self.instructor,
            event=e,
        )

        template = EmailTemplate.objects.create(
            slug="sample-template",
            subject="Welcome to {{ site.name }}",
            to_header="*****@*****.**",
            from_header="*****@*****.**",
            cc_header="*****@*****.**",
            bcc_header="*****@*****.**",
            reply_to_header="{{ reply_to }}",
            body_template="Sample text.",
        )
        trigger = Trigger.objects.create(
            action="self-organised-request-form",
            template=template,
        )
        a = InstructorsHostIntroductionAction(
            trigger=trigger,
            objects=dict(event=e),
        )
        email = a._email()
        self.assertEqual(
            email.to,
            [
                "*****@*****.**",
                "*****@*****.**",
                "*****@*****.**",
                "*****@*****.**",
                "*****@*****.**",
            ],
        )
Exemple #5
0
    def testRecipients(self):
        """Make sure SelfOrganisedRequestAction correctly renders recipients.

        They should get overwritten by SelfOrganisedRequestAction during email
        building."""
        # totally fake Event and SelfOrganisedSubmission
        e = Event.objects.create(
            slug="test-event",
            host=Organization.objects.first(),
            administrator=Organization.objects.get(domain="self-organized"),
            start=date.today() + timedelta(days=7),
            end=date.today() + timedelta(days=8),
            country="GB",
        )
        e.tags.set(
            Tag.objects.filter(name__in=["LC", "Circuits", "automated-email"]))
        r = SelfOrganisedSubmission.objects.create(
            state="p",
            personal="Harry",
            family="Potter",
            email="*****@*****.**",
            institution_other_name="Hogwarts",
            workshop_url="",
            workshop_format="",
            workshop_format_other="",
            workshop_types_other_explain="",
            language=Language.objects.get(name="English"),
            event=e,
            additional_contact=TAG_SEPARATOR.join(
                ["*****@*****.**", "*****@*****.**"]),
        )
        r.workshop_types.set(Curriculum.objects.filter(carpentry="LC"))

        template = EmailTemplate.objects.create(
            slug="sample-template",
            subject="Welcome to {{ site.name }}",
            to_header="*****@*****.**",
            from_header="*****@*****.**",
            cc_header="*****@*****.**",
            bcc_header="*****@*****.**",
            reply_to_header="{{ reply_to }}",
            body_template="Sample text.",
        )
        trigger = Trigger.objects.create(
            action="self-organised-request-form",
            template=template,
        )
        a = SelfOrganisedRequestAction(
            trigger=trigger,
            objects=dict(event=e, request=r),
        )
        email = a._email()
        self.assertEqual(email.to,
                         ["*****@*****.**", "*****@*****.**", "*****@*****.**"])
Exemple #6
0
    def testContext(self):
        """Make sure `get_additional_context` works correctly."""
        a = InstructorsHostIntroductionAction(
            trigger=Trigger(action="test-action", template=EmailTemplate()))

        # method fails when obligatory objects are missing
        with self.assertRaises(KeyError):
            a.get_additional_context(dict())  # missing 'event'
        with self.assertRaises(AttributeError):
            # now event is present, but the method tries to execute `refresh_from_db`
            # on it
            a.get_additional_context(dict(event="dummy"))

        # totally fake Event
        e = Event.objects.create(
            slug="test-event",
            host=Organization.objects.first(),
            administrator=Organization.objects.get(domain="carpentries.org"),
            start=date.today() + timedelta(days=7),
            end=date.today() + timedelta(days=8),
            contact=TAG_SEPARATOR.join(["*****@*****.**", "*****@*****.**"]),
            country="GB",
        )
        e.tags.set(Tag.objects.filter(name__in=["LC", "automated-email"]))
        # tasks
        host = Task.objects.create(person=self.person1,
                                   role=self.host,
                                   event=e)
        instructor1 = Task.objects.create(
            person=self.person2,
            role=self.instructor,
            event=e,
        )
        instructor2 = Task.objects.create(
            person=self.person3,
            role=self.instructor,
            event=e,
        )
        supporting_instructor1 = Task.objects.create(
            person=self.person4,
            role=self.supporting_instructor,
            event=e,
        )
        supporting_instructor2 = Task.objects.create(
            person=self.person5,
            role=self.supporting_instructor,
            event=e,
        )

        ctx = a.get_additional_context(objects=dict(event=e))
        self.maxDiff = None
        expected = dict(
            workshop=e,
            workshop_main_type="LC",
            dates=e.human_readable_date,
            workshop_host=Organization.objects.first(),
            regional_coordinator_email=["*****@*****.**"],
            host=host.person,
            instructors=[instructor1.person, instructor2.person],
            instructor1=instructor1.person,
            instructor2=instructor2.person,
            supporting_instructors=[
                supporting_instructor1.person,
                supporting_instructor2.person,
            ],
            supporting_instructor1=supporting_instructor1.person,
            supporting_instructor2=supporting_instructor2.person,
            hosts=[host.person],
            all_emails=[
                "*****@*****.**",
                "*****@*****.**",
                "*****@*****.**",
                "*****@*****.**",
                "*****@*****.**",
                "*****@*****.**",
                "*****@*****.**",
            ],
            assignee="Regional Coordinator",
            tags=["automated-email", "LC"],
        )
        self.assertEqual(ctx, expected)
    def testContext(self):
        """Make sure `get_additional_context` works correctly."""
        a = PostWorkshopAction(
            trigger=Trigger(action="test-action", template=EmailTemplate()))

        # method fails when obligatory objects are missing
        with self.assertRaises(KeyError):
            a.get_additional_context(dict())  # missing 'event'
        with self.assertRaises(AttributeError):
            # now both objects are present, but the method tries to execute
            # `refresh_from_db` on them
            a.get_additional_context(dict(event="dummy", task="dummy"))

        e = Event.objects.create(
            slug="test-event",
            host=Organization.objects.first(),
            start=date.today() + timedelta(days=7),
            end=date.today() + timedelta(days=8),
            country="GB",
            venue="Ministry of Magic",
            # additionally testing the empty email
            contact=TAG_SEPARATOR.join(["*****@*****.**", ""]))
        e.tags.set(Tag.objects.filter(name__in=["TTT", "SWC"]))
        p1 = Person.objects.create(personal="Harry",
                                   family="Potter",
                                   username="******",
                                   email="*****@*****.**")
        p2 = Person.objects.create(
            personal="Hermione",
            family="Granger",
            username="******",
            email="*****@*****.**",
        )
        p3 = Person.objects.create(personal="Ron",
                                   family="Weasley",
                                   username="******",
                                   email="*****@*****.**")
        p4 = Person.objects.create(personal="Draco",
                                   family="Malfoy",
                                   username="******",
                                   email="*****@*****.**")
        host = Role.objects.create(name="host")
        instructor = Role.objects.create(name="instructor")
        helper = Role.objects.create(name="helper")
        supporting_instructor = Role.objects.create(
            name="supporting-instructor")
        Task.objects.bulk_create([
            Task(event=e, person=p1, role=host),
            Task(event=e, person=p2, role=instructor),
            Task(event=e, person=p3, role=helper),
            Task(event=e, person=p1, role=helper),
            Task(event=e, person=p4, role=supporting_instructor),
        ])

        ctx = a.get_additional_context(objects=dict(event=e))
        self.assertEqual(
            ctx,
            dict(
                workshop=e,
                workshop_main_type="SWC",
                dates=e.human_readable_date,
                host=Organization.objects.first(),
                regional_coordinator_email=["*****@*****.**"],
                instructors=[p2],
                supporting_instructors=[p4],
                helpers=[p1, p3],
                all_emails=[
                    "*****@*****.**",
                    "*****@*****.**",
                    "*****@*****.**",
                    "*****@*****.**",
                ],
                assignee="Regional Coordinator",
                reports_link="https://workshop-reports.carpentries.org/"
                "?key=e18dd84d093be5cd6c6ccaf63d38a8477ca126f4"
                "&slug=test-event",
                tags=['SWC', 'TTT'],
            ),
        )