Leopoldadmin
3d3133a7d0
feat(core): register TaxRate model
2026-07-04 00:23:35 +00:00
Leopoldadmin
88b4e614ae
feat(core): add alembic migration for tax_rates table
2026-07-04 00:23:15 +00:00
Leopoldadmin
ff5fa179e8
feat(core): add tax rate routes
2026-07-04 00:23:14 +00:00
Leopoldadmin
1c209371a8
feat(core): add tax rate service
2026-07-04 00:23:14 +00:00
Leopoldadmin
5fce677096
feat(core): add tax rate schemas
2026-07-04 00:23:14 +00:00
Leopoldadmin
1cb0b5ddfe
feat(core): add TaxRate model
2026-07-04 00:23:13 +00:00
Leopoldadmin
74a81b147c
feat(core): add currency and tax i18n keys (en)
2026-07-04 00:22:27 +00:00
Leopoldadmin
b26e2e3c5d
feat(core): add currency and tax i18n keys (de)
2026-07-04 00:22:26 +00:00
Leopoldadmin
d3033056fd
feat(core): register currency router in main.py
2026-07-04 00:22:08 +00:00
Leopoldadmin
7d23815856
feat(core): register currency routes
2026-07-04 00:22:07 +00:00
Leopoldadmin
61a53ff794
feat(core): register Currency model
2026-07-04 00:22:07 +00:00
Leopoldadmin
c45d93038d
feat(core): add alembic migration for currencies table
2026-07-04 00:21:43 +00:00
Leopoldadmin
592f890817
feat(core): add currency routes
2026-07-04 00:21:42 +00:00
Leopoldadmin
725c4413f5
feat(core): add currency service
2026-07-04 00:21:42 +00:00
Leopoldadmin
a7e8118549
feat(core): add currency schemas
2026-07-04 00:21:42 +00:00
Leopoldadmin
65c22f8066
feat(core): add Currency model
2026-07-04 00:21:41 +00:00
Leopoldadmin
dfa4a82e8d
feat(core): add address i18n keys (en)
2026-07-04 00:20:46 +00:00
Leopoldadmin
1e74efd2b4
feat(core): add address i18n keys (de)
2026-07-04 00:20:46 +00:00
Leopoldadmin
bc0aae0325
feat(core): add address fields to ContactForm
2026-07-04 00:20:30 +00:00
Leopoldadmin
f31baa444a
feat(core): add address fields to CompanyForm
2026-07-04 00:20:29 +00:00
Leopoldadmin
ec0353f469
feat(core): add address fields to contact service serialization and CRUD
2026-07-04 00:19:23 +00:00
Leopoldadmin
11527c4c95
feat(core): add address fields to company service serialization and CRUD
2026-07-04 00:18:45 +00:00
Leopoldadmin
59c787ba66
feat(core): add address fields to contact schemas
2026-07-04 00:15:25 +00:00
Leopoldadmin
01556534f2
feat(core): add address fields to company schemas
2026-07-04 00:15:25 +00:00
Leopoldadmin
c098180fa1
feat(core): add alembic migration for address fields
2026-07-04 00:15:24 +00:00
Leopoldadmin
36fcb33d7e
feat(core): add address fields to Contact model
2026-07-04 00:15:23 +00:00
Leopoldadmin
74284b3359
feat(core): add address fields to Company model
2026-07-04 00:15:22 +00:00
Leopoldadmin
997d60138a
Fix route: use model_fields_set to pass _UNSET when role_id not sent, None when explicitly null
2026-07-03 20:43:55 +00:00
Leopoldadmin
d7691b3d70
Fix role_id sentinel bug: use _UNSET sentinel so None explicitly clears FK, missing param leaves unchanged
2026-07-03 20:43:00 +00:00
Leopoldadmin
2deb7ed21c
Problem 3/5: Add i18n keys for systemPermissions, pluginPermissions, noPermissions, userDeleted, deleteUserConfirm (en)
2026-07-03 20:37:46 +00:00
Leopoldadmin
5991d79324
Problem 3/5: Add i18n keys for systemPermissions, pluginPermissions, noPermissions, userDeleted, deleteUserConfirm (de)
2026-07-03 20:26:26 +00:00
Leopoldadmin
0d3550ec86
Problem 1+5: Dynamic roles dropdown via useRoles(), delete button with ConfirmDialog, fixed create form
2026-07-03 20:11:04 +00:00
Leopoldadmin
493d99aff2
Problem 3/4: Replace hardcoded ALL_PERMISSIONS with usePermissions API call, group by category
2026-07-03 20:07:53 +00:00
Leopoldadmin
68b5153139
Problem 3/4: Add usePermissions hook + PermissionItem/PermissionsResponse interfaces
2026-07-03 20:02:32 +00:00
Leopoldadmin
792f0a464d
Problem 3/4: Add GET /api/v1/roles/permissions endpoint returning system + plugin permissions
2026-07-03 19:50:47 +00:00
Leopoldadmin
a799a3d0e6
Problem 2: Remove dead System nav item from Settings sidebar
2026-07-03 19:50:18 +00:00
Leopoldadmin
22e8756fa4
Problem 1: Alembic migration 0005 — add role_id FK column to users table
2026-07-03 19:50:08 +00:00
Leopoldadmin
762aac832f
Problem 1: Pass role_id through users route create/update, include in responses
2026-07-03 19:49:48 +00:00
Leopoldadmin
8a2468ee7d
Problem 1: Add role_id support to user_service create/update/_user_to_dict
2026-07-03 19:49:03 +00:00
Leopoldadmin
6986fcfaae
Problem 1: Add role_id to UserCreate/UserUpdate/UserResponse schemas
2026-07-03 19:48:48 +00:00
Leopoldadmin
530cfd485f
Problem 1: Add role_id FK column to User model (references roles.id, nullable, ondelete SET NULL)
2026-07-03 19:48:39 +00:00
Leopoldadmin
5138590277
fix(plugin): add version comparison and migration run on version mismatch
...
Bug 6: install() and activate() now compare the plugin's manifest
version with the stored DB version. If they differ, migrations are
re-run to bring the schema up to date and the DB version field is
updated. This ensures that updating a plugin with a new manifest
version triggers the migration runner automatically.
2026-07-03 16:56:30 +00:00
Leopoldadmin
f9508d17de
fix(plugin): add GET and PATCH /api/v1/plugins/{name}/config endpoints
...
Bug 4: Plugin config field existed but had no API endpoints. Added
GET /api/v1/plugins/{name}/config to retrieve config as JSON and
PATCH /api/v1/plugins/{name}/config to update it. Uses PluginConfigUpdate
Pydantic model for request validation.
2026-07-03 16:49:57 +00:00
Leopoldadmin
cbeed4b26d
fix(plugin): convert dependency errors to HTTPException 400, add config API
...
Bug 3: install_plugin() and activate_plugin() now catch dependency-related
ValueErrors and raise HTTPException 400 with the error detail.
Bug 4: Added get_plugin_config() and update_plugin_config() methods to
the service layer for the plugin config API endpoints.
2026-07-03 16:48:10 +00:00
Leopoldadmin
826cf69c9a
fix(plugin): add dependency resolution and permission soft-check
...
Bug 3: install() and activate() now verify that declared dependencies
are installed/active before proceeding. Raises ValueError which the
service layer converts to HTTPException 400.
Bug 5: activate() now performs a soft permission check — logs warnings
for declared permissions not found in any discovered plugin.
2026-07-03 16:45:49 +00:00
Leopoldadmin
94a5bf105c
fix(plugin): track routes by object identity to prevent cross-plugin removal
...
Bug 2: deactivate() removed routes by path-matching, which caused
routes from other plugins sharing the same prefix (e.g. /api/v1/dms)
to be removed when deactivating one plugin. Now tracks actual route
objects by identity in _mounted_routes and removes only those specific
objects during deactivation.
2026-07-03 16:25:31 +00:00
Leopoldadmin
18a0861a96
fix(plugin): discover MailPlugin in builtins __init__
...
Bug 1: MailPlugin was missing from imports and __all__, preventing
the plugin registry from discovering the mail plugin at startup.
2026-07-03 16:19:04 +00:00
Leopoldadmin
2968381a23
docs: update test_report.md with Settings Plugins & Roles API implementation evidence
2026-07-03 15:25:55 +00:00
Leopoldadmin
962ac66f72
feat: add plugin and role translation keys to en.json
2026-07-03 15:24:01 +00:00
Leopoldadmin
dda972187a
feat: add plugin and role translation keys to de.json
2026-07-03 15:24:00 +00:00