#!/usr/bin/env python3 """ Script para diagnosticar la integración de Notion """ import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent)) from config import settings from notion_client import Client def main(): print("\n" + "=" * 70) print("🔍 DIAGNÓSTICO COMPLETO DE NOTION") print("=" * 70 + "\n") token = settings.NOTION_API_TOKEN database_id = settings.NOTION_DATABASE_ID print(f"Token: {token[:30]}..." if token else "❌ Token no configurado") print(f"Database ID: {database_id}\n") if not token: print("❌ Configura NOTION_API en .env\n") return client = Client(auth=token) # Test 1: Verificar que el token sea válido print("📝 Test 1: Verificando token...") try: # Intentar buscar páginas (cualquiera) results = client.search(query="", page_size=1) print("✅ Token válido - la integración está activa\n") # Ver si tiene acceso a alguna página pages = results.get("results", []) if pages: print(f"✅ La integración tiene acceso a {len(pages)} página(s)") for page in pages[:3]: page_id = page.get("id", "N/A") page_type = page.get("object", "N/A") print(f" - {page_type}: {page_id}") else: print("⚠️ La integración NO tiene acceso a ninguna página aún") print(" Esto es normal si acabas de crear la integración.\n") except Exception as e: print(f"❌ Error con el token: {e}\n") return # Test 2: Verificar acceso a la base de datos específica print("\n📊 Test 2: Verificando acceso a la base de datos CBC...") try: database = client.databases.retrieve(database_id=database_id) print("✅ ¡ÉXITO! La integración puede acceder a la base de datos\n") title = database.get("title", [{}])[0].get("plain_text", "Sin título") print(f" Título: {title}") print(f" ID: {database['id']}") print(f"\n Propiedades:") for prop_name in database.get("properties", {}).keys(): print(f" ✓ {prop_name}") print("\n" + "=" * 70) print("✅ TODO CONFIGURADO CORRECTAMENTE") print("=" * 70) print("\n🚀 Ejecuta: python test_notion_integration.py\n") except Exception as e: error_msg = str(e) print(f"❌ No se puede acceder a la base de datos") print(f" Error: {error_msg}\n") if "Could not find database" in error_msg: print("=" * 70) print("⚠️ ACCIÓN REQUERIDA: Compartir la base de datos") print("=" * 70) print("\n📋 PASOS DETALLADOS:\n") print("1. Abre Notion en tu navegador") print("\n2. Ve a tu base de datos 'CBC'") print(f" Opción A: Usa este link directo:") print(f" → https://www.notion.so/{database_id.replace('-', '')}") print(f"\n Opción B: Busca 'CBC' en tu workspace") print("\n3. En la página de la base de datos, busca el botón '...' ") print(" (tres puntos) en la esquina SUPERIOR DERECHA") print("\n4. En el menú que se abre, busca:") print(" • 'Connections' (en inglés)") print(" • 'Conexiones' (en español)") print(" • 'Connect to' (puede variar)") print("\n5. Haz click y verás un menú de integraciones") print("\n6. Busca tu integración en la lista") print(" (Debería tener el nombre que le pusiste al crearla)") print("\n7. Haz click en tu integración para activarla") print("\n8. Confirma los permisos cuando te lo pida") print("\n9. Deberías ver un mensaje confirmando la conexión") print("\n10. ¡Listo! Vuelve a ejecutar:") print(" python verify_notion_permissions.py\n") print("=" * 70) # Crear una página de prueba simple para verificar print("\n💡 ALTERNATIVA: Crear una nueva página de prueba\n") print("Si no encuentras la opción de conexiones en tu base de datos,") print("puedes crear una página nueva y compartirla con la integración:\n") print("1. Crea una nueva página en Notion") print("2. En esa página, click en 'Share' (Compartir)") print("3. Busca tu integración y agrégala") print("4. Luego convierte esa página en una base de datos") print("5. Usa el ID de esa nueva base de datos\n") if __name__ == "__main__": main()