| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- #!/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())
|