Update project components with latest versions
This commit is contained in:
parent
07e1d2a459
commit
fdd5ecc87d
2 changed files with 38 additions and 1 deletions
|
|
@ -6,8 +6,9 @@ from emoji import demojize, purely_emoji
|
|||
from loguru import logger
|
||||
from sqlmodel import select
|
||||
|
||||
from langflow.interface.types import get_all_components
|
||||
from langflow.services.database.models.flow.model import Flow, FlowCreate
|
||||
from langflow.services.deps import session_scope
|
||||
from langflow.services.deps import get_settings_service, session_scope
|
||||
|
||||
STARTER_FOLDER_NAME = "Starter Projects"
|
||||
|
||||
|
|
@ -17,6 +18,23 @@ STARTER_FOLDER_NAME = "Starter Projects"
|
|||
# can use them as a starting point for their own projects.
|
||||
|
||||
|
||||
def update_projects_components_with_latest_component_versions(
|
||||
project_data, all_types_dict
|
||||
):
|
||||
|
||||
# project data has a nodes key, which is a list of nodes
|
||||
# we want to run through each node and see if it exists in the all_types_dict
|
||||
# if so, we go into the template key and also get the template from all_types_dict
|
||||
# and update it all
|
||||
for node in project_data.get("nodes", []):
|
||||
node_data = node.get("data").get("node")
|
||||
if node_data.get("display_name") in all_types_dict:
|
||||
latest_node = all_types_dict.get(node_data.get("display_name"))
|
||||
latest_template = latest_node.get("template")
|
||||
node_data["template"]["code"] = latest_template["code"]
|
||||
return project_data
|
||||
|
||||
|
||||
def load_starter_projects():
|
||||
starter_projects = []
|
||||
folder = Path(__file__).parent / "starter_projects"
|
||||
|
|
@ -115,6 +133,8 @@ def delete_start_projects(session):
|
|||
|
||||
|
||||
def create_or_update_starter_projects():
|
||||
components_paths = get_settings_service().settings.COMPONENTS_PATH
|
||||
all_types_dict = get_all_components(components_paths, as_dict=True)
|
||||
with session_scope() as session:
|
||||
starter_projects = load_starter_projects()
|
||||
delete_start_projects(session)
|
||||
|
|
@ -128,6 +148,9 @@ def create_or_update_starter_projects():
|
|||
project_icon,
|
||||
project_icon_bg_color,
|
||||
) = get_project_data(project)
|
||||
project_data = update_projects_components_with_latest_component_versions(
|
||||
project_data, all_types_dict
|
||||
)
|
||||
if project_name and project_data:
|
||||
for existing_project in get_all_flows_similar_to_project(
|
||||
session, project_name
|
||||
|
|
|
|||
|
|
@ -72,3 +72,17 @@ def get_all_types_dict(components_paths):
|
|||
return merge_nested_dicts_with_renaming(
|
||||
native_components, custom_components_from_file
|
||||
)
|
||||
|
||||
|
||||
def get_all_components(components_paths, as_dict=False):
|
||||
"""Get all components names combining native and custom components."""
|
||||
all_types_dict = get_all_types_dict(components_paths)
|
||||
components = [] if not as_dict else {}
|
||||
for category in all_types_dict.values():
|
||||
for component in category.values():
|
||||
component["name"] = component["display_name"]
|
||||
if as_dict:
|
||||
components[component["name"]] = component
|
||||
else:
|
||||
components.append(component)
|
||||
return components
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue