From 4d5e4cf86dda7eb411cc0408e6cae82b476d9292 Mon Sep 17 00:00:00 2001 From: erjemin Date: Mon, 14 Sep 2026 23:44:16 +0300 Subject: [PATCH] =?UTF-8?q?add:=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20(3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hypn0/hypn0_site/tests.py | 55 +- hypn0/templates/_error/400.html | 481 ++++++++++++++++++ hypn0/templates/_error/401.html | 481 ++++++++++++++++++ hypn0/templates/_error/403.html | 481 ++++++++++++++++++ hypn0/templates/_error/413.html | 481 ++++++++++++++++++ hypn0/templates/_error/429.html | 481 ++++++++++++++++++ hypn0/templates/_error/500.html | 481 ++++++++++++++++++ hypn0/templates/_error/502.html | 481 ++++++++++++++++++ hypn0/templates/_error/503.html | 481 ++++++++++++++++++ hypn0/templates/_error/504.html | 481 ++++++++++++++++++ .../_error/under_reconstruction.html | 481 ++++++++++++++++++ 11 files changed, 4860 insertions(+), 5 deletions(-) create mode 100644 hypn0/templates/_error/400.html create mode 100644 hypn0/templates/_error/401.html create mode 100644 hypn0/templates/_error/403.html create mode 100644 hypn0/templates/_error/413.html create mode 100644 hypn0/templates/_error/429.html create mode 100644 hypn0/templates/_error/500.html create mode 100644 hypn0/templates/_error/502.html create mode 100644 hypn0/templates/_error/503.html create mode 100644 hypn0/templates/_error/504.html create mode 100644 hypn0/templates/_error/under_reconstruction.html diff --git a/hypn0/hypn0_site/tests.py b/hypn0/hypn0_site/tests.py index 8e3f613..bd6cfa3 100644 --- a/hypn0/hypn0_site/tests.py +++ b/hypn0/hypn0_site/tests.py @@ -1444,12 +1444,30 @@ class BlogPostModelAndAdminTests(BaseMediaTestCase): self.assertEqual(resp_list.status_code, 200) self.assertContains(resp_list, "Центр отладки страниц ошибок") self.assertContains(resp_list, "/_error/404") + self.assertContains(resp_list, "готов к просмотру") - # 2. Предпросмотр конкретной ошибки 404 - resp_404 = self.client.get("/_error/404") - self.assertEqual(resp_404.status_code, 404) - self.assertContains(resp_404, "Гипноузел не обнаружен", status_code=404) - self.assertContains(resp_404, "СБОЙ МАТРИЦЫ // КОД? 404", status_code=404) + # 2. Проверка каждого кода ошибки + expected_checks = [ + ("400", 400, "Сбой ментального протокола"), + ("401", 401, "Требуется ментальная идентификация"), + ("403", 403, "Отказано бюрократом 24-го уровня"), + ("404", 404, "Гипноузел не обнаружен"), + ("413", 413, "Перегрузка сенсорных каналов"), + ("429", 429, "Слишком много мыслей в секунду"), + ("500", 500, "Критический перегрев неокортекса"), + ("502", 502, "Контейнер потерял сознание"), + ("503", 503, "Плановый сеанс гипнотерапии"), + ("504", 504, "Разрыв астральной связи"), + ("under_reconstruction", 200, "Сектор на реконструкции"), + ] + + for code, expected_status, text_fragment in expected_checks: + resp = self.client.get(f"/_error/{code}") + self.assertEqual(resp.status_code, expected_status, f"Ошибка при проверке кода {code}") + self.assertContains(resp, text_fragment, status_code=expected_status) + self.assertContains(resp, "return-btn", status_code=expected_status) + self.assertContains(resp, "logo-hypn0.svg", status_code=expected_status) + self.assertContains(resp, "thinking.svg", status_code=expected_status) # 3. Предпросмотр с суффиксом .html resp_404_html = self.client.get("/_error/404.html") @@ -1460,3 +1478,30 @@ class BlogPostModelAndAdminTests(BaseMediaTestCase): resp_non_existent = self.client.get("/_error/non-existent-code-999") self.assertEqual(resp_non_existent.status_code, 404) self.assertContains(resp_non_existent, "Шаблон для ошибки 'non-existent-code-999' не найден", status_code=404) + + def test_custom_django_error_handlers(self): + """Проверка прямого вызова стандартных Django-обработчиков ошибок.""" + from django.test import RequestFactory + from hypn0_site.views import error_400, error_403, error_404, error_500 + + factory = RequestFactory() + + req400 = factory.get("/bad-request") + resp400 = error_400(req400) + self.assertEqual(resp400.status_code, 400) + self.assertIn("Сбой ментального протокола", resp400.content.decode("utf-8")) + + req403 = factory.get("/forbidden") + resp403 = error_403(req403) + self.assertEqual(resp403.status_code, 403) + self.assertIn("Отказано бюрократом 24-го уровня", resp403.content.decode("utf-8")) + + req404 = factory.get("/not-found") + resp404 = error_404(req404) + self.assertEqual(resp404.status_code, 404) + self.assertIn("Гипноузел не обнаружен", resp404.content.decode("utf-8")) + + req500 = factory.get("/server-error") + resp500 = error_500(req500) + self.assertEqual(resp500.status_code, 500) + self.assertIn("Критический перегрев неокортекса", resp500.content.decode("utf-8")) diff --git a/hypn0/templates/_error/400.html b/hypn0/templates/_error/400.html new file mode 100644 index 0000000..c5e36b1 --- /dev/null +++ b/hypn0/templates/_error/400.html @@ -0,0 +1,481 @@ + + + + + + 400 — Сбой ментального протокола | HypnoSVG + + + + + + + + +
+
+ + HypnoSVG + + +
+
+ +
+
+
+ 400 Bad Request Slug +
+ +
СБОЙ МАТРИЦЫ // КОД 400
+ +

Сбой перцепционного протокола

+ +

+ Клиент искажает ментальные сигналы или имеет невалидную структуру биоритмов мозговых данных. Неокортекс сервера отверг запрос из-за синтаксического диссонанса. +

+ +
+ Справка бюрократа 24-го уровня:
 
+ «Некорректно сформулированная мысль разрушает гармонию халфтона. Перепроверьте параметры запроса перед повторным сеансом внушения.» +
+ +
+
+ + +
+ + +
+
+ Инициа­лизация очистки буфера… +
+
+
+
+
+ Снижение ментальной нагрузки на кластер + +
+
+
+
+
+ + + + + + diff --git a/hypn0/templates/_error/401.html b/hypn0/templates/_error/401.html new file mode 100644 index 0000000..77ab3c0 --- /dev/null +++ b/hypn0/templates/_error/401.html @@ -0,0 +1,481 @@ + + + + + + 401 — Требуется ментальная идентификация | HypnoSVG + + + + + + + + +
+
+ + HypnoSVG + + +
+
+ +
+
+
+ 401 Unauthorized Slug +
+ +
ОГРАНИЧЕНИЕ ДОСТУПА // КОД 401
+ +

Требуется ментальная идентификация

+ +

+ Вы попытались проникнуть в закрытый сектор подсознания без действующего пропуска или аутентификационного чипа. +

+ +
+ Справка бюрократа 24-го уровня:
 
+ «Свободная ментальность и анонимные мысли не допускаются к генераторам высшего порядка. Предъявите биометрический слепок или вернитесь в общий сектор.» +
+ +
+
+ + +
+ + +
+
+ Инициа­лизация сканирования биометрии… +
+
+
+
+
+ Снижение ментальной нагрузки на кластер + +
+
+
+
+
+ + + + + + diff --git a/hypn0/templates/_error/403.html b/hypn0/templates/_error/403.html new file mode 100644 index 0000000..145ea9e --- /dev/null +++ b/hypn0/templates/_error/403.html @@ -0,0 +1,481 @@ + + + + + + 403 — Отказано бюрократом 24-го уровня | HypnoSVG + + + + + + + + +
+
+ + HypnoSVG + + +
+
+ +
+
+
+ 403 Forbidden Slug +
+ +
ДОСТУП ЗАБЛОКИРОВАН // КОД 403
+ +

Ментальная блокировка

+ +

+ У вас нет достаточного уровня перцепционного допуска для просмотра этого сектора подсознания. Вердикт окончательный и обжалованию не подлежит. +

+ +
+ Справка бюрократа 24-го уровня:
 
+ «Форма 38-Б о праве на любопытство не была заверена в Центральном Бюрократическом Управлении. Несанкционированное созерцание карается понижением до 34-го уровня.» +
+ +
+
+ + +
+ + +
+
+ Инициа­лизация проверки гербовых печатей… +
+
+
+
+
+ Снижение ментальной нагрузки на кластер + +
+
+
+
+
+ + + + + + diff --git a/hypn0/templates/_error/413.html b/hypn0/templates/_error/413.html new file mode 100644 index 0000000..235df70 --- /dev/null +++ b/hypn0/templates/_error/413.html @@ -0,0 +1,481 @@ + + + + + + 413 — Перегрузка сенсорных каналов | HypnoSVG + + + + + + + + +
+
+ + HypnoSVG + + +
+
+ +
+
+
+ 413 Payload Too Large Slug +
+ +
ПРЕВЫШЕН ЛИМИТ // КОД 413
+ +

Перегрузка сенсорных каналов

+ +

+ Загружаемое изображение оказалось слишком массивным для восприятия ментальной матрицей. Сервер перцепций отказался поглощать такой объём байтов. +

+ +
+ Справка бюрократа 24-го уровня:
 
+ «Попытка скормить гигабайты растра хрупкому SVG-генератору расценивается как диверсия. Уменьшите разрешение или сожмите файл перед повторной загрузкой в ментальную матрицу.» +
+ +
+
+ + +
+ + +
+
+ Инициа­лизация сброса переполненного буфера… +
+
+
+
+
+ Снижение ментальной нагрузки на кластер + +
+
+
+
+
+ + + + + + diff --git a/hypn0/templates/_error/429.html b/hypn0/templates/_error/429.html new file mode 100644 index 0000000..ed7da20 --- /dev/null +++ b/hypn0/templates/_error/429.html @@ -0,0 +1,481 @@ + + + + + + 429 — Слишком много мыслей в секунду | HypnoSVG + + + + + + + + +
+
+ + HypnoSVG + + +
+
+ +
+
+
+ 429 Too Many Requests Slug +
+ +
ЗАЩИТА ОТ СПАМА // КОД 429
+ +

Слишком много мыслей в секунду

+ +

+ Вы отправляете импульсы быстрее, чем Гипножаба успевает перемигиваться. Включена защита от ментального спама и перегрева процессоров. +

+ +
+ Справка бюрократа 24-го уровня:
 
+ «Перцепционный генератор требует расслабленного состояния мышления, а не ментальных судорог и урагана кликов. Сделайте глубокий вдох, сосчитайте до сорока двух и позвольте трансу стабилизироваться.» +
+ +
+
+ + +
+ + +
+
+ Инициа­лизация медитативного охлаждения… +
+
+
+
+
+ Снижение ментальной нагрузки на кластер + +
+
+
+
+
+ + + + + + diff --git a/hypn0/templates/_error/500.html b/hypn0/templates/_error/500.html new file mode 100644 index 0000000..4d7a8ea --- /dev/null +++ b/hypn0/templates/_error/500.html @@ -0,0 +1,481 @@ + + + + + + 500 — Критический перегрев неокортекса | HypnoSVG + + + + + + + + +
+
+ + HypnoSVG + + +
+
+ +
+
+
+ 500 Internal Server Error Slug +
+ +
АВАРИЯ СЕРВЕРА // КОД 500
+ +

Нейроклинч интроспекций

+ +

+ Внутренний обработчик Т-волн подсознания столкнулся с непредвиденным логическим парадоксом. Ментальные службы уже приведены в состояние боевого транса. +

+ +
+ Справка бюрократа 24-го уровня:
 
+ «Стек вызовов испустил синий дым, но паника строго запрещена циркуляром №16. Гипножаба, Мозгоклюй и дежурные Бри-Гады мозговых слизней уже инспектируют упавший поток перцепции и устраняет ментальную деградацию.» +
+ +
+
+ + +
+ + +
+
+ Инициа­лизация аварийной регенерации ядра… +
+
+
+
+
+ Снижение ментальной нагрузки на кластер + +
+
+
+
+
+ + + + + + diff --git a/hypn0/templates/_error/502.html b/hypn0/templates/_error/502.html new file mode 100644 index 0000000..a258c70 --- /dev/null +++ b/hypn0/templates/_error/502.html @@ -0,0 +1,481 @@ + + + + + + 502 — Контейнер потерял сознание | HypnoSVG + + + + + + + + +
+
+ + HypnoSVG + + +
+
+ +
+
+
+ 502 Bad Gateway Slug +
+ +
ОБРЫВ ШЛЮЗА // КОД 502
+ +

Нет связи с Гипокампом

+ +

+ Прокси-сервер Nginx послал импульс через энторинальную кору в Django-гипокамп, но обратный синапсический отклик потерян. Аксоны в состоянии звенящей астральной пустоты. +

+ +
+ Справка бюрократа 24-го уровня:
 
+ «Gunicorn ушёл в глубокую интроспекцию или временно дезориентирован в docker-пространстве. Бри-Гады мозговых слизней уже инспектируют упавший поток перцепции и устраняет ментальную деградацию.» +
+ +
+
+ + +
+ + +
+
+ Инициа­лизация реанимации шлюза… +
+
+
+
+
+ Снижение ментальной нагрузки на кластер + +
+
+
+
+
+ + + + + + diff --git a/hypn0/templates/_error/503.html b/hypn0/templates/_error/503.html new file mode 100644 index 0000000..bd5764a --- /dev/null +++ b/hypn0/templates/_error/503.html @@ -0,0 +1,481 @@ + + + + + + 503 — Плановый сеанс гипнотерапии | HypnoSVG + + + + + + + + +
+
+ + HypnoSVG + + +
+
+ +
+
+
+ 503 Service Unavailable Slug +
+ +
ТЕХОБСЛУЖИВАНИЕ // КОД 503
+ +

Плановый сеанс гипнотерапии

+ +

+ Сервер временно закрыт на калибровку ментальных матриц или испытывает запредельный наплыв адептов Гипножабы. +

+ +
+ Справка бюрократа 24-го уровня:
 
+ «Проводятся регламентные работы по смазке осей гипнотических нейроспиралей и продувке камер интроспекций халфтона. Задействованы усиленные технические Бри-Гады мозговых слизней под надзором Мозгоклюя. Скоро сервис вернётся в строй.» +
+ +
+
+ + +
+ + +
+
+ Инициа­лизация технической диагностики… +
+
+
+
+
+ Снижение ментальной нагрузки на кластер + +
+
+
+
+
+ + + + + + diff --git a/hypn0/templates/_error/504.html b/hypn0/templates/_error/504.html new file mode 100644 index 0000000..a7afdea --- /dev/null +++ b/hypn0/templates/_error/504.html @@ -0,0 +1,481 @@ + + + + + + 504 — Разрыв астральной связи | HypnoSVG + + + + + + + + +
+
+ + HypnoSVG + + +
+
+ +
+
+
+ 504 Gateway Timeout Slug +
+ +
ТАЙМАУТ ШЛЮЗА // КОД 504
+ +

Разрыв астральной связи

+ +

+ Вышестоящий перцептивный узел в состоянии рекурсивной интроспекции и не успевает ответить в отведённый квант времени. +

+ +
+ Справка бюрократа 24-го уровня:
 
+ «Время — понятие относительное, но таймаут Nginx абсолютен. Ментальный транс осознанных сновидений думателя прерван во избежание зацикливания нейро-континуума.» +
+ +
+
+ + +
+ + +
+
+ Инициа­лизация синхронизации таймлайна… +
+
+
+
+
+ Снижение ментальной нагрузки на кластер + +
+
+
+
+
+ + + + + + diff --git a/hypn0/templates/_error/under_reconstruction.html b/hypn0/templates/_error/under_reconstruction.html new file mode 100644 index 0000000..00abdc1 --- /dev/null +++ b/hypn0/templates/_error/under_reconstruction.html @@ -0,0 +1,481 @@ + + + + + + Реконструкция матрицы | HypnoSVG + + + + + + + + +
+
+ + HypnoSVG + + +
+
+ +
+
+
+ Under Reconstruction Slug +
+ +
РЕКОНСТРУКЦИЯ ИНТРОСПЕКЦИИ
+ +

Отдел мозга на реконструкции

+ +

+ Узел ментальной матрицы перестраивается по бредо-чертежам Гипножабы. Бри-Гады мозговых слизней под контролем Мозгоклюя разворачивают новый слой интроспекций. Скоро здесь появится нечто гипнотически непознаваемое. +

+ +
+ Справка бюрократа 24-го уровня:
 
+ «Ведутся строительно-монтажные работы по укладке новых векторных силовых линий. Проход без мантальной каски и без вживленного мозгового слизня ограничен даже гражданам в глубоком трансе.» +
+ +
+
+ + +
+ + +
+
+ Инициа­лизация перемещения из зоны работ… +
+
+
+
+
+ Снижение ментальной нагрузки на кластер + +
+
+
+
+
+ + + + + +