- scan_get_apps: scan views/ subdirectories instead of apps registry
- scan_viewset: scan submodules in views/ directory using pkgutil
- Fix model name extraction using removesuffix instead of fixed slice
- Add class ID deduplication to avoid duplicate ViewSets
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add dvadmin.test_app with BlogViewSet and ProductViewSet for testing
- Fix scan_viewset to exclude base classes (CustomModelViewSet, etc.)
- ScanModal: upgrade to el-collapse grouped table (collapsible ViewSet groups)
- Add toolbar: select all / deselect all
- Group header checkbox with indeterminate state
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- scan_get_apps: list all scannable Django apps under dvadmin
- scan_viewset: scan ViewSet actions and return preview data
- scan_batch_create: bulk create MenuButton records
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend:
- Improve menu title language detection (query param, user lang, Accept-Language)
- Fix user language update to use correct update_datetime field
- Add menu i18n sync management command
- Add migrations for company/miscprocurement i18n fields
Frontend:
- Clear tagsView cache on language switch to reload titles in new language
- Rename minio_storage.py to rustfs_storage.py
- Update all MINIO_* settings to RUSTFS_* in env.py
- Update file_list.py to import rustfs_upload_file
- Update test files and factory to use rustfs engine