diff --git a/agenda/types.py b/agenda/types.py index 0bfef4d..0b383b1 100644 --- a/agenda/types.py +++ b/agenda/types.py @@ -73,20 +73,21 @@ class Trip: return self.name titles: list[str] = [conf["name"] for conf in self.conferences] + [ event["title"] for event in self.events - ] - if not titles: - for travel in self.travel: - if travel["depart"] and utils.as_date(travel["depart"]) != self.start: - place = travel["from"] - if place not in titles: - titles.append(place) - if travel["depart"] and utils.as_date(travel["depart"]) != self.end: - place = travel["to"] - if place not in titles: - titles.append(place) + ] or self.titles_from_travel() return format_list_with_ampersand(titles) or "[unnamed trip]" + def titles_from_travel(self) -> list[str]: + """Titles from travel.""" + titles = [] + for travel in self.travel: + if not (depart := (travel["depart"] and utils.as_date(travel["depart"]))): + continue + for when, from_or_to in ((self.start, "from"), (self.end, "to")): + if depart != when and travel["from_or_to"] not in titles: + titles.append(travel["from_or_to"]) + return titles + @property def end(self) -> datetime.date | None: """End date for trip."""