lazyflat/web/routes
EiSiMo d13f9c5b6e feat(filter): Berlin-Bezirk filter in Einstellungen
Adds a collapsible 12-Bezirk checkbox list to the filter tab. The UI
speaks Bezirke; internally the match runs on the PLZ extracted from
flat.address and resolved to a dominant Bezirk via a curated 187-PLZ
map (berlin_districts.py).

- Migration 0011 adds user_filters.districts (CSV of selected names)
- Empty stored value = no filter = all Bezirke ticked in the UI.
  Submitting "all ticked" or "none ticked" both normalise to empty
  so the defaults and the nuclear state mean the same thing.
- When a Bezirk filter is active, flats with an unknown/unmapped PLZ
  are excluded — if the user bothered to narrow by district, sneaking
  in unplaceable flats would be the wrong default.
- Filter summary on the Wohnungen page shows "N Bezirke" so it's
  visible the filter is active.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 10:05:55 +02:00
..
__init__.py refactor: split web/app.py into routers 2026-04-21 19:27:12 +02:00
admin.py refactor: rename wohnungsdidi → lazyflat 2026-04-23 09:26:12 +02:00
auth.py refactor: split web/app.py into routers 2026-04-21 19:27:12 +02:00
bewerbungen.py refactor: rename wohnungsdidi → lazyflat 2026-04-23 09:26:12 +02:00
einstellungen.py feat(filter): Berlin-Bezirk filter in Einstellungen 2026-04-23 10:05:55 +02:00
internal.py refactor: split web/app.py into routers 2026-04-21 19:27:12 +02:00
wohnungen.py feat(filter): Berlin-Bezirk filter in Einstellungen 2026-04-23 10:05:55 +02:00