From e5c6836ffa4ed3e4834c93ea3d7948d0bf00cc90 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 17 Nov 2023 18:24:17 +0100 Subject: [PATCH] fix template editor --- ...85568cb4f7d5b8b6a95f1f669c59f0355752.json} | 4 ++-- ...e2917afbcb249dbf52c82f06c943f0e1185d.json} | 4 ++-- backend/windmill-api/src/workspaces.rs | 20 +++++++++++++++++-- .../lib/components/InputTransformForm.svelte | 1 + .../src/lib/components/TemplateEditor.svelte | 18 ++++++++--------- 5 files changed, 32 insertions(+), 15 deletions(-) rename backend/.sqlx/{query-9db64c9ff790d8c833c1e831a87803c32103ce9de68cc9c08d6f56cc988d7e37.json => query-8c5e13df05fca96685deb44631b285568cb4f7d5b8b6a95f1f669c59f0355752.json} (75%) rename backend/.sqlx/{query-d4bf68b4c2bfd11db84787e41e92c13612fda7352e841f3cdef45ea762588f04.json => query-9739c91f85f36367cec44b12c921e2917afbcb249dbf52c82f06c943f0e1185d.json} (50%) diff --git a/backend/.sqlx/query-9db64c9ff790d8c833c1e831a87803c32103ce9de68cc9c08d6f56cc988d7e37.json b/backend/.sqlx/query-8c5e13df05fca96685deb44631b285568cb4f7d5b8b6a95f1f669c59f0355752.json similarity index 75% rename from backend/.sqlx/query-9db64c9ff790d8c833c1e831a87803c32103ce9de68cc9c08d6f56cc988d7e37.json rename to backend/.sqlx/query-8c5e13df05fca96685deb44631b285568cb4f7d5b8b6a95f1f669c59f0355752.json index 006b8bd912..95e8cfd5d4 100644 --- a/backend/.sqlx/query-9db64c9ff790d8c833c1e831a87803c32103ce9de68cc9c08d6f56cc988d7e37.json +++ b/backend/.sqlx/query-8c5e13df05fca96685deb44631b285568cb4f7d5b8b6a95f1f669c59f0355752.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT workspace_id, auto_invite_operator FROM workspace_settings WHERE auto_invite_domain = $1", + "query": "SELECT workspace_id, auto_invite_operator FROM workspace_settings WHERE auto_invite_domain = $1 OR auto_invite_domain = '*'", "describe": { "columns": [ { @@ -24,5 +24,5 @@ true ] }, - "hash": "9db64c9ff790d8c833c1e831a87803c32103ce9de68cc9c08d6f56cc988d7e37" + "hash": "8c5e13df05fca96685deb44631b285568cb4f7d5b8b6a95f1f669c59f0355752" } diff --git a/backend/.sqlx/query-d4bf68b4c2bfd11db84787e41e92c13612fda7352e841f3cdef45ea762588f04.json b/backend/.sqlx/query-9739c91f85f36367cec44b12c921e2917afbcb249dbf52c82f06c943f0e1185d.json similarity index 50% rename from backend/.sqlx/query-d4bf68b4c2bfd11db84787e41e92c13612fda7352e841f3cdef45ea762588f04.json rename to backend/.sqlx/query-9739c91f85f36367cec44b12c921e2917afbcb249dbf52c82f06c943f0e1185d.json index 605f1c1977..af628eb1bd 100644 --- a/backend/.sqlx/query-d4bf68b4c2bfd11db84787e41e92c13612fda7352e841f3cdef45ea762588f04.json +++ b/backend/.sqlx/query-9739c91f85f36367cec44b12c921e2917afbcb249dbf52c82f06c943f0e1185d.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "INSERT INTO workspace_invite\n (workspace_id, email, is_admin, operator)\n SELECT $1::text, email, false, $3 FROM password WHERE email LIKE CONCAT('%', $2::text) AND NOT EXISTS (\n SELECT 1 FROM usr WHERE workspace_id = $1::text AND email = password.email\n )\n ON CONFLICT DO NOTHING", + "query": "INSERT INTO workspace_invite\n (workspace_id, email, is_admin, operator)\n SELECT $1::text, email, false, $3 FROM password WHERE $2::text = '*' OR email LIKE CONCAT('%', $2::text) AND NOT EXISTS (\n SELECT 1 FROM usr WHERE workspace_id = $1::text AND email = password.email\n )\n ON CONFLICT DO NOTHING", "describe": { "columns": [], "parameters": { @@ -12,5 +12,5 @@ }, "nullable": [] }, - "hash": "d4bf68b4c2bfd11db84787e41e92c13612fda7352e841f3cdef45ea762588f04" + "hash": "9739c91f85f36367cec44b12c921e2917afbcb249dbf52c82f06c943f0e1185d" } diff --git a/backend/windmill-api/src/workspaces.rs b/backend/windmill-api/src/workspaces.rs index d9003da4c9..1642d9346a 100644 --- a/backend/windmill-api/src/workspaces.rs +++ b/backend/windmill-api/src/workspaces.rs @@ -42,6 +42,7 @@ use windmill_audit::{audit_log, ActionKind}; use windmill_common::db::UserDB; use windmill_common::schedule::Schedule; use windmill_common::users::username_to_permissioned_as; +use windmill_common::worker::CLOUD_HOSTED; use windmill_common::{ error::{to_anyhow, Error, JsonResult, Result}, flows::Flow, @@ -192,6 +193,7 @@ struct EditDeployTo { #[derive(Deserialize)] struct EditAutoInvite { operator: Option, + invite_all: Option, } #[derive(Deserialize)] @@ -738,6 +740,20 @@ async fn edit_auto_invite( Json(ea): Json, ) -> Result { require_admin(is_admin, &username)?; + + // #[cfg(not(feature = "enterprise"))] + // { + // return Err(Error::BadRequest( + // "Auto-invite is only available on enterprise".to_string(), + // )); + // } + + if ea.invite_all.is_some_and(|x| x) && *CLOUD_HOSTED { + return Err(Error::BadRequest( + "invite_all is only available locally".to_string(), + )); + + } let domain = email.split('@').last().unwrap(); let mut tx = db.begin().await?; @@ -762,7 +778,7 @@ async fn edit_auto_invite( sqlx::query!( "INSERT INTO workspace_invite (workspace_id, email, is_admin, operator) - SELECT $1::text, email, false, $3 FROM password WHERE email LIKE CONCAT('%', $2::text) AND NOT EXISTS ( + SELECT $1::text, email, false, $3 FROM password WHERE $2::text = '*' OR email LIKE CONCAT('%', $2::text) AND NOT EXISTS ( SELECT 1 FROM usr WHERE workspace_id = $1::text AND email = password.email ) ON CONFLICT DO NOTHING", @@ -1423,7 +1439,7 @@ pub async fn invite_user_to_all_auto_invite_worspaces(db: &DB, email: &str) -> R let mut tx = db.begin().await?; let domain = email.split('@').last().unwrap(); let workspaces = sqlx::query!( - "SELECT workspace_id, auto_invite_operator FROM workspace_settings WHERE auto_invite_domain = $1", + "SELECT workspace_id, auto_invite_operator FROM workspace_settings WHERE auto_invite_domain = $1 OR auto_invite_domain = '*'", domain ) .fetch_all(&mut *tx) diff --git a/frontend/src/lib/components/InputTransformForm.svelte b/frontend/src/lib/components/InputTransformForm.svelte index 684bb6d4ed..8ec0e0f593 100644 --- a/frontend/src/lib/components/InputTransformForm.svelte +++ b/frontend/src/lib/components/InputTransformForm.svelte @@ -270,6 +270,7 @@ {#if isStaticTemplate(inputCat) && propertyType == 'static' && !noDynamicToggle}
{#if arg} + {arg.value} { + timeoutModel && clearTimeout(timeoutModel) + timeoutModel = setTimeout(() => { + code = getCode() + dispatch('change', { code }) + }, 200) + }) + extraModel = meditor.createModel('`' + model.getValue() + '`', 'javascript') const worker = await languages.typescript.getJavaScriptWorker() const client = await worker(extraModel.uri) @@ -529,15 +538,6 @@ } }) - let timeoutModel: NodeJS.Timeout | undefined = undefined - editor.onDidChangeModelContent((event) => { - timeoutModel && clearTimeout(timeoutModel) - timeoutModel = setTimeout(() => { - code = getCode() - dispatch('change', { code }) - }, 200) - }) - if (autoHeight) { const updateHeight = () => { const contentHeight = Math.min(1000, editor.getContentHeight())