#!/usr/bin/env python3 """ Script de test et migration du sitemap 1. Sauvegarde l'ancien sitemap statique 2. Teste le nouveau sitemap dynamique 3. Vérifie les URLs générées """ import os import sys import shutil from datetime import datetime from pathlib import Path # Ajouter le répertoire parent au path pour importer Django 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 blog.sitemaps import BlogSitemap, CategorySitemap, PageSitemap, StaticViewSitemap from django.urls import reverse def backup_old_sitemap(): """Sauvegarde l'ancien sitemap statique""" old_sitemap = Path(__file__).parent.parent / 'static' / 'sitemap.xml' if old_sitemap.exists(): timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') backup_path = old_sitemap.parent / f'sitemap_backup_{timestamp}.xml' print(f"📦 Sauvegarde de l'ancien sitemap...") shutil.copy2(old_sitemap, backup_path) print(f"✅ Sauvegardé vers : {backup_path}") # Renommer l'ancien pour qu'il ne soit plus utilisé old_renamed = old_sitemap.parent / f'sitemap_OLD_{timestamp}.xml' old_sitemap.rename(old_renamed) print(f"✅ Ancien sitemap renommé : {old_renamed}") return True else: print("ℹ️ Aucun ancien sitemap trouvé") return False def test_sitemap(): """Teste le nouveau sitemap dynamique""" print("\n" + "="*70) print("TEST DU SITEMAP DYNAMIQUE") print("="*70 + "\n") # Test BlogSitemap print("📝 Test BlogSitemap...") blog_sitemap = BlogSitemap() blog_items = list(blog_sitemap.items()) print(f" Articles trouvés : {len(blog_items)}") if blog_items: print(f" ✓ Premier article : {blog_items[0].b_titre}") print(f" ✓ URL : {blog_sitemap.location(blog_items[0])}") print(f" ✓ Dernière modif : {blog_sitemap.lastmod(blog_items[0])}") # Test CategorySitemap print("\n🏷️ Test CategorySitemap...") cat_sitemap = CategorySitemap() cat_items = list(cat_sitemap.items()) print(f" Catégories trouvées : {len(cat_items)}") if cat_items: print(f" ✓ Première catégorie : {cat_items[0].cb_titre}") print(f" ✓ URL : {cat_sitemap.location(cat_items[0])}") print(f" ✓ Dernière modif : {cat_sitemap.lastmod(cat_items[0])}") # Test PageSitemap print("\n📄 Test PageSitemap...") page_sitemap = PageSitemap() page_items = list(page_sitemap.items()) print(f" Pages trouvées : {len(page_items)}") if page_items: print(f" ✓ Première page : {page_items[0]}") # Test StaticViewSitemap print("\n🏠 Test StaticViewSitemap...") static_sitemap = StaticViewSitemap() static_items = list(static_sitemap.items()) print(f" Vues statiques : {len(static_items)}") for item in static_items: print(f" ✓ Vue : {item}") print(f" ✓ URL : {static_sitemap.location(item)}") # Résumé total = len(blog_items) + len(cat_items) + len(page_items) + len(static_items) print("\n" + "="*70) print("RÉSUMÉ") print("="*70) print(f"Total URLs dans le sitemap : {total}") print(f" - Articles de blog : {len(blog_items)}") print(f" - Catégories : {len(cat_items)}") print(f" - Pages statiques : {len(page_items)}") print(f" - Vues statiques : {len(static_items)}") return total def main(): print("\n🚀 MIGRATION VERS SITEMAP DYNAMIQUE") print("="*70 + "\n") # Étape 1 : Sauvegarde backup_old_sitemap() # Étape 2 : Test total_urls = test_sitemap() # Étape 3 : Instructions print("\n" + "="*70) print("PROCHAINES ÉTAPES") print("="*70) print("\n1. ✅ Sitemap dynamique configuré") print("2. 🌐 URL du sitemap : https://www.duhaz.fr/sitemap.xml") print("3. 📊 Soumettre à Google Search Console :") print(" - Aller sur https://search.google.com/search-console") print(" - Sitemaps → Ajouter un sitemap") print(" - Entrer : sitemap.xml") print("4. 🔄 Le sitemap se met à jour automatiquement") print("\n⚠️ IMPORTANT : Redémarrez Django pour activer les changements") print(" python manage.py runserver") print("\n✅ Migration terminée avec succès !") if __name__ == "__main__": main()