diff --git a/cognee/modules/notebooks/methods/create_notebook.py b/cognee/modules/notebooks/methods/create_notebook.py index 22ed047f1..98cc557c6 100644 --- a/cognee/modules/notebooks/methods/create_notebook.py +++ b/cognee/modules/notebooks/methods/create_notebook.py @@ -6,6 +6,8 @@ from cognee.infrastructure.databases.relational import with_async_session from ..models.Notebook import Notebook, NotebookCell +TUTORIAL_NOTEBOOK_NAME = "Python Development with Cognee Tutorial 🧠" + async def _create_tutorial_notebook( user_id: UUID, session: AsyncSession, force_refresh: bool = False @@ -24,7 +26,7 @@ async def _create_tutorial_notebook( zip_url=TUTORIAL_ZIP_URL, owner_id=user_id, notebook_filename="tutorial.ipynb", - name="Python Development with Cognee Tutorial 🧠", + name=TUTORIAL_NOTEBOOK_NAME, deletable=False, force=force_refresh, ) diff --git a/cognee/modules/notebooks/methods/get_notebooks.py b/cognee/modules/notebooks/methods/get_notebooks.py index aeb4f7704..0ff2f3985 100644 --- a/cognee/modules/notebooks/methods/get_notebooks.py +++ b/cognee/modules/notebooks/methods/get_notebooks.py @@ -1,11 +1,16 @@ from uuid import UUID from typing import List -from sqlalchemy import select +from sqlalchemy import select, and_ from sqlalchemy.ext.asyncio import AsyncSession from cognee.infrastructure.databases.relational import with_async_session from ..models.Notebook import Notebook +from .create_notebook import _create_tutorial_notebook, TUTORIAL_NOTEBOOK_NAME + +from cognee.shared.logging_utils import get_logger + +logger = get_logger() @with_async_session @@ -13,6 +18,27 @@ async def get_notebooks( user_id: UUID, session: AsyncSession, ) -> List[Notebook]: + # Check if tutorial notebook already exists for this user + tutorial_query = select(Notebook).where( + and_( + Notebook.owner_id == user_id, + Notebook.name == TUTORIAL_NOTEBOOK_NAME, + ~Notebook.deletable, + ) + ) + tutorial_result = await session.execute(tutorial_query) + tutorial_notebook = tutorial_result.scalar_one_or_none() + + # If tutorial notebook doesn't exist, create it + if tutorial_notebook is None: + logger.info(f"Tutorial notebook not found for user {user_id}, creating it") + try: + await _create_tutorial_notebook(user_id, session, force_refresh=False) + except Exception as e: + # Log the error but continue to return existing notebooks + logger.error(f"Failed to create tutorial notebook for user {user_id}: {e}") + + # Get all notebooks for the user result = await session.execute(select(Notebook).where(Notebook.owner_id == user_id)) return list(result.scalars().all()) diff --git a/cognee/modules/users/methods/create_user.py b/cognee/modules/users/methods/create_user.py index e3f24ccad..1b303bd36 100644 --- a/cognee/modules/users/methods/create_user.py +++ b/cognee/modules/users/methods/create_user.py @@ -61,8 +61,6 @@ async def create_user( if auto_login: await session.refresh(user) - await _create_tutorial_notebook(user.id, session) - return user except UserAlreadyExists as error: print(f"User {email} already exists")