diff --git a/src/backend/langflow/api/v1/flows.py b/src/backend/langflow/api/v1/flows.py index 28c11dfb4..517ff33c1 100644 --- a/src/backend/langflow/api/v1/flows.py +++ b/src/backend/langflow/api/v1/flows.py @@ -5,13 +5,14 @@ from uuid import UUID import orjson from fastapi import APIRouter, Depends, File, HTTPException, UploadFile from fastapi.encoders import jsonable_encoder +from sqlmodel import Session, select + from langflow.api.utils import remove_api_keys, validate_is_component from langflow.api.v1.schemas import FlowListCreate, FlowListRead from langflow.services.auth.utils import get_current_active_user from langflow.services.database.models.flow import Flow, FlowCreate, FlowRead, FlowUpdate from langflow.services.database.models.user.model import User from langflow.services.deps import get_session, get_settings_service -from sqlmodel import Session, select # build router router = APIRouter(prefix="/flows", tags=["Flows"]) @@ -122,7 +123,7 @@ def create_flows( db_flows = [] for flow in flow_list.flows: flow.user_id = current_user.id - db_flow = Flow.from_orm(flow) + db_flow = Flow.model_validate(flow, from_attributes=True) session.add(db_flow) db_flows.append(db_flow) session.commit() diff --git a/src/backend/langflow/api/v1/users.py b/src/backend/langflow/api/v1/users.py index 9d4c3f32e..7a6d4b7c6 100644 --- a/src/backend/langflow/api/v1/users.py +++ b/src/backend/langflow/api/v1/users.py @@ -1,6 +1,11 @@ from uuid import UUID from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy import func +from sqlalchemy.exc import IntegrityError +from sqlmodel import Session, select +from sqlmodel.sql.expression import SelectOfScalar + from langflow.api.v1.schemas import UsersResponse from langflow.services.auth.utils import ( get_current_active_superuser, @@ -11,10 +16,6 @@ from langflow.services.auth.utils import ( from langflow.services.database.models.user import User, UserCreate, UserRead, UserUpdate from langflow.services.database.models.user.crud import get_user_by_id, update_user from langflow.services.deps import get_session, get_settings_service -from sqlalchemy import func -from sqlalchemy.exc import IntegrityError -from sqlmodel import Session, select -from sqlmodel.sql.expression import SelectOfScalar router = APIRouter(tags=["Users"], prefix="/users") @@ -28,7 +29,7 @@ def add_user( """ Add a new user to the database. """ - new_user = User.from_orm(user) + new_user = User.model_validate(user, from_attributes=True) try: new_user.password = get_password_hash(user.password) new_user.is_active = settings_service.auth_settings.NEW_USER_IS_ACTIVE diff --git a/src/backend/langflow/components/vectorstores/Chroma.py b/src/backend/langflow/components/vectorstores/Chroma.py index bf1273c43..f546eb361 100644 --- a/src/backend/langflow/components/vectorstores/Chroma.py +++ b/src/backend/langflow/components/vectorstores/Chroma.py @@ -1,4 +1,4 @@ -from typing import Optional, Union +from typing import List, Optional, Union import chromadb # type: ignore from langchain.embeddings.base import Embeddings @@ -56,7 +56,7 @@ class ChromaComponent(CustomComponent): embedding: Embeddings, chroma_server_ssl_enabled: bool, persist_directory: Optional[str] = None, - documents: Optional[Document] = None, + documents: Optional[List[Document]] = None, chroma_server_cors_allow_origins: Optional[str] = None, chroma_server_host: Optional[str] = None, chroma_server_port: Optional[int] = None, diff --git a/src/backend/langflow/services/database/models/api_key/crud.py b/src/backend/langflow/services/database/models/api_key/crud.py index e5c7d9ddd..33bdc7579 100644 --- a/src/backend/langflow/services/database/models/api_key/crud.py +++ b/src/backend/langflow/services/database/models/api_key/crud.py @@ -29,7 +29,7 @@ def create_api_key(session: Session, api_key_create: ApiKeyCreate, user_id: UUID session.add(api_key) session.commit() session.refresh(api_key) - unmasked = UnmaskedApiKeyRead.from_orm(api_key) + unmasked = UnmaskedApiKeyRead.model_validate(api_key, from_attributes=True) unmasked.api_key = generated_api_key return unmasked