diff --git a/src/backend/langflow/api/v1/store.py b/src/backend/langflow/api/v1/store.py index 3f3bf825b..bd8bba3b0 100644 --- a/src/backend/langflow/api/v1/store.py +++ b/src/backend/langflow/api/v1/store.py @@ -17,7 +17,7 @@ from langflow.services.store.schema import ( UsersLikesResponse, ) from langflow.services.store.service import StoreService, user_data_context -from langflow.services.store.utils import update_components_with_user_data +from langflow.services.store.utils import get_lf_version_from_pypi, update_components_with_user_data router = APIRouter(prefix="/store", tags=["Components Store"]) @@ -67,6 +67,21 @@ def create_component( store_api_Key: str = Depends(get_user_store_api_key), ): try: + # Verify if this is the latest version of Langflow + # If not, raise an error + langflow_version = get_lf_version_from_pypi() + if langflow_version is None: + raise HTTPException( + status_code=500, + detail="Unable to verify the latest version of Langflow", + ) + elif langflow_version != component.last_tested_version: + # If the user is using an older version of Langflow, we need to raise an error + raise ValueError( + f"Your version of Langflow ({component.last_tested_version}) is outdated." + " Please update to the latest version ({langflow_version}) and try again." + ) + return store_service.upload(store_api_Key, component) except Exception as exc: raise HTTPException(status_code=400, detail=str(exc)) @@ -190,8 +205,8 @@ async def like_component( store_api_Key: str = Depends(get_user_store_api_key), ): try: - result = await store_service.like_component(store_api_Key, component_id) - likes_count = await store_service.get_component_likes_count(store_api_Key, component_id) + result = await store_service.like_component(store_api_Key, str(component_id)) + likes_count = await store_service.get_component_likes_count(store_api_Key, str(component_id)) return UsersLikesResponse(likes_count=likes_count, liked_by_user=result) except Exception as exc: diff --git a/src/backend/langflow/services/store/utils.py b/src/backend/langflow/services/store/utils.py index 309516f1c..091bb922b 100644 --- a/src/backend/langflow/services/store/utils.py +++ b/src/backend/langflow/services/store/utils.py @@ -36,3 +36,13 @@ async def update_components_with_user_data( component.liked_by_user = str(component.id) in liked_by_user_ids return components + + +# Get the latest released version of langflow (https://pypi.org/project/langflow/) +def get_lf_version_from_pypi(): + import requests + + response = requests.get("https://pypi.org/pypi/langflow/json") + if response.status_code != 200: + return None + return response.json()["info"]["version"]