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>
This commit is contained in:
parent
fcd0e9c1cd
commit
9dd033ba77
2 changed files with 35 additions and 52 deletions
|
|
@ -1,5 +1,6 @@
|
|||
from datetime import date, datetime, timedelta
|
||||
|
||||
import agenda.busy
|
||||
import agenda.travel as travel
|
||||
import agenda.trip
|
||||
from web_view import app
|
||||
|
|
@ -17,34 +18,15 @@ def test_get_location_for_date() -> None:
|
|||
busy_events = agenda.busy.get_busy_events(start, app.config, trips)
|
||||
weekends = agenda.busy.weekends(start, busy_events, trips, data_dir)
|
||||
|
||||
# Debug the specific failing case
|
||||
for weekend in weekends:
|
||||
weekend_date = weekend["date"]
|
||||
if weekend_date == date(2023, 4, 29):
|
||||
print(f"\nDEBUG April 29-30, 2023:")
|
||||
print(f"Saturday {weekend_date}: location={weekend['saturday_location']}, events={weekend['saturday']}")
|
||||
print(f"Sunday {weekend_date + timedelta(days=1)}: location={weekend['sunday_location']}, events={weekend['sunday']}")
|
||||
|
||||
# Find trips around this time
|
||||
print("\nTrips around this time:")
|
||||
for trip in trips:
|
||||
if trip.start and abs((trip.start - weekend_date).days) < 60:
|
||||
print(f" {trip.start} to {trip.end}: {trip.title}")
|
||||
|
||||
for weekend in weekends:
|
||||
for day in "saturday", "sunday":
|
||||
if not (weekend[day + "_location"][0] == "Bristol" or bool(weekend[day])):
|
||||
weekend_date = weekend["date"]
|
||||
day_date = weekend_date if day == "saturday" else weekend_date + timedelta(days=1)
|
||||
print(f"FAILING: {day_date} ({day}): location='{weekend[day + '_location'][0]}', events={len(weekend[day])}")
|
||||
|
||||
assert weekend[day + "_location"][0] == "Bristol" or bool(weekend[day])
|
||||
|
||||
# Parse YAML files once for the test
|
||||
bookings = travel.parse_yaml("flights", data_dir)
|
||||
accommodations = travel.parse_yaml("accommodation", data_dir)
|
||||
airports = travel.parse_yaml("airports", data_dir)
|
||||
|
||||
for weekend in weekends:
|
||||
for day in "saturday", "sunday":
|
||||
assert weekend[day + "_location"][0] == "Bristol" or bool(weekend[day])
|
||||
|
||||
# Debug the April 29 issue
|
||||
april_29_location = agenda.busy.get_location_for_date(
|
||||
date(2023, 4, 29), trips, bookings, accommodations, airports
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue