コード例 #1
0
ファイル: actions.py プロジェクト: carpentries/amy
    def get_additional_context(self, objects, *args, **kwargs):
        from workshops.util import human_daterange, match_notification_email

        # refresh related event
        event = objects["event"]
        task = objects["task"]
        event.refresh_from_db()
        task.refresh_from_db()

        # prepare context
        context = dict()
        context["workshop"] = event
        context["workshop_main_type"] = None
        tmp = event.tags.carpentries().first()
        if tmp:
            context["workshop_main_type"] = tmp.name
        context["dates"] = None
        if event.start and event.end:
            context["dates"] = human_daterange(event.start, event.end)
        context["host"] = event.host
        context["regional_coordinator_email"] = list(match_notification_email(event))
        context["task"] = task
        context["person"] = task.person
        context["instructor"] = task.person
        context["role"] = task.role
        context["assignee"] = (
            event.assigned_to.full_name if event.assigned_to else "Regional Coordinator"
        )
        context["tags"] = list(event.tags.values_list("name", flat=True))

        return context
コード例 #2
0
ファイル: actions.py プロジェクト: carpentries/amy
    def get_additional_context(self, objects, *args, **kwargs):
        from workshops.util import human_daterange, match_notification_email

        # refresh related event
        event = objects["event"]
        event.refresh_from_db()

        # prepare context
        context = dict()
        context["workshop"] = event
        context["workshop_main_type"] = None
        tmp = event.tags.carpentries().first()
        if tmp:
            context["workshop_main_type"] = tmp.name
        context["dates"] = human_daterange(event.start, event.end)
        context["workshop_host"] = event.host
        context["regional_coordinator_email"] = list(match_notification_email(event))

        # people
        instructors = event.task_set.filter(role__name__in=self.role_names)
        context["instructors"] = [instr.person for instr in instructors]
        hosts = event.task_set.filter(role__name="host")
        context["hosts"] = [host.person for host in hosts]

        task_emails = [task.person.email for task in instructors]
        context["all_emails"] = list(filter(bool, task_emails))

        context["assignee"] = (
            event.assigned_to.full_name if event.assigned_to else "Regional Coordinator"
        )
        context["tags"] = list(event.tags.values_list("name", flat=True))

        return context
コード例 #3
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context[
         "title"] = f"Begin Instructor Selection Process for {self.event}"
     context["event"] = self.event
     context["event_dates"] = human_daterange(self.event.start,
                                              self.event.end,
                                              common_month_left=r"%B %d",
                                              range_char="-")
     return context
コード例 #4
0
ファイル: actions.py プロジェクト: gaybro8777/amy
    def get_additional_context(self, objects, *args, **kwargs):
        from workshops.util import (
            human_daterange,
            match_notification_email,
            reports_link,
        )

        # refresh related event
        event = objects["event"]
        event.refresh_from_db()

        # prepare context
        context = dict()
        context["workshop"] = event
        context["workshop_main_type"] = None
        tmp = event.tags.carpentries().first()
        if tmp:
            context["workshop_main_type"] = tmp.name
        context["dates"] = None
        if event.end:
            context["dates"] = human_daterange(event.start, event.end)
        context["host"] = event.host
        context["regional_coordinator_email"] = list(
            match_notification_email(event))

        # to get only people from the task set
        context["instructors"] = list(
            Person.objects.filter(task__in=event.task_set.filter(
                role__name="instructor")))
        context["supporting_instructors"] = list(
            Person.objects.filter(task__in=event.task_set.filter(
                role__name="supporting-instructor")))
        context["helpers"] = list(
            Person.objects.filter(task__in=event.task_set.filter(
                role__name="helper")))
        context["hosts"] = list(
            Person.objects.filter(task__in=event.task_set.filter(
                role__name="host")))

        # querying over Person.objects lets us get rid of duplicates
        person_emails = list(
            Person.objects.filter(task__in=event.task_set.filter(
                role__name__in=self.ROLES)).distinct().values_list("email",
                                                                   flat=True))
        additional_contacts = event.contact.split(TAG_SEPARATOR)
        all_emails = list(filter(bool, person_emails + additional_contacts))
        context["all_emails"] = all_emails

        context["assignee"] = (event.assigned_to.full_name if event.assigned_to
                               else "Regional Coordinator")

        context["reports_link"] = reports_link(event.slug)
        context["tags"] = list(event.tags.values_list("name", flat=True))

        return context
