Add option for unpublished trips
This commit is contained in:
parent
e3cae68d2f
commit
d690442f0f
|
@ -67,6 +67,10 @@ def build_trip_list(data_dir: str | None = None) -> list[Trip]:
|
||||||
if data_dir is None:
|
if data_dir is None:
|
||||||
data_dir = flask.current_app.config["PERSONAL_DATA"]
|
data_dir = flask.current_app.config["PERSONAL_DATA"]
|
||||||
|
|
||||||
|
yaml_trip_list = travel.parse_yaml("trips", data_dir)
|
||||||
|
|
||||||
|
yaml_trip_lookup = {item["trip"]: item for item in yaml_trip_list}
|
||||||
|
|
||||||
travel_items = sorted(
|
travel_items = sorted(
|
||||||
load_flights(data_dir) + load_trains(data_dir), key=depart_datetime
|
load_flights(data_dir) + load_trains(data_dir), key=depart_datetime
|
||||||
)
|
)
|
||||||
|
@ -84,7 +88,10 @@ def build_trip_list(data_dir: str | None = None) -> list[Trip]:
|
||||||
if not (start := item.get("trip")):
|
if not (start := item.get("trip")):
|
||||||
continue
|
continue
|
||||||
if start not in trips:
|
if start not in trips:
|
||||||
trips[start] = Trip(start=start)
|
from_yaml = yaml_trip_lookup.get(start, {})
|
||||||
|
trips[start] = Trip(
|
||||||
|
start=start, **{k: v for k, v in from_yaml.items() if k != "trip"}
|
||||||
|
)
|
||||||
getattr(trips[start], key).append(item)
|
getattr(trips[start], key).append(item)
|
||||||
|
|
||||||
return [trip for _, trip in sorted(trips.items())]
|
return [trip for _, trip in sorted(trips.items())]
|
||||||
|
|
|
@ -30,10 +30,14 @@ class Trip:
|
||||||
accommodation: list[StrDict] = field(default_factory=list)
|
accommodation: list[StrDict] = field(default_factory=list)
|
||||||
conferences: list[StrDict] = field(default_factory=list)
|
conferences: list[StrDict] = field(default_factory=list)
|
||||||
events: list[StrDict] = field(default_factory=list)
|
events: list[StrDict] = field(default_factory=list)
|
||||||
|
name: str | None = None
|
||||||
|
private: bool = False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def title(self) -> str:
|
def title(self) -> str:
|
||||||
"""Trip title."""
|
"""Trip title."""
|
||||||
|
if self.name:
|
||||||
|
return self.name
|
||||||
titles: list[str] = [conf["name"] for conf in self.conferences] + [
|
titles: list[str] = [conf["name"] for conf in self.conferences] + [
|
||||||
event["title"] for event in self.events
|
event["title"] for event in self.events
|
||||||
]
|
]
|
||||||
|
|
21
web_view.py
21
web_view.py
|
@ -209,7 +209,11 @@ def accommodation_list() -> str:
|
||||||
@app.route("/trip")
|
@app.route("/trip")
|
||||||
def trip_list() -> str:
|
def trip_list() -> str:
|
||||||
"""Page showing a list of trips."""
|
"""Page showing a list of trips."""
|
||||||
trip_list = agenda.trip.build_trip_list()
|
trip_list = [
|
||||||
|
trip
|
||||||
|
for trip in agenda.trip.build_trip_list()
|
||||||
|
if flask.g.user.is_authenticated or not trip.private
|
||||||
|
]
|
||||||
|
|
||||||
today = date.today()
|
today = date.today()
|
||||||
current = [
|
current = [
|
||||||
|
@ -242,7 +246,11 @@ def trip_list() -> str:
|
||||||
@app.route("/trip/text")
|
@app.route("/trip/text")
|
||||||
def trip_list_text() -> str:
|
def trip_list_text() -> str:
|
||||||
"""Page showing a list of trips."""
|
"""Page showing a list of trips."""
|
||||||
trip_list = agenda.trip.build_trip_list()
|
trip_list = [
|
||||||
|
trip
|
||||||
|
for trip in agenda.trip.build_trip_list()
|
||||||
|
if flask.g.user.is_authenticated or not trip.private
|
||||||
|
]
|
||||||
|
|
||||||
today = date.today()
|
today = date.today()
|
||||||
future = [item for item in trip_list if item.start > today]
|
future = [item for item in trip_list if item.start > today]
|
||||||
|
@ -292,7 +300,14 @@ def human_readable_delta(future_date: date) -> str | None:
|
||||||
@app.route("/trip/<start>")
|
@app.route("/trip/<start>")
|
||||||
def trip_page(start: str) -> str:
|
def trip_page(start: str) -> str:
|
||||||
"""Individual trip page."""
|
"""Individual trip page."""
|
||||||
trip_iter = iter(agenda.trip.build_trip_list())
|
|
||||||
|
trip_list = [
|
||||||
|
trip
|
||||||
|
for trip in agenda.trip.build_trip_list()
|
||||||
|
if flask.g.user.is_authenticated or not trip.private
|
||||||
|
]
|
||||||
|
|
||||||
|
trip_iter = iter(trip_list)
|
||||||
today = date.today()
|
today = date.today()
|
||||||
data_dir = flask.current_app.config["PERSONAL_DATA"]
|
data_dir = flask.current_app.config["PERSONAL_DATA"]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue