From 5dcab90ef324febfc399274687a34513d0c0dcd0 Mon Sep 17 00:00:00 2001 From: luolu Date: Wed, 21 Sep 2022 03:17:38 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0ArkID=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/views/platform_config.py | 24 ++++++++++++++++++++---- arkid/core/event.py | 4 ++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/api/v1/views/platform_config.py b/api/v1/views/platform_config.py index 0b4bfc00a..45a2f68fb 100644 --- a/api/v1/views/platform_config.py +++ b/api/v1/views/platform_config.py @@ -8,7 +8,7 @@ from api.v1.schema.platform_config import * from arkid.core.models import Platform from arkid.core.error import ErrorCode, ErrorDict, SuccessDict -from arkid.core.event import Event, dispatch_event, SET_FRONTEND_URL +from arkid.core.event import Event, dispatch_event, SET_FRONTEND_URL, UPDATE_LOCAL_ARKID_VERSION @api.get("/platform_config/",response=PlatformConfigOut, tags=["平台配置"]) @@ -103,20 +103,36 @@ def set_frontend_url(request, data:FrontendUrlSchemaIn): ) -@api.get("/version/",response=VersionOut, tags=["平台配置"], auth=None) -def get_version(request): +@api.get("/version/",response=VersionOut, tags=["平台配置"]) +@operation(roles=[NORMAL_USER, TENANT_ADMIN, PLATFORM_ADMIN]) +def get_version(request, local_version=None): """ 获取ArkId版本 """ version = os.environ.get('ARKID_VERSION', '') update_url = settings.UPDATE_URL if settings.IS_CENTRAL_ARKID: + if local_version: + dispatch_event( + Event( + tag=UPDATE_LOCAL_ARKID_VERSION, + tenant=request.tenant, + request=request, + data = {"local_version": local_version} + ) + ) new_version = '' update_available = False else: try: + from arkid.common.arkstore import get_saas_token + token = request.user.auth_token + tenant = request.tenant + saas_token, saas_tenant_id, saas_tenant_slug = get_saas_token(tenant, token) arkid_saas_version_url = settings.ARKID_SAAS_URL + '/api/v1/version/' - resp = requests.get(arkid_saas_version_url, timeout=5).json() + headers = {'Authorization': f'Token {saas_token}'} + params = {"local_version": version} + resp = requests.get(arkid_saas_version_url, params=params, headers=headers, timeout=5).json() new_version = resp.get('data', {}).get('version', '') if version and new_version and version < new_version: update_available = True diff --git a/arkid/core/event.py b/arkid/core/event.py index 16a1d66ac..02dfc5026 100644 --- a/arkid/core/event.py +++ b/arkid/core/event.py @@ -373,6 +373,8 @@ def unlisten_event(tag, func, **kwargs): GET_STATISTICS_CHARTS = 'GET_STATISTICS_CHARTS' +UPDATE_LOCAL_ARKID_VERSION = 'UPDATE_LOCAL_ARKID_VERSION' + # register events register_event( @@ -465,3 +467,5 @@ def unlisten_event(tag, func, **kwargs): register_event(REQUEST_RESPONSE_LOGGGING, _('REQUEST_RESPONSE_LOGGGING', 'Django请求日志')) register_event(GET_STATISTICS_CHARTS, _('GET_STATISTICS_CHARTS', 'Django请求日志')) + +register_event(UPDATE_LOCAL_ARKID_VERSION, _('UPDATE_LOCAL_ARKID_VERSION', '更新本地ArkID版本'))