domovoy_bot/update_templates.py
Admin d8c9599ac1 🔧 UI fixes: единое меню во всех страницах + кнопка запланированных постов
- Исправлено 'плавающее' меню (дублирование кнопок при навигации)
- Создан base.html - единый базовый шаблон для всех страниц
- Добавлена кнопка '📅 Запланированные посты' во все 11 страниц
- Sticky sidebar с улучшенным дизайном
- Все страницы теперь имеют одинаковое меню (11 кнопок)
- Улучшенная подсветка активного пункта (border-left)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-05 15:59:55 +04:00

84 lines
2.7 KiB
Python

#!/usr/bin/env python3
"""
Скрипт обновления всех шаблонов для использования base.html
"""
import re
import os
templates_dir = 'web/templates'
# Карта соответствия страниц блокам активного меню
nav_map = {
'dashboard.html': 'nav_dashboard',
'users.html': 'nav_users',
'verification.html': 'nav_verification',
'phones.html': 'nav_phones',
'broadcast.html': 'nav_broadcast',
'scheduled_posts.html': 'nav_scheduled_posts',
'polls.html': 'nav_polls',
'events.html': 'nav_events',
'schedules.html': 'nav_schedules',
'ads.html': 'nav_ads',
'export.html': 'nav_export',
}
def update_template(template_name):
"""Обновить один шаблон"""
filepath = os.path.join(templates_dir, template_name)
if not os.path.exists(filepath):
print(f"⚠️ {template_name} - не найден")
return False
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
# Проверяем уже ли обновлён
if 'extends "base.html"' in content:
print(f"{template_name} - уже обновлён")
return True
# Определяем блок активного меню
active_block = nav_map.get(template_name, '')
# Извлекаем контент между sidebar закрывающим тегом и концом файла
# Находим где начинается основной контент
match = re.search(r'<!-- Main Content -->\s*<div class="col-md-10 content">(.*?)</div>\s*</div>\s*</div>\s*</body>\s*</html>', content, re.DOTALL)
if not match:
print(f"{template_name} - не удалось найти контент")
return False
main_content = match.group(1)
# Извлекаем title
title_match = re.search(r'<title>(.*?)</title>', content)
title = title_match.group(1) if title_match else 'Домовой Бот'
# Создаём новый контент
active_decl = f'{{% block {active_block} %}}active{{% endblock %}}' if active_block else ''
new_content = f'''{{% extends "base.html" %}}
{{% block title %}}{title}{{% endblock %}}
{active_decl}
{{% block content %}}{main_content}
{{% endblock %}}
'''
with open(filepath, 'w', encoding='utf-8') as f:
f.write(new_content)
print(f"{template_name} - обновлён")
return True
# Обновляем все шаблоны
print("🔄 Обновление шаблонов...")
updated = 0
for template in nav_map.keys():
if update_template(template):
updated += 1
print(f"\n✅ Обновлено {updated} шаблонов")