diagnose_sitemap.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. #!/usr/bin/env python3
  2. """
  3. Script de diagnostic du sitemap
  4. Identifie pourquoi le sitemap est vide
  5. """
  6. import os
  7. import sys
  8. from pathlib import Path
  9. # Ajouter le répertoire parent au path
  10. sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
  11. # Configuration Django
  12. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'duhaz_blog.settings')
  13. import django
  14. django.setup()
  15. from blog.models import Blog, Cat_Blog
  16. from core.models import Page
  17. from django.contrib.sites.models import Site
  18. def diagnose_sitemap():
  19. """Diagnostique les problèmes du sitemap"""
  20. print("\n" + "="*70)
  21. print("DIAGNOSTIC DU SITEMAP")
  22. print("="*70 + "\n")
  23. issues = []
  24. # 1. Vérifier django.contrib.sites
  25. print("1️⃣ Vérification de django.contrib.sites...")
  26. try:
  27. sites = Site.objects.all()
  28. if sites.exists():
  29. print(f" ✅ {sites.count()} site(s) configuré(s)")
  30. for site in sites:
  31. print(f" - ID: {site.id}, Domaine: {site.domain}, Nom: {site.name}")
  32. if site.domain != 'www.duhaz.fr' and site.domain != 'duhaz.fr':
  33. issues.append(f"⚠️ Domaine du site incorrect : {site.domain}")
  34. else:
  35. issues.append("❌ Aucun site configuré dans django.contrib.sites")
  36. print(" ❌ Aucun site configuré !")
  37. except Exception as e:
  38. issues.append(f"❌ Erreur avec django.contrib.sites : {e}")
  39. print(f" ❌ Erreur : {e}")
  40. # 2. Vérifier SITE_ID
  41. print("\n2️⃣ Vérification de SITE_ID...")
  42. from django.conf import settings
  43. if hasattr(settings, 'SITE_ID'):
  44. print(f" ✅ SITE_ID = {settings.SITE_ID}")
  45. else:
  46. issues.append("❌ SITE_ID non défini dans settings.py")
  47. print(" ❌ SITE_ID non défini !")
  48. # 3. Vérifier les articles de blog
  49. print("\n3️⃣ Vérification des articles de blog...")
  50. try:
  51. blogs = Blog.objects.filter(b_publier=True)
  52. print(f" ✅ {blogs.count()} article(s) publié(s)")
  53. if blogs.count() == 0:
  54. issues.append("⚠️ Aucun article publié trouvé")
  55. else:
  56. # Afficher les 3 premiers
  57. for blog in blogs[:3]:
  58. print(f" - {blog.b_titre}")
  59. except Exception as e:
  60. issues.append(f"❌ Erreur avec les articles : {e}")
  61. print(f" ❌ Erreur : {e}")
  62. # 4. Vérifier les catégories
  63. print("\n4️⃣ Vérification des catégories...")
  64. try:
  65. cats = Cat_Blog.objects.all()
  66. print(f" ✅ {cats.count()} catégorie(s)")
  67. if cats.count() == 0:
  68. issues.append("⚠️ Aucune catégorie trouvée")
  69. except Exception as e:
  70. issues.append(f"❌ Erreur avec les catégories : {e}")
  71. print(f" ❌ Erreur : {e}")
  72. # 5. Vérifier les pages
  73. print("\n5️⃣ Vérification des pages statiques...")
  74. try:
  75. pages = Page.objects.filter(p_publier=True, p_type='page')
  76. print(f" ✅ {pages.count()} page(s) publiée(s)")
  77. if pages.count() == 0:
  78. issues.append("⚠️ Aucune page statique trouvée")
  79. except Exception as e:
  80. issues.append(f"❌ Erreur avec les pages : {e}")
  81. print(f" ❌ Erreur : {e}")
  82. # 6. Tester la génération du sitemap
  83. print("\n6️⃣ Test de génération du sitemap...")
  84. try:
  85. from blog.sitemaps import BlogSitemap, CategorySitemap, PageSitemap, StaticViewSitemap
  86. blog_sitemap = BlogSitemap()
  87. blog_items = list(blog_sitemap.items())
  88. print(f" ✅ BlogSitemap : {len(blog_items)} items")
  89. cat_sitemap = CategorySitemap()
  90. cat_items = list(cat_sitemap.items())
  91. print(f" ✅ CategorySitemap : {len(cat_items)} items")
  92. page_sitemap = PageSitemap()
  93. page_items = list(page_sitemap.items())
  94. print(f" ✅ PageSitemap : {len(page_items)} items")
  95. static_sitemap = StaticViewSitemap()
  96. static_items = list(static_sitemap.items())
  97. print(f" ✅ StaticViewSitemap : {len(static_items)} items")
  98. total = len(blog_items) + len(cat_items) + len(page_items) + len(static_items)
  99. if total == 0:
  100. issues.append("❌ Le sitemap génère 0 items !")
  101. except Exception as e:
  102. issues.append(f"❌ Erreur lors de la génération : {e}")
  103. print(f" ❌ Erreur : {e}")
  104. import traceback
  105. traceback.print_exc()
  106. # Résumé
  107. print("\n" + "="*70)
  108. print("RÉSUMÉ DU DIAGNOSTIC")
  109. print("="*70 + "\n")
  110. if issues:
  111. print("❌ PROBLÈMES DÉTECTÉS :\n")
  112. for issue in issues:
  113. print(f" {issue}")
  114. print("\n" + "="*70)
  115. print("SOLUTIONS")
  116. print("="*70 + "\n")
  117. if "Aucun site configuré" in str(issues):
  118. print("🔧 Pour créer le site :")
  119. print("""
  120. python manage.py shell
  121. >>> from django.contrib.sites.models import Site
  122. >>> Site.objects.create(id=1, domain='www.duhaz.fr', name='Mr Duhaz')
  123. >>> exit()
  124. """)
  125. if "Domaine du site incorrect" in str(issues):
  126. print("🔧 Pour corriger le domaine :")
  127. print("""
  128. python manage.py shell
  129. >>> from django.contrib.sites.models import Site
  130. >>> site = Site.objects.get(id=1)
  131. >>> site.domain = 'www.duhaz.fr'
  132. >>> site.name = 'Mr Duhaz'
  133. >>> site.save()
  134. >>> exit()
  135. """)
  136. if "Aucun article publié" in str(issues):
  137. print("⚠️ Vérifiez que vous avez des articles avec b_publier=True")
  138. return 1
  139. else:
  140. print("✅ Aucun problème détecté !")
  141. print("\nLe sitemap devrait fonctionner correctement.")
  142. print("Si le problème persiste, vérifiez :")
  143. print(" - Que le serveur a été redémarré")
  144. print(" - Les logs Django pour plus d'infos")
  145. return 0
  146. if __name__ == "__main__":
  147. sys.exit(diagnose_sitemap())