Edward Betts
e2afe0ffa4
Trip prices are visible on trip list, accommodation list, conference list and travel list. Prices are hidden if not logged in, except conference prices. Still need to show prices on individual trip page.
165 lines
6.2 KiB
HTML
165 lines
6.2 KiB
HTML
{% macro display_datetime(dt) %}{{ dt.strftime("%a, %d, %b %Y %H:%M %z") }}{% endmacro %}
|
|
{% macro display_time(dt) %}{{ dt.strftime("%H:%M %z") }}{% endmacro %}
|
|
{% macro display_date(dt) %}{{ dt.strftime("%a %-d %b %Y") }}{% endmacro %}
|
|
{% macro display_date_no_year(dt) %}{{ dt.strftime("%a %-d %b") }}{% endmacro %}
|
|
|
|
{% macro trip_link(trip) %}
|
|
<a href="{{ url_for("trip_page", start=trip.start.isoformat()) }}">{{ trip.title }}</a>
|
|
{% endmacro %}
|
|
|
|
{% macro conference_row(item, badge) %}
|
|
{% set country = get_country(item.country) if item.country else None %}
|
|
<div class="grid-item text-end">{{ item.start.strftime("%a, %d %b %Y") }}</div>
|
|
<div class="grid-item text-end">{{ item.end.strftime("%a, %d %b") }}</div>
|
|
<div class="grid-item">
|
|
{% if item.url %}
|
|
<a href="{{ item.url }}">{{ item.name }}</a>
|
|
{% else %}
|
|
{{ item.name }}
|
|
{% endif %}
|
|
{% if item.going and not (item.accommodation_booked or item.travel_booked) %}
|
|
<span class="badge text-bg-primary">
|
|
{{ badge }}
|
|
</span>
|
|
{% endif %}
|
|
{% if item.accommodation_booked %}
|
|
<span class="badge text-bg-success">accommodation</span>
|
|
{% endif %}
|
|
{% if item.transport_booked %}
|
|
<span class="badge text-bg-success">transport</span>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid-item text-end">
|
|
{% if item.price and item.currency %}
|
|
<span class="badge bg-info text-nowrap">{{ "{:,d}".format(item.price | int) }} {{ item.currency }}</span>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid-item">{{ item.topic }}</div>
|
|
<div class="grid-item">{{ item.location }}</div>
|
|
<div class="grid-item text-end">{{ display_date(item.cfp_end) if item.cfp_end else "" }}</div>
|
|
<div class="grid-item">
|
|
{% if country %}
|
|
{{ country.flag }} {{ country.name }}
|
|
{% elif item.online %}
|
|
💻 Online
|
|
{% else %}
|
|
<span class="text-bg-danger p-2">
|
|
country code <strong>{{ item.country }}</strong> not found
|
|
</span>
|
|
{% endif %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro accommodation_row(item, badge) %}
|
|
{% set country = get_country(item.country) %}
|
|
|
|
{% set nights = (item.to.date() - item.from.date()).days %}
|
|
<div class="grid-item text-end">{{ item.from.strftime("%a, %d %b %Y") }}</div>
|
|
<div class="grid-item text-end">{{ item.to.strftime("%a, %d %b") }}</div>
|
|
<div class="grid-item text-end">{% if nights == 1 %}1 night{% else %}{{ nights }} nights{% endif %}</div>
|
|
<div class="grid-item">{{ item.operator }}</div>
|
|
<div class="grid-item">{{ item.location }}</div>
|
|
<div class="grid-item">
|
|
{% if country %}
|
|
{{ country.flag }} {{ country.name }}
|
|
{% else %}
|
|
<span class="text-bg-danger p-2">
|
|
country code <strong>{{ item.country }}</strong> not found
|
|
</span>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid-item">
|
|
{% if g.user.is_authenticated and item.url %}
|
|
<a href="{{ item.url }}">{{ item.name }}</a>
|
|
{% else %}
|
|
{{ item.name }}
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid-item text-end">
|
|
{% if g.user.is_authenticated and item.price and item.currency %}
|
|
<span class="badge bg-info text-nowrap">{{ "{:,f}".format(item.price) }} {{ item.currency }}</span>
|
|
{% endif %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro flight_row(item) %}
|
|
{% set full_flight_number = item.airline + item.flight_number %}
|
|
{% set radarbox_url = "https://www.radarbox.com/data/flights/" + full_flight_number %}
|
|
<div class="grid-item text-end">{{ item.depart.strftime("%a, %d %b %Y") }}</div>
|
|
<div class="grid-item">{{ item.from }} → {{ item.to }}</div>
|
|
<div class="grid-item">{{ item.depart.strftime("%H:%M") }}</div>
|
|
<div class="grid-item">
|
|
{% if item.arrive %}
|
|
{{ item.arrive.strftime("%H:%M") }}
|
|
{% if item.arrive.date() != item.depart.date() %}+1 day{% endif %}
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid-item">{{ item.duration }}</div>
|
|
<div class="grid-item">{{ full_flight_number }}</div>
|
|
<div class="grid-item">
|
|
{% if g.user.is_authenticated %}
|
|
{{ item.booking_reference }}
|
|
{% else %}
|
|
<em>redacted</em>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid-item">
|
|
<a href="https://www.flightradar24.com/data/flights/{{ full_flight_number | lower }}">flightradar24</a>
|
|
| <a href="https://uk.flightaware.com/live/flight/{{ full_flight_number | replace("U2", "EZY") }}">FlightAware</a>
|
|
| <a href="{{ radarbox_url }}">radarbox</a>
|
|
</div>
|
|
<div class="grid-item text-end">
|
|
{% if item.distance %}
|
|
{{ "{:,.0f} km / {:,.0f} miles".format(item.distance, item.distance / 1.60934) }}
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid-item text-end">
|
|
{% if g.user.is_authenticated and item.price and item.currency %}
|
|
<span class="badge bg-info text-nowrap">{{ "{:,f}".format(item.price) }} {{ item.currency }}</span>
|
|
{% endif %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro train_row(item) %}
|
|
{% set url = item.url %}
|
|
<div class="grid-item text-end">{{ item.depart.strftime("%a, %d %b %Y") }}</div>
|
|
<div class="grid-item">
|
|
{% if g.user.is_authenticated and item.url %}<a href="{{ url }}">{% endif %}
|
|
{{ item.from }} → {{ item.to }}
|
|
{% if g.user.is_authenticated and item.url %}</a>{% endif %}
|
|
</div>
|
|
<div class="grid-item">{{ item.depart.strftime("%H:%M") }}</div>
|
|
<div class="grid-item">
|
|
{% if item.arrive %}
|
|
{{ item.arrive.strftime("%H:%M") }}
|
|
{% if item.depart != item.arrive and item.arrive.date() != item.depart.date() %}+1 day{% endif %}
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid-item">{{ ((item.arrive - item.depart).total_seconds() // 60) | int }} mins</div>
|
|
<div class="grid-item">{{ item.operator }}</div>
|
|
<div class="grid-item">
|
|
{% if g.user.is_authenticated %}
|
|
{{ item.booking_reference }}
|
|
{% else %}
|
|
<em>redacted</em>
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid-item">
|
|
{% for leg in item.legs %}
|
|
{% if leg.url %}
|
|
<a href="{{ leg.url }}">[{{ loop.index }}]</a>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
<div class="grid-item text-end">
|
|
{% if item.distance %}
|
|
{{ "{:,.0f} km / {:,.0f} miles".format(item.distance, item.distance / 1.60934) }}
|
|
{% endif %}
|
|
</div>
|
|
<div class="grid-item text-end">
|
|
{% if g.user.is_authenticated and item.price and item.currency %}
|
|
<span class="badge bg-info text-nowrap">{{ "{:,f}".format(item.price) }} {{ item.currency }}</span>
|
|
{% endif %}
|
|
</div>
|
|
{% endmacro %}
|