← Main Menu All manuals Tips & Tricks for this screen IM2

Tables

Tables
Technical Spec Ver 1 Updated 2026-09-10 Matches the live screen

Tables — Technical Spec

app/im2.py, template app/templates/tables.html. Split from the Settings screen 2026-09-10 (Dave: "separate system settings and tables into two menu items and make them different security options").

Routes

MethodPathAuthNotes
GET/tablesrequire_action(user, 'tables_edit')Renders one card per LIST_SETTINGS key.
GET/settingsrequire_action(user, 'settings_edit')Non-list settings only.
POST/api/settingsper key: list keys need tables_edit, all others need settings_editShared save endpoint for both screens. Returns {ok:true, changed:N}.

Both GETs call one builder, _settings_page(request, user, kind), so field metadata, pre-fill of unset lists and the updated_by/updated_at stamps stay identical.

Permissions

Storage

Unchanged: app_settings(key pk, value, updated_by, updated_at), resolution table-over-code in settings(), audit row per change with source='settings'. LIST_SETTINGS = uoms(no column), item_groups→item_group, gen_locs→gen_loc, count_groups→count_group, ro_classes(no column), holidays(no column). Keys with a column and no saved row are pre-filled from list_values(conn, key, column).

Smoke test

/opt/im2/verify_routes.sh now covers /tables and /perms alongside /settings.