コード例 #5
0
ファイル: actions.py プロジェクト: carpentries/amy
    def get_additional_context(self, objects, *args, **kwargs):
        from workshops.util import human_daterange, match_notification_email

        # refresh related event
        event = objects["event"]
        event.refresh_from_db()

        # prepare context
        context = dict()
        context["workshop"] = event
        context["workshop_main_type"] = None
        tmp = event.tags.carpentries().first()
        if tmp:
            context["workshop_main_type"] = tmp.name
        context["dates"] = human_daterange(event.start, event.end)
        context["workshop_host"] = event.host
        context["regional_coordinator_email"] = list(match_notification_email(event))

        # people
        tasks = event.task_set.filter(
            role__name__in=["host", "instructor", "supporting-instructor"]
        ).order_by("role__name")
        hosts = tasks.filter(role__name="host")
        instructors = tasks.filter(role__name="instructor")
        support = tasks.filter(role__name="supporting-instructor")
        context["instructors"] = [instr.person for instr in instructors]
        context["supporting_instructors"] = [instr.person for instr in support]
        context["host"] = hosts[0].person
        context["hosts"] = [host.person for host in hosts]
        context["instructor1"] = instructors[0].person
        context["instructor2"] = instructors[1].person

        # supporting instructors are optional
        try:
            context["supporting_instructor1"] = support[0].person
        except IndexError:
            context["supporting_instructor1"] = None

        try:
            context["supporting_instructor2"] = support[1].person
        except IndexError:
            context["supporting_instructor2"] = None

        task_emails = [t.person.email for t in tasks]
        contacts = event.contact.split(TAG_SEPARATOR)
        context["all_emails"] = list(filter(bool, task_emails + contacts))

        context["assignee"] = (
            event.assigned_to.full_name if event.assigned_to else "Regional Coordinator"
        )
        context["tags"] = list(event.tags.values_list("name", flat=True))

        return context
コード例 #6
0
ファイル: actions.py プロジェクト: carpentries/amy
    def get_additional_context(self, objects, *args, **kwargs):
        from workshops.util import human_daterange, match_notification_email

        # prepare context
        context = dict()

        # current design allows for creating a response when there's no connected
        # event
        request = objects["request"]
        event = objects.get("event")

        context["request"] = request

        if event:
            # refresh related event if it exists
            event.refresh_from_db()
            context["workshop"] = event
            context["workshop_main_type"] = None
            tmp = event.tags.carpentries().first()
            if tmp:
                context["workshop_main_type"] = tmp.name
            context["dates"] = human_daterange(event.start, event.end)
            context["workshop_host"] = event.host
            context["regional_coordinator_email"] = list(
                match_notification_email(event)
            )

            task_emails = [
                task.person.email
                for task in event.task_set.filter(
                    role__name__in=["host", "instructor"]
                ).order_by("role__name")
            ]
            context["all_emails"] = list(filter(bool, task_emails))

            context["assignee"] = (
                event.assigned_to.full_name
                if event.assigned_to
                else "Regional Coordinator"
            )
            context["tags"] = list(event.tags.values_list("name", flat=True))

        else:
            context["assignee"] = (
                request.assigned_to.full_name
                if request.assigned_to
                else "Regional Coordinator"
            )

        return context
コード例 #7
0
ファイル: actions.py プロジェクト: gaybro8777/amy
    def get_additional_context(self, objects, *args, **kwargs):
        from workshops.util import match_notification_email, human_daterange

        # refresh related event and request
        event = objects["event"]
        event.refresh_from_db()
        request = objects["request"]  # SelfOrganisedSubmission
        request.refresh_from_db()

        # prepare context
        context = dict()
        context["workshop"] = event
        context["request"] = request
        context["workshop_main_type"] = None
        tmp = event.tags.carpentries().first()
        if tmp:
            context["workshop_main_type"] = tmp.name
        context["dates"] = None
        if event.end:
            context["dates"] = human_daterange(event.start, event.end)
        context["host"] = event.host
        context["regional_coordinator_email"] = list(
            match_notification_email(event))

        # event starts in less (or equal) than 10 days
        context["short_notice"] = event.start <= (date.today() +
                                                  timedelta(days=10))

        # additional contact info (see CommonRequest for details)
        emails = [request.email
                  ] + request.additional_contact.split(TAG_SEPARATOR)
        context["all_emails"] = list(filter(bool, emails))

        context["assignee"] = (event.assigned_to.full_name if event.assigned_to
                               else "Regional Coordinator")
        context["tags"] = list(event.tags.values_list("name", flat=True))

        return context
コード例 #8
0
 def test_function(self):
     for i, v in enumerate(self.inputs):
         with self.subTest(i=i):
             left, right = v
             output = human_daterange(left, right, **self.formats)
             self.assertEqual(output, self.expected_outputs[i])
コード例 #9
0
ファイル: test_util.py プロジェクト: pbanaszkiewicz/amy
 def test_function(self):
     for i, v in enumerate(self.inputs):
         with self.subTest(i=i):
             left, right = v
             output = human_daterange(left, right, **self.formats)
             self.assertEqual(output, self.expected_outputs[i])