Creating a new entity called a trip. This will group together any travel accommodation and conferences that happen together on one trip. A trip is assumed to start when leaving home and finish when returning home. The start date of a trip in is the trip ID. The date is written in ISO format. This assumes there cannot be multiple trips one one day. This assumption might be wrong, for example a morning day trip by rail, then another trip starts in the afternoon. I can change my choice of using dates as trip IDs if that happens. Sometimes during the planning of a trip the start date is unknown. For now we make up a start date, we can always change it later. If we use the start date in URLs then the URLs will change. Might need to keep a file of redirects, or could think of a different style of identifier. Trip ID have been added to accommodation, conferences, trains and flights. Later there will be a trips.yaml with notes about each trip.
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.6 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 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">{{ item.topic }}</div>
 | 
						|
  <div class="grid-item">{{ item.location }}</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 item.url %}
 | 
						|
      <a href="{{ item.url }}">{{ item.name }}</a>
 | 
						|
    {% else %}
 | 
						|
      {{ item.name }}
 | 
						|
    {% endif %}
 | 
						|
  </div>
 | 
						|
{% endmacro %}
 | 
						|
 | 
						|
{% macro flight_row(item) %}
 | 
						|
  <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">{{ item.airline }}{{ item.flight_number }}</div>
 | 
						|
  <div class="grid-item">{{ item.booking_reference }}</div>
 | 
						|
{% endmacro %}
 | 
						|
 | 
						|
{% macro train_row(item) %}
 | 
						|
  <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.arrive - item.depart).total_seconds() // 60) | int }} mins</div>
 | 
						|
  <div class="grid-item">{{ item.operator }}</div>
 | 
						|
  <div class="grid-item">{{ item.booking_reference }}</div>
 | 
						|
{% endmacro %}
 |