| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #!/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)
-
- # IMPORTANT : Rendre la réponse avant d'accéder au contenu
- response.render()
-
- # 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()
|