From 2574028ad1125e62e1484108fdd09b1964f6bb7b Mon Sep 17 00:00:00 2001 From: jingrow Date: Wed, 11 Mar 2026 17:10:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0get=5Flist,get=5Fvalue?= =?UTF-8?q?=E7=AD=89=E5=90=8E=E7=AB=AFapi=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/jingrow/jingrow/ai/utils/jlocal.py | 31 +++++++++ apps/jingrow/jingrow/client.py | 65 +++++++++++++++++++ apps/jingrow/jingrow/core/__init__.py | 0 .../jingrow/jingrow/core/pagetype/__init__.py | 1 + .../core/pagetype/local_job/__init__.py | 1 + .../core/pagetype/local_job/local_job.py | 31 +++++++++ apps/jingrow/jingrow/desk/desktop.py | 48 ++++++++++++++ 7 files changed, 177 insertions(+) create mode 100644 apps/jingrow/jingrow/ai/utils/jlocal.py create mode 100644 apps/jingrow/jingrow/client.py create mode 100644 apps/jingrow/jingrow/core/__init__.py create mode 100644 apps/jingrow/jingrow/core/pagetype/__init__.py create mode 100644 apps/jingrow/jingrow/core/pagetype/local_job/__init__.py create mode 100644 apps/jingrow/jingrow/core/pagetype/local_job/local_job.py create mode 100644 apps/jingrow/jingrow/desk/desktop.py diff --git a/apps/jingrow/jingrow/ai/utils/jlocal.py b/apps/jingrow/jingrow/ai/utils/jlocal.py new file mode 100644 index 0000000..2da6bcf --- /dev/null +++ b/apps/jingrow/jingrow/ai/utils/jlocal.py @@ -0,0 +1,31 @@ +# Copyright (c) 2025, JINGROW and contributors +# For license information, please see license.txt + +""" +jlocal 相关白名单函数 - 转发到 SaaS 端 +""" + +import jingrow +import requests +import logging +from jingrow.config import Config +from jingrow.utils.auth import get_request_session_cookie + +logger = logging.getLogger(__name__) + + +@jingrow.whitelist() +def get_user_pagetype_permissions(**kwargs): + """获取用户 PageType 权限 - 转发到 SaaS 端""" + url = f"{Config.jingrow_server_url}/api/action/jingrow.ai.utils.jlocal.get_user_pagetype_permissions" + headers = {"Accept": "application/json", "Content-Type": "application/json"} + + session_cookie = get_request_session_cookie() + if session_cookie: + headers["Cookie"] = f"sid={session_cookie}" + + resp = requests.post(url, headers=headers, json=kwargs, timeout=30) + if resp.status_code == 200: + return resp.json().get("message", {}) + logger.error(f"[get_user_pagetype_permissions] SaaS error: {resp.status_code} - {resp.text[:200]}") + return {} diff --git a/apps/jingrow/jingrow/client.py b/apps/jingrow/jingrow/client.py new file mode 100644 index 0000000..e03a0f1 --- /dev/null +++ b/apps/jingrow/jingrow/client.py @@ -0,0 +1,65 @@ +# Copyright (c) 2025, JINGROW and contributors +# For license information, please see license.txt + +""" +Client 相关白名单函数 - 转发到 SaaS 端 +""" + +import jingrow +import requests +import logging +from jingrow.config import Config +from jingrow.utils.auth import get_request_session_cookie + +logger = logging.getLogger(__name__) + + +@jingrow.whitelist() +def get_list(**kwargs): + """获取列表 - 转发到 SaaS 端""" + url = f"{Config.jingrow_server_url}/api/action/jingrow.client.get_list" + headers = {"Accept": "application/json", "Content-Type": "application/json"} + + session_cookie = get_request_session_cookie() + if session_cookie: + headers["Cookie"] = f"sid={session_cookie}" + + resp = requests.post(url, headers=headers, json=kwargs, timeout=30) + if resp.status_code == 200: + return resp.json().get("message", []) + logger.error(f"[get_list] SaaS error: {resp.status_code} - {resp.text[:200]}") + return [] + + +@jingrow.whitelist() +def get_value(**kwargs): + """获取值 - 转发到 SaaS 端""" + url = f"{Config.jingrow_server_url}/api/action/jingrow.client.get_value" + headers = {"Accept": "application/json", "Content-Type": "application/json"} + + session_cookie = get_request_session_cookie() + if session_cookie: + headers["Cookie"] = f"sid={session_cookie}" + + resp = requests.post(url, headers=headers, json=kwargs, timeout=30) + if resp.status_code == 200: + return resp.json().get("message") + logger.error(f"[get_value] SaaS error: {resp.status_code} - {resp.text[:200]}") + return None + + +@jingrow.whitelist() +def get_count(**kwargs): + """获取计数 - 转发到 SaaS 端""" + url = f"{Config.jingrow_server_url}/api/action/jingrow.client.get_count" + headers = {"Accept": "application/json", "Content-Type": "application/json"} + + session_cookie = get_request_session_cookie() + if session_cookie: + headers["Cookie"] = f"sid={session_cookie}" + + resp = requests.get(url, headers=headers, params=kwargs, timeout=30) + if resp.status_code == 200: + return resp.json().get("message", 0) + logger.error(f"[get_count] SaaS error: {resp.status_code} - {resp.text[:200]}") + return 0 diff --git a/apps/jingrow/jingrow/core/__init__.py b/apps/jingrow/jingrow/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/jingrow/jingrow/core/pagetype/__init__.py b/apps/jingrow/jingrow/core/pagetype/__init__.py new file mode 100644 index 0000000..f0f5951 --- /dev/null +++ b/apps/jingrow/jingrow/core/pagetype/__init__.py @@ -0,0 +1 @@ +# Core pagetype package diff --git a/apps/jingrow/jingrow/core/pagetype/local_job/__init__.py b/apps/jingrow/jingrow/core/pagetype/local_job/__init__.py new file mode 100644 index 0000000..e1bb77e --- /dev/null +++ b/apps/jingrow/jingrow/core/pagetype/local_job/__init__.py @@ -0,0 +1 @@ +# Local job package diff --git a/apps/jingrow/jingrow/core/pagetype/local_job/local_job.py b/apps/jingrow/jingrow/core/pagetype/local_job/local_job.py new file mode 100644 index 0000000..c14a7b9 --- /dev/null +++ b/apps/jingrow/jingrow/core/pagetype/local_job/local_job.py @@ -0,0 +1,31 @@ +# Copyright (c) 2025, JINGROW and contributors +# For license information, please see license.txt + +""" +Local Job 相关白名单函数 - 转发到 SaaS 端 +""" + +import jingrow +import requests +import logging +from jingrow.config import Config +from jingrow.utils.auth import get_request_session_cookie + +logger = logging.getLogger(__name__) + + +@jingrow.whitelist() +def get_local_job_count(**kwargs): + """获取本地任务计数 - 转发到 SaaS 端""" + url = f"{Config.jingrow_server_url}/api/action/jingrow.core.pagetype.local_job.local_job.get_local_job_count" + headers = {"Accept": "application/json", "Content-Type": "application/json"} + + session_cookie = get_request_session_cookie() + if session_cookie: + headers["Cookie"] = f"sid={session_cookie}" + + resp = requests.get(url, headers=headers, params=kwargs, timeout=30) + if resp.status_code == 200: + return resp.json().get("message", 0) + logger.error(f"[get_local_job_count] SaaS error: {resp.status_code}") + return 0 diff --git a/apps/jingrow/jingrow/desk/desktop.py b/apps/jingrow/jingrow/desk/desktop.py new file mode 100644 index 0000000..efd3115 --- /dev/null +++ b/apps/jingrow/jingrow/desk/desktop.py @@ -0,0 +1,48 @@ +# Copyright (c) 2025, JINGROW and contributors +# For license information, please see license.txt + +""" +Desktop 相关白名单函数 - 转发到 SaaS 端 +""" + +import jingrow +import requests +import logging +from jingrow.config import Config +from jingrow.utils.auth import get_request_session_cookie + +logger = logging.getLogger(__name__) + + +@jingrow.whitelist() +def get_workspace_sidebar_items(**kwargs): + """获取工作区侧边栏项目 - 转发到 SaaS 端""" + url = f"{Config.jingrow_server_url}/api/action/jingrow.desk.desktop.get_workspace_sidebar_items" + headers = {"Accept": "application/json", "Content-Type": "application/json"} + + session_cookie = get_request_session_cookie() + if session_cookie: + headers["Cookie"] = f"sid={session_cookie}" + + resp = requests.post(url, headers=headers, json=kwargs, timeout=30) + if resp.status_code == 200: + return resp.json().get("message", {}) + logger.error(f"[get_workspace_sidebar_items] SaaS error: {resp.status_code}") + return {} + + +@jingrow.whitelist() +def get_desktop_page(**kwargs): + """获取桌面页面 - 转发到 SaaS 端""" + url = f"{Config.jingrow_server_url}/api/action/jingrow.desk.desktop.get_desktop_page" + headers = {"Accept": "application/json", "Content-Type": "application/json"} + + session_cookie = get_request_session_cookie() + if session_cookie: + headers["Cookie"] = f"sid={session_cookie}" + + resp = requests.post(url, headers=headers, json=kwargs, timeout=30) + if resp.status_code == 200: + return resp.json().get("message", {}) + logger.error(f"[get_desktop_page] SaaS error: {resp.status_code}") + return {}