feat: Persist locked state for flows (#4459)
* persist locked state for flows * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * 📝 (popover.tsx): Remove duplicate declaration of PopoverAnchor in popover.tsx ✨ (lock-flow.spec.ts): Add test for locking and unlocking a flow in the application to ensure proper functionality and saving of the flow. --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
This commit is contained in:
parent
f7ac4d5345
commit
ab4a587039
8 changed files with 185 additions and 5 deletions
|
|
@ -0,0 +1,35 @@
|
|||
"""add persistent locked state
|
||||
|
||||
Revision ID: e3162c1804e6
|
||||
Revises: 1eab2c3eb45e
|
||||
Create Date: 2024-11-07 14:50:35.201760
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
import sqlmodel
|
||||
from sqlalchemy.engine.reflection import Inspector
|
||||
from langflow.utils import migration
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = 'e3162c1804e6'
|
||||
down_revision: Union[str, None] = '1eab2c3eb45e'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
conn = op.get_bind()
|
||||
with op.batch_alter_table('flow', schema=None) as batch_op:
|
||||
if not migration.column_exists(table_name='flow', column_name='locked', conn=conn):
|
||||
batch_op.add_column(sa.Column('locked', sa.Boolean(), nullable=True))
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
conn = op.get_bind()
|
||||
with op.batch_alter_table('flow', schema=None) as batch_op:
|
||||
if migration.column_exists(table_name='flow', column_name='locked', conn=conn):
|
||||
batch_op.drop_column('locked')
|
||||
|
|
@ -37,6 +37,7 @@ class FlowBase(SQLModel):
|
|||
webhook: bool | None = Field(default=False, nullable=True, description="Can be used on the webhook endpoint")
|
||||
endpoint_name: str | None = Field(default=None, nullable=True, index=True)
|
||||
tags: list[str] | None = None
|
||||
locked: bool | None = Field(default=False, nullable=True)
|
||||
|
||||
@field_validator("endpoint_name")
|
||||
@classmethod
|
||||
|
|
@ -161,6 +162,7 @@ class Flow(FlowBase, table=True): # type: ignore[call-arg]
|
|||
user: "User" = Relationship(back_populates="flows")
|
||||
icon: str | None = Field(default=None, nullable=True)
|
||||
tags: list[str] | None = Field(sa_column=Column(JSON), default=[])
|
||||
locked: bool | None = Field(default=False, nullable=True)
|
||||
folder_id: UUID | None = Field(default=None, foreign_key="folder.id", nullable=True, index=True)
|
||||
folder: Optional["Folder"] = Relationship(back_populates="flows")
|
||||
messages: list["MessageTable"] = Relationship(back_populates="flow")
|
||||
|
|
@ -228,6 +230,7 @@ class FlowUpdate(SQLModel):
|
|||
data: dict | None = None
|
||||
folder_id: UUID | None = None
|
||||
endpoint_name: str | None = None
|
||||
locked: bool | None = None
|
||||
|
||||
@field_validator("endpoint_name")
|
||||
@classmethod
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue