You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix 10 issues found in high-effort review of main (#141)
* Fix 10 issues found in high-effort review of main
Backend:
- SQLAlchemy: coerce relationship (m2m) filter values to int for integer
pks (500 on PostgreSQL/asyncpg) and reject unsupported relation lookups
with 422 instead of silently collapsing them to pk equality
- PonyORM: only rewrite <relation>_<pk> filter keys when the base attribute
is a real relation, so plain columns ending in _id filter correctly
- PonyORM: run list search as a single OR'd WHERE clause instead of
materializing every matching row once per search field
- Flask: pass through HTTPExceptions with an attached response, preserve
error headers on JSON error responses, log unhandled errors with traceback
- Filtering: text columns support IS NULL again via __exact=null while
substring lookups keep the literal string
Frontend:
- only coerce "true"/"false" strings to booleans for boolean widgets, so
text content that spells a boolean survives the change form
- treat fields without a change widget as known non-date (null) instead of
falling back to shape-based date detection
- transformDataFromServer takes the model configuration directly, removing
the duplicated getChangeWidgetTypes incantation at every call site
* Add coverage for relation-filter rejection and Flask error passthrough
Covers the three new defensive branches: the service-layer 422 for
substring lookups on m2m filter fields, the SQLAlchemy adapter's loud
failure for unsupported relation conditions, and the Flask handler's
passthrough of HTTPExceptions with an attached response (plus header
preservation on JSON error responses).
0 commit comments