diff --git a/cognee/infrastructure/databases/relational/ModelBase.py b/cognee/infrastructure/databases/relational/ModelBase.py index a4d3a1a19..3a2054207 100644 --- a/cognee/infrastructure/databases/relational/ModelBase.py +++ b/cognee/infrastructure/databases/relational/ModelBase.py @@ -1,7 +1,8 @@ from sqlalchemy.orm import DeclarativeBase +from sqlalchemy.ext.asyncio import AsyncAttrs -class Base(DeclarativeBase): +class Base(AsyncAttrs, DeclarativeBase): """ Represents a base class for declarative models using SQLAlchemy. diff --git a/cognee/modules/users/permissions/methods/get_all_user_permission_datasets.py b/cognee/modules/users/permissions/methods/get_all_user_permission_datasets.py index 5b242baa4..a8731a773 100644 --- a/cognee/modules/users/permissions/methods/get_all_user_permission_datasets.py +++ b/cognee/modules/users/permissions/methods/get_all_user_permission_datasets.py @@ -1,3 +1,5 @@ +from types import SimpleNamespace + from cognee.shared.logging_utils import get_logger from ...models.User import User @@ -17,9 +19,14 @@ async def get_all_user_permission_datasets(user: User, permission_type: str) -> # Get all datasets all tenants have access to tenant = await get_tenant(user.tenant_id) datasets.extend(await get_principal_datasets(tenant, permission_type)) + # Get all datasets Users roles have access to - for role_name in user.roles: - role = await get_role(user.tenant_id, role_name) + if isinstance(user, SimpleNamespace): + # If simple namespace use roles defined in user + roles = user.roles + else: + roles = await user.awaitable_attrs.roles + for role in roles: datasets.extend(await get_principal_datasets(role, permission_type)) # Deduplicate datasets with same ID