Commit graph

672 commits

Author SHA1 Message Date
Edward Betts 6d899113ce Add map fixture. 2025-11-13 06:42:12 +00:00
Edward Betts 178c669b01 Fix country name box wrapping. 2025-11-03 19:57:16 +00:00
Edward Betts 7266568010 Bug fix 2025-11-03 19:39:28 +00:00
Edward Betts 8a9126b729 Remove unused code. 2025-11-03 19:31:14 +00:00
Edward Betts e82ca9d9e9 The pandas module has type info. 2025-11-03 19:30:57 +00:00
Edward Betts 83e1406ab4 Fix type error. 2025-11-03 19:30:29 +00:00
Edward Betts a7ec33c500 warn if hotel/accommodation coords to far apart 2025-11-03 19:29:42 +00:00
Edward Betts 4364c95f25 Move accommodation max distance to config 2025-11-03 19:14:27 +00:00
Edward Betts a8652d881c Show country flags in Schengen compliance history 2025-11-03 13:05:09 +00:00
Edward Betts 5d5ce61da4 Hide compliance status on none-Schengen trips. 2025-11-03 12:59:12 +00:00
Edward Betts 7e3f9a9b1e Show trip stats in reverse chronological order. 2025-11-03 12:36:41 +00:00
Edward Betts b4126d04f8 Move two functions to agenda/trip.py 2025-11-03 12:36:13 +00:00
Edward Betts f718535624 Adjust code formatting. 2025-11-03 12:21:59 +00:00
Edward Betts 4143190a8a Accommodation must be within 5km of conference 2025-10-30 17:30:27 +00:00
Edward Betts 623e20c273 Add days until column to birthdays table 2025-10-09 20:57:46 +01:00
Edward Betts d4b43d70ba Add description field to Conference class. 2025-10-06 10:54:01 +01:00
Edward Betts c6d39ace60 Trip: fix total_distance undercount
Previously Trip.total_distance returned None if any travel leg lacked a
distance, which led to undercounted trip stats (less than flight + train
totals).

Now it accumulates only distances that are present and ignores
missing/falsy values.  The method returns a float and yields 0.0 when no
distances are available.  Docstring updated accordingly.

Fixes #185
2025-08-30 20:46:03 +01:00
Edward Betts 4ee2492e5b Not using Claude Code any more 2025-08-30 20:36:55 +01:00
Edward Betts 09eb44b55d Send alerts for all space launch test flights
In addition to the configured FOLLOW_LAUNCHES, also send emails for any
launch whose mission.type == "Test Flight" even if its slug is not in
FOLLOW_LAUNCHES.

Fixes #192.
2025-08-12 23:23:29 +01:00
Edward Betts 97c0531a22 Send at most one grouped birthday reminder email
Collects birthdays in the next 7 days, groups them into sections
(Today/Tomorrow/In N days), and sends a single email.

Fixes #201.
2025-08-12 22:33:52 +01:00
Edward Betts ebceb4cb51 Improve space launch email, add tests. 2025-08-12 12:13:27 +01:00
Edward Betts 808f5c1d22 Better email alerts for space launch updates
Fixes #200
2025-08-12 11:36:15 +01:00
Edward Betts fd7488bd04 Move format_launch_changes to agenda.thespacedevs 2025-08-12 10:59:56 +01:00
Edward Betts bc4d956042 Types 2025-08-01 06:21:22 +01:00
Edward Betts 8901bc9bbb Bug fix 2025-08-01 06:21:22 +01:00
Edward Betts bc8391a5d5 Unicode arrows 2025-07-25 23:17:49 +01:00
Edward Betts 88d10af3f5 New travel type: coach
Fixes #149
2025-07-25 18:16:34 +01:00
Edward Betts 51139a1a70 Fix single day events showing as two days on calendar 2025-07-24 23:35:01 +01:00
Edward Betts 8a9bad4bba Bug fix calendar next/prev buttons. 2025-07-24 23:28:30 +01:00
Edward Betts 0e769c3de6 Replace fullcalendar with TOAST UI Calendar
Fixes #146
2025-07-24 23:10:23 +01:00
Edward Betts 3dd322475f Show ferry detail on individual trip page
Closes: #154
2025-07-24 22:30:31 +01:00
Edward Betts 672ca4b849 Generalize and enhance yearly statistics
The accommodation page has been updated to provide a more comprehensive and dynamic view of travel statistics.

Previously, the page only displayed hard-coded statistics for total nights away and abroad for the year 2024. This required manual updates each year and didn't provide historical context.

This commit introduces the following changes:

*   **Dynamically Calculate Yearly Stats:** The `accommodation_list` view in `web_view.py` now calculates statistics for every year found in the accommodation data. It correctly handles stays that span across multiple years.
*   **Display All Years:** The `accommodation.html` template now iterates through a list of all calculated yearly stats, displaying a summary for each year automatically.
*   **Add Percentage of Year:** The template also calculates and displays what percentage of the year the "total nights" and "nights abroad" represent. This includes logic to correctly account for leap years (366 days) for an accurate calculation.

These changes make the statistics more informative and ensure the page remains relevant over time without needing further manual code adjustments.
2025-07-23 22:52:22 +01:00
Edward Betts c5e88727ae Command to get airport YAML
Fixes #199
2025-07-22 21:27:51 +01:00
Edward Betts 72940be3d2 Fix flightradar24 URL to use IATA code over ICAO
Fixes #165
2025-07-21 07:34:47 +02:00
Edward Betts 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
Edward Betts 8db777ae8b Update development guidelines for type annotations
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-20 07:35:48 +02:00
Edward Betts 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
Edward Betts 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
Edward Betts 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
Edward Betts ea712b2063 Add tests for GWR. 2025-07-20 01:11:07 +02:00
Edward Betts 412d8c7ba7 Chronological order validation for YAML 2025-07-20 01:10:56 +02:00
Edward Betts 4b8c29a8d0 Update airbnb parse previous airbnb stays. 2025-07-18 11:08:34 +02:00
Edward Betts 86bea456b1 Generate trip name from accommodation locations. 2025-07-18 11:07:52 +02:00
Edward Betts 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
Edward Betts 6b3e8e31eb Add airbnb trip detail parser. 2025-07-18 09:55:35 +02:00
Edward Betts 155569419a Code formatting with black 2025-07-18 09:47:02 +02:00
Edward Betts fcc2cdd6d4 More instructions for CLAUDE 2025-07-18 09:46:35 +02:00
Edward Betts ac16bb9dab Update CLAUDE.md with comprehensive project overview
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 14:27:56 +02:00
Edward Betts d4b516d861 Add development guidelines in CLAUDE.md
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 14:25:29 +02:00
Edward Betts 13bb753a0b Add dynamic meteor shower calculations using PyEphem
- Replace hardcoded 2025 data with astronomically calculated dates
- Use solar longitude to determine precise meteor shower peak dates
- Calculate real-time moon phases for accurate viewing conditions
- Support for any year with automatic date calculations
- Include parent body information and meteor velocities
- Remove caching layer for real-time calculations

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 13:44:40 +02:00