#!/usr/bin/env python3 """ Script de diagnostic du sitemap Identifie pourquoi le sitemap est vide """ import os import sys from pathlib import Path # 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 blog.models import Blog, Cat_Blog from core.models import Page from django.contrib.sites.models import Site def diagnose_sitemap(): """Diagnostique les problèmes du sitemap""" print("\n" + "="*70) print("DIAGNOSTIC DU SITEMAP") print("="*70 + "\n") issues = [] # 1. Vérifier django.contrib.sites print("1️⃣ Vérification de django.contrib.sites...") try: sites = Site.objects.all() if sites.exists(): print(f" ✅ {sites.count()} site(s) configuré(s)") for site in sites: print(f" - ID: {site.id}, Domaine: {site.domain}, Nom: {site.name}") if site.domain != 'www.duhaz.fr' and site.domain != 'duhaz.fr': issues.append(f"⚠️ Domaine du site incorrect : {site.domain}") else: issues.append("❌ Aucun site configuré dans django.contrib.sites") print(" ❌ Aucun site configuré !") except Exception as e: issues.append(f"❌ Erreur avec django.contrib.sites : {e}") print(f" ❌ Erreur : {e}") # 2. Vérifier SITE_ID print("\n2️⃣ Vérification de SITE_ID...") from django.conf import settings if hasattr(settings, 'SITE_ID'): print(f" ✅ SITE_ID = {settings.SITE_ID}") else: issues.append("❌ SITE_ID non défini dans settings.py") print(" ❌ SITE_ID non défini !") # 3. Vérifier les articles de blog print("\n3️⃣ Vérification des articles de blog...") try: blogs = Blog.objects.filter(b_publier=True) print(f" ✅ {blogs.count()} article(s) publié(s)") if blogs.count() == 0: issues.append("⚠️ Aucun article publié trouvé") else: # Afficher les 3 premiers for blog in blogs[:3]: print(f" - {blog.b_titre}") except Exception as e: issues.append(f"❌ Erreur avec les articles : {e}") print(f" ❌ Erreur : {e}") # 4. Vérifier les catégories print("\n4️⃣ Vérification des catégories...") try: cats = Cat_Blog.objects.all() print(f" ✅ {cats.count()} catégorie(s)") if cats.count() == 0: issues.append("⚠️ Aucune catégorie trouvée") except Exception as e: issues.append(f"❌ Erreur avec les catégories : {e}") print(f" ❌ Erreur : {e}") # 5. Vérifier les pages print("\n5️⃣ Vérification des pages statiques...") try: pages = Page.objects.filter(p_publier=True, p_type='page') print(f" ✅ {pages.count()} page(s) publiée(s)") if pages.count() == 0: issues.append("⚠️ Aucune page statique trouvée") except Exception as e: issues.append(f"❌ Erreur avec les pages : {e}") print(f" ❌ Erreur : {e}") # 6. Tester la génération du sitemap print("\n6️⃣ Test de génération du sitemap...") try: from blog.sitemaps import BlogSitemap, CategorySitemap, PageSitemap, StaticViewSitemap blog_sitemap = BlogSitemap() blog_items = list(blog_sitemap.items()) print(f" ✅ BlogSitemap : {len(blog_items)} items") cat_sitemap = CategorySitemap() cat_items = list(cat_sitemap.items()) print(f" ✅ CategorySitemap : {len(cat_items)} items") page_sitemap = PageSitemap() page_items = list(page_sitemap.items()) print(f" ✅ PageSitemap : {len(page_items)} items") static_sitemap = StaticViewSitemap() static_items = list(static_sitemap.items()) print(f" ✅ StaticViewSitemap : {len(static_items)} items") total = len(blog_items) + len(cat_items) + len(page_items) + len(static_items) if total == 0: issues.append("❌ Le sitemap génère 0 items !") except Exception as e: issues.append(f"❌ Erreur lors de la génération : {e}") print(f" ❌ Erreur : {e}") import traceback traceback.print_exc() # Résumé print("\n" + "="*70) print("RÉSUMÉ DU DIAGNOSTIC") print("="*70 + "\n") if issues: print("❌ PROBLÈMES DÉTECTÉS :\n") for issue in issues: print(f" {issue}") print("\n" + "="*70) print("SOLUTIONS") print("="*70 + "\n") if "Aucun site configuré" in str(issues): print("🔧 Pour créer le site :") print(""" python manage.py shell >>> from django.contrib.sites.models import Site >>> Site.objects.create(id=1, domain='www.duhaz.fr', name='Mr Duhaz') >>> exit() """) if "Domaine du site incorrect" in str(issues): print("🔧 Pour corriger le domaine :") print(""" python manage.py shell >>> from django.contrib.sites.models import Site >>> site = Site.objects.get(id=1) >>> site.domain = 'www.duhaz.fr' >>> site.name = 'Mr Duhaz' >>> site.save() >>> exit() """) if "Aucun article publié" in str(issues): print("⚠️ Vérifiez que vous avez des articles avec b_publier=True") return 1 else: print("✅ Aucun problème détecté !") print("\nLe sitemap devrait fonctionner correctement.") print("Si le problème persiste, vérifiez :") print(" - Que le serveur a été redémarré") print(" - Les logs Django pour plus d'infos") return 0 if __name__ == "__main__": sys.exit(diagnose_sitemap())