#!/usr/bin/env python3
"""
Script pour générer et vérifier le sitemap XML
Utile pour debug avant mise en production
"""

import os
import sys
from pathlib import Path
from datetime import datetime

# Ajouter le répertoire parent au path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))

# Configuration Django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'duhaz_blog.settings')
import django
django.setup()

from django.contrib.sitemaps import views
from django.test import RequestFactory
from blog.sitemaps import BlogSitemap, CategorySitemap, PageSitemap, StaticViewSitemap


def generate_sitemap_preview():
    """Génère un aperçu du sitemap XML"""
    print("\n" + "="*70)
    print("GÉNÉRATION DU SITEMAP XML")
    print("="*70 + "\n")
    
    # Créer une fausse requête
    factory = RequestFactory()
    request = factory.get('/sitemap.xml')
    
    # Sitemaps configurés
    sitemaps = {
        'blog': BlogSitemap,
        'categories': CategorySitemap,
        'pages': PageSitemap,
        'static': StaticViewSitemap,
    }
    
    try:
        # Générer le sitemap
        response = views.sitemap(request, sitemaps)
        
        # Sauvegarder dans un fichier de preview
        output_file = Path(__file__).parent.parent / 'static' / 'sitemap_preview.xml'
        
        with open(output_file, 'wb') as f:
            f.write(response.content)
        
        print(f"✅ Sitemap généré avec succès !")
        print(f"📄 Fichier : {output_file}")
        print(f"📏 Taille : {len(response.content)} bytes")
        
        # Compter les URLs
        content_str = response.content.decode('utf-8')
        url_count = content_str.count('<url>')
        
        print(f"🔗 Nombre d'URLs : {url_count}")
        
        # Afficher un extrait
        print("\n" + "="*70)
        print("EXTRAIT DU SITEMAP (premières lignes)")
        print("="*70)
        lines = content_str.split('\n')[:20]
        for line in lines:
            print(line)
        
        print("\n...")
        print(f"\n(Voir le fichier complet : {output_file})")
        
        return True
        
    except Exception as e:
        print(f"❌ Erreur lors de la génération : {e}")
        import traceback
        traceback.print_exc()
        return False


if __name__ == "__main__":
    generate_sitemap_preview()
