Commit graph

60 commits

Author SHA1 Message Date
22976868ce Automatically record new Geomob events in personal data 2026-10-01 12:46:33 +01:00
51b8bf6ecb Make SpaceDevs cache files readable by the web server 2026-09-30 19:13:02 +01:00
5dce485216 Preserve SpaceDevs caches on disk write failures 2026-09-30 16:45:21 +01:00
3f6ee4f2ec Respect SpaceDevs request limits and cooldowns 2026-09-30 16:41:13 +01:00
69992bebb7 Fix HTML entities in GWR advance ticket dates 2026-09-25 15:56:16 +01:00
e75acc3364 Suppress GWR busy-page error emails and add regression tests 2026-09-20 16:11:14 +01:00
e3eb3e5af8 Extract trip timezones and conference preparation into agenda modules 2026-09-09 12:03:51 +01:00
645957288d Include UK bank holidays on international trips 2026-08-31 16:18:03 +01:00
82023e16b3 Validate generated conference fields 2026-08-24 07:04:58 +02:00
9958632242 Handle structured conference metadata 2026-08-24 06:59:15 +02:00
8866b78202 Refine conference exploration day labels 2026-08-03 14:57:06 +01:00
6a601f5c14 Show inferred Bristol rail leg for Eurostar trips 2026-08-03 14:40:53 +01:00
3747e83ade Add timeline car import and CO2 trip stats 2026-08-03 13:52:45 +01:00
38dbb2b4e7 Add conference country filter 2026-07-09 10:14:14 +01:00
442ae98463 Various improvements 2026-07-09 10:12:57 +01:00
b7d95f26ec Add car journey route generator 2026-07-09 10:11:47 +01:00
1e9169b740 Show home marker for car journeys 2026-07-09 10:10:17 +01:00
086bc630c9 Proper handling for day train vs overnight train. 2026-07-08 09:12:12 +01:00
c6cb06b71e Add car journeys to trips 2026-07-08 09:09:48 +01:00
bc7a2e89d0 Various improvements 2026-06-30 12:31:51 +01:00
5f6cb57c2a Add travel booking and place import scripts 2026-06-24 13:22:51 +01:00
a87c9f993e Improve conference importer and series attendance 2026-06-22 13:08:32 +01:00
dbce9e5358 Improve conference importer date handling 2026-06-22 12:41:33 +01:00
57b2db205d Add conference series pages 2026-06-22 10:25:55 +01:00
098c7e4447 Support inexact conference dates
Closes: #188
2026-06-22 09:25:51 +01:00
fc82cf280a Switch FX rates to Frankfurter 2026-06-20 17:40:12 +01:00
a369c44ae9 Handle FX API usage limit fallback
Closes #211
2026-06-20 17:35:12 +01:00
76360c25f3 Refactor add-new-conference into agenda module 2026-03-20 10:36:08 +00:00
d9b08f3e5b Handle date-only transport times in trip page template 2026-03-07 13:25:56 +00:00
2a69904ef1 Update busy datetime parsing test for UTC-normalized output 2026-03-07 13:11:57 +00:00
0c88ad4638 Validate weekends year range and fix trip page unbooked-flight helper call 2026-03-07 13:10:33 +00:00
f9b79d5a51 Fix trip map unbooked flight pins and timezone-safe busy date comparisons 2026-03-07 12:58:38 +00:00
574b4feb1f trip: redesign itinerary display and add trip list macro
- Add render_trip_element macro to macros.html; use it in trip_item for
  the trip list page, giving a consistent one-line-per-element format
  with emoji, route, times, duration, operator, distance, and CO₂
- Redesign trip_page.html itinerary: day headers use date-only (no year),
  condense check-out to a single accent line, show time-only on transport
  cards, humanise duration (Xh Ym), km-only distance, add CO₂ for all
  transport modes, fix seat display for integer seat values
- Fix UndefinedError on /trip/past caused by absent 'arrive' key (Jinja2
  Undefined is truthy) and date-only depart/arrive fields (no .date())
- Improve mobile map layout: text column before map in HTML order, reduce
  mobile map heights, hide toggle button on mobile
- Add trips.css with design system (Playfair Display / Source Sans 3 /
  JetBrains Mono, navy/gold/amber palette, card variants by type)
