Дашборд теперь собирается из виджетов (приветствие, метрики, мои задачи,
новости, быстрый доступ). Сотрудник настраивает состав и порядок под себя
(вкл/выкл + перемещение ↑↓), а для тех, кто не настраивал, действует набор
по умолчанию по типу локации (Офис/Аптека/Склад), задаётся в админке.
- core/dashboard.py: реестр виджетов + сборка раскладки
- core/models/dashboard.py: DashboardLayout (персональная), DashboardDefaults
(синглтон по типу локации)
- core/views.py: dashboard_view через реестр + dashboard_customize_view
- templates/pages/dashboard_widgets/*: виджеты-партиалы; dashboard.html —
цикл по виджетам; dashboard_customize.html — настройка (HTMX + ↑↓)
- admin: DashboardDefaults (чекбоксами по локации) + read-only раскладки;
пункт меню «Дашборд по умолчанию»
- core/tests_dashboard.py: 11 тестов (логика раскладки + view)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- ConnectorConfig(onlyoffice) + миграция, подсказка по extra_config в админке.
- /documents/onlyoffice/ в whitelist 2FA — Document Server забирает файл
без сессии портала (доступ по подписанному file-token + JWT DS).
- Страница редактора и кнопки «открыть в OnlyOffice» в браузере документов.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- AcoreDiscoverRunner собирает tests/tests_* всех локальных приложений
(manage.py test находил 38 тестов из ~466 — теперь все).
- CACHES на Redis (отдельная DB от Celery) + обязательный requirepass
в production, SECURE_HSTS_PRELOAD.
- Фикс stored-XSS в админке: format_html вместо mark_safe + f-string.
- Утилиты безопасности/тестов, шифрование полей.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Дропдаун-фильтры unfold рендерятся как форма и не применяются сами по
выбору — добавлен list_filter_submit=True (кнопка «Застосувати»), иначе
фильтр «не отрабатывал».
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Фильтры справочников (Directory, Системи доступу) вынесены из боковой
панели наверх в тулбар (unfold list_filter_sheet=False), кастомные фильтры
переведены на unfold DropdownFilter — выпадающие списки вместо списка ссылок.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Системы доступа (1С, почта, CRM…) — записи справочника Directory
(access_system), которые выбираются в заявке на найм. Раньше их можно было
редактировать только внутри общего «Довідники» с фильтром — неочевидно.
- AccessSystem: proxy над Directory (фильтр по access_system), свой раздел
админки со списком/добавлением; directory_type проставляется автоматически
- SILENCED_SYSTEM_CHECKS=['models.E016'] — гасит ложноположительный E016
(proxy наследует treenode-индекс по _path; на реальной таблице всё корректно)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- ad_connector: страницы управления OU и импорта из AD, поле ad_ou_dn
в Directory, ADSyncLog; расширение sync-сервиса и клиента
- mattermost_connector: personal access token шифруется (Fernet,
token_service), бот-сервис, команды создания бота и синхронизации;
публикация постов в каналы. Тесты (19)
- core: ConnectorConfig, Directory (ad_ou_dn), обновления админки
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- ad_connector: restrict provisioning to office employees
(user_location_type='office') in sync service, signals and command;
disable AD account on transfer out of office, re-enable on return
- ad_connector: /ad-mapping/ page (staff only) — match office employees
to AD accounts with suggestions by email/login/full name, link/unlink/
create actions, list of unmatched domain accounts; sidebar nav item
- core: auto-rebuild treenode Directory tree (_path/_depth) after
import-export imports and post_migrate; "rebuild tree" button in
DirectoryAdmin and rebuild_directory_tree management command
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>