core: кастомные страницы ошибок 404/403/500/503 + режим техработ

Единый стиль портала (логотип, тема, кнопки) через error_base.html:
- 404 — страница не найдена
- 403 — доступ запрещён (+ ссылка на IT-поддержку)
- 500 — внутренняя ошибка (автономна: без request/context-процессоров)
- 503 — технические работы

MaintenanceModeMiddleware: при MAINTENANCE_MODE=True отдаёт 503 всем, кроме
суперпользователей и путей входа/админки/статики (чтобы админ мог войти и
выключить режим). По умолчанию выключен — поведение не меняется.

- tests: рендер всех шаблонов, кастомный 404, режим техработ вкл/выкл/супер

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-09-21 23:54:34 +03:00
parent 626aeebbb7
commit 0057f367a2
8 changed files with 180 additions and 0 deletions
+2
View File
@@ -32,6 +32,7 @@ CARTO_BASEMAPS_API_KEY = env('CARTO_BASEMAPS_API_KEY', default='')
# ACORE → PNMS identity sync (portal_connector)
PNMS_BASE_URL = env('PNMS_BASE_URL', default='')
PNMS_ACORE_TOKEN = env('PNMS_ACORE_TOKEN', default='')
MAINTENANCE_MODE = env.bool('MAINTENANCE_MODE', default=False) # режим техработ: всем 503, кроме суперпользователей
PNMS_SYNC_ENABLED = env.bool('PNMS_SYNC_ENABLED', default=False)
# ACORE → MSORTER: только сотрудники в группе «Почта» (админы UI — «Администратор почты»).
@@ -121,6 +122,7 @@ MIDDLEWARE = [
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'core.middleware.MaintenanceModeMiddleware', # режим техработ (503), после Auth
'apps.employees.middleware.TwoFactorMiddleware', # обязательная 2FA для staff (после Auth)
'core.middleware.DevAccessPreviewMiddleware',
'core.middleware.PortalSectionAccessMiddleware', # барьер разделов (после preview)