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
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
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
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
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
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
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
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])