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 loguru import logger
|
||||||
from sqlmodel import select
|
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.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"
|
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.
|
# 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():
|
def load_starter_projects():
|
||||||
starter_projects = []
|
starter_projects = []
|
||||||
folder = Path(__file__).parent / "starter_projects"
|
folder = Path(__file__).parent / "starter_projects"
|
||||||
|
|
@ -115,6 +133,8 @@ def delete_start_projects(session):
|
||||||
|
|
||||||
|
|
||||||
def create_or_update_starter_projects():
|
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:
|
with session_scope() as session:
|
||||||
starter_projects = load_starter_projects()
|
starter_projects = load_starter_projects()
|
||||||
delete_start_projects(session)
|
delete_start_projects(session)
|
||||||
|
|
@ -128,6 +148,9 @@ def create_or_update_starter_projects():
|
||||||
project_icon,
|
project_icon,
|
||||||
project_icon_bg_color,
|
project_icon_bg_color,
|
||||||
) = get_project_data(project)
|
) = get_project_data(project)
|
||||||
|
project_data = update_projects_components_with_latest_component_versions(
|
||||||
|
project_data, all_types_dict
|
||||||
|
)
|
||||||
if project_name and project_data:
|
if project_name and project_data:
|
||||||
for existing_project in get_all_flows_similar_to_project(
|
for existing_project in get_all_flows_similar_to_project(
|
||||||
session, project_name
|
session, project_name
|
||||||
|
|
|
||||||
|
|
@ -72,3 +72,17 @@ def get_all_types_dict(components_paths):
|
||||||
return merge_nested_dicts_with_renaming(
|
return merge_nested_dicts_with_renaming(
|
||||||
native_components, custom_components_from_file
|
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