#!/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'\s*
(.*?)
\s*\s*\s*\s*', content, re.DOTALL) if not match: print(f"❌ {template_name} - не удалось найти контент") return False main_content = match.group(1) # Извлекаем title title_match = re.search(r'(.*?)', 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} шаблонов")