Corp/backend/scripts/diagnostic/diagnose_page.py
2026-09-07 19:43:48 +03:00

138 lines
4.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python
"""
Диагностика проблем с рендерингом страниц.
Проверяет, правильно ли подключаются компоненты.
"""
import os
from pathlib import Path
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "eusrr_backend.settings")
import django
django.setup()
from django.contrib.auth import get_user_model
from django.template import loader
from django.test import RequestFactory
from employees.models import Department
User = get_user_model()
def diagnose_department_page():
"""Диагностика страницы отдела"""
print("\n=== Диагностика страницы отдела ===\n")
# Создаём mock request
factory = RequestFactory()
factory.get("/employees/departments/1/")
# Пробуем получить отдел
try:
dept = Department.objects.first()
if not dept:
print("❌ Нет отделов в базе")
return
print(f"✓ Отдел найден: {dept.name} (ID: {dept.id})")
except Exception as e:
print(f"❌ Ошибка получения отдела: {e}")
return
# Пробуем загрузить шаблон
try:
loader.get_template("employees/department_detail.html")
print("✓ Шаблон department_detail.html загружен")
except Exception as e:
print(f"❌ Ошибка загрузки шаблона: {e}")
return
# Проверяем компоненты
components = [
"employees/components/department_header.html",
"employees/components/department_info.html",
"employees/components/department_team_circle.html",
"employees/components/department_sidebar.html",
"employees/components/department_modals.html",
"employees/components/department_styles.html",
"employees/components/department_scripts.html",
]
print("\nКомпоненты:")
for comp in components:
try:
loader.get_template(comp)
print(f" ✓ {comp}")
except Exception as e:
print(f" ❌ {comp}: {e}")
# Проверяем календарь
print("\nКомпоненты календаря:")
calendar_components = [
"includes/calendar/calendar_styles.html",
"includes/calendar/calendar_widget.html",
"includes/calendar/calendar_events_list.html",
"includes/calendar/calendar_modals.html",
"includes/calendar/calendar_scripts.html",
]
for comp in calendar_components:
try:
loader.get_template(comp)
print(f" ✓ {comp}")
except Exception as e:
print(f" ❌ {comp}: {e}")
print("\n=== Проверка размеров компонентов ===\n")
from django.conf import settings
templates_dir = Path(settings.BASE_DIR) / "templates"
for comp in components:
file_path = templates_dir / comp
if file_path.exists():
lines = len(file_path.read_text(encoding="utf-8").splitlines())
size = file_path.stat().st_size
print(f" {comp}: {lines} строк, {size} байт")
else:
print(f" ❌ {comp}: файл не найден")
def check_base_template():
"""Проверка base.html"""
print("\n=== Проверка base.html ===\n")
try:
loader.get_template("base.html")
print("✓ base.html загружен")
# Проверяем, что в нём есть блоки
from django.conf import settings
base_path = Path(settings.BASE_DIR) / "templates" / "base.html"
content = base_path.read_text(encoding="utf-8")
checks = [
("{% block extra_css %}", "Блок extra_css"),
("{% block extra_js %}", "Блок extra_js"),
('{% include "includes/rightbar_calendar.html" %}', "Include календаря"),
("bootstrap.bundle.min.js", "Bootstrap JS"),
("fullcalendar", "FullCalendar JS"),
]
for pattern, description in checks:
if pattern in content:
print(f" ✓ {description}")
else:
print(f" ❌ {description} НЕ НАЙДЕН!")
except Exception as e:
print(f"❌ Ошибка: {e}")
if __name__ == "__main__":
diagnose_department_page()
check_base_template()