- Add tests/test_trip_list_render.py covering the rendering edge cases

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 09:15:51 +00:00
61e17d9c96 Track dates of English school holidays
Fixes #168
2026-02-21 18:05:19 +00:00
a275683f90 Keep active crewed missions on launches page 2026-02-21 16:00:52 +00:00
f22772d12d Move trip new-country filtering into stats 2026-01-15 22:53:17 +00:00
8a0df48a73 Fix trip stats new-country counting 2026-01-15 22:43:22 +00:00
ebceb4cb51 Improve space launch email, add tests. 2025-08-12 12:13:27 +01:00
e6327780aa Add comprehensive test coverage for 8 modules
Increases overall test coverage from 53% to 56% by adding tests for:
- accommodation.py (60% → 100%)
- birthday.py (24% → 100%)
- calendar.py (19% → 100%)
- carnival.py (33% → 100%)
- domains.py (75% → 100%)
- events_yaml.py (50% → 96%)
- fx.py (14% → 21% for tested functions)
- sun.py (55% → 100%)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 11:39:49 +02:00
7e506de7b6 Add comprehensive tests for Schengen area functionality
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 07:34:06 +02:00
fac73962b2 Add comprehensive tests and fix geomob URL bug
- Add complete test suite for geomob module (19 tests)
- Add comprehensive Bristol waste collection tests
- Fix geomob_email() double slash assertion bug for HTTPS URLs
- Fix utils.py human_readable_delta days pluralization
- Update agenda tests with better coverage

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 01:31:19 +02:00
88ccd79cb2 Add comprehensive tests for conference module.
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 01:14:24 +02:00
ea712b2063 Add tests for GWR. 2025-07-20 01:11:07 +02:00
567f3b0208 Refactor Airbnb parsing into reusable library
- Move all parsing logic from parse_airbnb.py to agenda/airbnb.py
- Update parse_airbnb.py to use the new library module
- Add comprehensive tests in tests/test_airbnb.py covering all functions
- Maintain backward compatibility for the command-line interface

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 10:35:26 +02:00
29d5145b87 Refactor get_location_for_date to use trip data directly
Simplify the location tracking function by extracting travel data directly
from trip objects instead of requiring separate YAML file parameters.

Changes:
- Remove airport, train, and ferry location helper functions that required
  separate YAML data lookups
- Update get_location_for_date signature to only take target_date and trips
- Extract flight/train/ferry details directly from trip.travel items
- Use embedded airport/station/terminal objects from trip data
- Remove YAML file parsing from weekends function
- Update test calls to use new simplified signature

This eliminates duplicate data loading and simplifies the API while
maintaining all existing functionality.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 12:08:19 +02:00
e370049bcb Add train and ferry support to location tracking
- Add helper functions for train and ferry location extraction
- Update get_location_for_date to consider trains and ferries alongside flights
- Parse stations.yaml and ferry_terminals.yaml for location data
- Handle UK vs international locations consistently for all transport modes
- Add comprehensive tests for new train and ferry location helpers
- Format code with black for consistent style

Now tracks complete travel history including flights, trains, ferries, and accommodation for accurate location determination.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 11:10:58 +02:00
f89d984623 Refactor tests: break down single test into focused, modular tests
- Add pytest fixtures for shared data to avoid reparsing YAML files
- Split large test into specific test functions for better modularity
- Add comprehensive test coverage for busy_event, location tracking, and helper functions
- Improve test performance with session-scoped fixtures
- Enable individual test execution with pytest -k

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 09:04:05 +02:00
02350ef4db Use None in place of "Bristol" for home
Also fix some more location bugs.
2025-07-16 07:55:20 +02:00
3ad11b070a More tests 2025-07-16 06:54:35 +02:00
9dd033ba77 Fix location tracking for all remaining weekend test failures
Expand return-home heuristic to cover more countries and reorganize logic
to prioritize trip-based location detection over individual travel data.

Key changes:
1. Add Balkan countries (GR, AL, XK, HR, etc.) to European heuristic
2. Add major international countries (US, CA, IN, JP, etc.) to heuristic
3. Change condition from >1 day to >=1 day for faster return detection
4. Move trip heuristic check before individual flight/accommodation lookup

This fixes cases where stopovers or connections (like Kosovo→Albania on
July 1) were overriding the trip-based "return home" logic. Now correctly
detects return home from all types of trips including Balkan and
international destinations.

All weekend location tests now pass - ensures locations show "Bristol"
when free (no events) or show trip locations when traveling.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 06:54:35 +02:00