From 46deee831f007d62ff098f1f4a45bb9c1410559d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=80=86=E6=B5=81=E8=80=8C=E4=B8=8A?= <62740231+DokiDoki1103@users.noreply.github.com> Date: Fri, 26 Jul 2024 14:26:43 +0800 Subject: [PATCH] feat: support config oss (#1479) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: support config oss Signed-off-by: 逆流而上 <1666888816@qq.com> * feat: support config oss Signed-off-by: 逆流而上 <1666888816@qq.com> * feat: support config oss Signed-off-by: 逆流而上 <1666888816@qq.com> * feat: support config oss Signed-off-by: 逆流而上 <1666888816@qq.com> --------- Signed-off-by: 逆流而上 <1666888816@qq.com> --- console/services/file_upload_service.py | 8 +- console/urls.py | 3 +- console/views/logos.py | 189 ++++++++++++++---------- 3 files changed, 122 insertions(+), 78 deletions(-) diff --git a/console/services/file_upload_service.py b/console/services/file_upload_service.py index dd7861d065..3ac06b1ac0 100644 --- a/console/services/file_upload_service.py +++ b/console/services/file_upload_service.py @@ -2,12 +2,14 @@ """ Created on 18/3/13. """ +import json import logging import os import oss2 from django.conf import settings +from console.models.main import ConsoleSysConfig from goodrain_web.custom_config import custom_config as custom_settings from www.utils.crypt import make_uuid @@ -53,7 +55,11 @@ def get_bucket(self): return bucket def is_upload_to_oss(self): - return settings.MODULES.get('SSO_LOGIN') + oss_config = ConsoleSysConfig.objects.filter(key='OSS_CONFIG').first() + if oss_config: + data = json.loads(oss_config.value) + return len(data) == 4 + return False def upload_file_to_local(self, upload_file, suffix): try: diff --git a/console/urls.py b/console/urls.py index d0d9ebb434..0419f5eddb 100644 --- a/console/urls.py +++ b/console/urls.py @@ -92,7 +92,7 @@ from console.views.jwt_token_view import JWTTokenView from console.views.k8s_attribute import ComponentK8sAttributeView, ComponentK8sAttributeListView from console.views.k8s_resource import AppK8sResourceListView, AppK8ResourceView -from console.views.logos import ConfigRUDView, InitPerms, PhpConfigView +from console.views.logos import ConfigRUDView, InitPerms, PhpConfigView, ConfigOSSView from console.views.message import UserMessageView from console.views.oauth import (EnterpriseOauthService, OauthConfig, OAuthGitCodeDetection, OAuthGitUserRepositories, OAuthGitUserRepository, OAuthGitUserRepositoryBranches, OAuthServerAuthorize, @@ -164,6 +164,7 @@ url(r'^errlog$', ErrLogView.as_view()), # 获取云帮Logo、标题、github、gitlab配置信息 url(r'^config/info$', ConfigRUDView.as_view()), + url(r'^config/oss$', ConfigOSSView.as_view()), url(r'^init/perms$', InitPerms.as_view()), # 获取权限列表 url(r'^perms$', PermsInfoLView.as_view()), diff --git a/console/views/logos.py b/console/views/logos.py index 657a676dc0..3b0eb252aa 100644 --- a/console/views/logos.py +++ b/console/views/logos.py @@ -1,11 +1,14 @@ # -*- coding: utf8 -*- +import json import logging import os +from datetime import datetime from django.db import transaction from rest_framework.response import Response from console.exception.main import ServiceHandleException +from console.models.main import ConsoleSysConfig from console.repositories.perm_repo import perms_repo from console.repositories.team_repo import team_repo from console.services.config_service import platform_config_service @@ -13,6 +16,7 @@ from console.services.perm_services import user_kind_role_service from console.views.base import AlowAnyApiView from console.views.base import BaseApiView +from console.views.jwt_token_view import JWTTokenView from www.models.main import Tenants from www.utils.return_message import error_message from www.utils.return_message import general_message @@ -20,6 +24,39 @@ logger = logging.getLogger("default") +class ConfigOSSView(JWTTokenView): + + def get(self, request, *args, **kwargs): + oss_config = ConsoleSysConfig.objects.filter(key='OSS_CONFIG').first() + if oss_config: + data = json.loads(oss_config.value) + return Response(data=data, status=200) + return Response(data={}, status=200) + + def put(self, request, *args, **kwargs): + oss_config = ConsoleSysConfig.objects.filter(key='OSS_CONFIG').first() + + # 如果已存在,则更新;如果不存在,则创建 + if oss_config: + oss_config.value = json.dumps(request.data) + oss_config.desc = 'OSS 配置' + oss_config.create_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + oss_config.save() + data = {'message': '配置更新成功'} + else: + new_config = ConsoleSysConfig.objects.create( + key='OSS_CONFIG', + type='json', + value=json.dumps(request.data), + desc='OSS 配置', + create_time=datetime.now().strftime('%Y-%m-%d %H:%M:%S'), + enterprise_id="" + ) + data = {'message': '配置创建成功', 'config_id': new_config.ID} + + return Response(data=data, status=200) + + class ConfigRUDView(AlowAnyApiView): """ 获取配置信息 @@ -148,82 +185,82 @@ def get(self, request, *args, **kwargs): "url": "http://docs.php.net/mbstring", "version": "1.3.2" }, - { - "name": "MySQL(PHP 5.5 版本已经停止支持,请使用 MySQLi 或 PDO)", - "value": "mysql", - "url": "http://docs.php.net/book.mysql", - "version": "mysqlnd 5.0.11-dev" - }, { - "name": "PCNTL", - "value": "pcntl", - "url": "http://docs.php.net/pcntl", - "version": None - }, { - "name": "Shmop", - "value": "shmop", - "url": "http://docs.php.net/shmop", - "version": None - }, { - "name": "SOAP", - "value": "soap", - "url": "http://docs.php.net/soap", - "version": None - }, { - "name": "SQLite3", - "value": "sqlite3", - "url": "http://docs.php.net/sqlite3", - "version": "0.7-dev" - }, { - "name": "SQLite(PDO)", - "value": "pdo_sqlite", - "url": "http://docs.php.net/pdo_sqlite", - "version": "3.8.2" - }, { - "name": "XMLRPC", - "value": "xmlrpc", - "url": "http://docs.php.net/xmlrpc", - "version": "0.51" - }, { - "name": "XSL", - "value": "xsl", - "url": "http://docs.php.net/xsl", - "version": "1.1.28" - }, { - "name": "APCu", - "value": "apcu", - "url": "http://pecl.php.net/package/apcu", - "version": "4.0.6" - }, { - "name": "Blackfire", - "value": "blackfire", - "url": "http://blackfire.io/", - "version": "0.20.6" - }, { - "name": "memcached", - "value": "memcached", - "url": "http://docs.php.net/memcached", - "version": "2.2.0" - }, { - "name": "MongoDB", - "value": "mongodb", - "url": "http://docs.php.net/mongo", - "version": "1.6.6" - }, { - "name": "NewRelic", - "value": "newrelic", - "url": "http://newrelic.com/php", - "version": "4.19.0.90" - }, { - "name": "OAuth", - "value": "oauth", - "url": "http://docs.php.net/oauth", - "version": "1.2.3" - }, { - "name": "PHPRedis", - "value": "redis", - "url": "http://pecl.php.net/package/redis", - "version": "2.2.7" - }] + { + "name": "MySQL(PHP 5.5 版本已经停止支持,请使用 MySQLi 或 PDO)", + "value": "mysql", + "url": "http://docs.php.net/book.mysql", + "version": "mysqlnd 5.0.11-dev" + }, { + "name": "PCNTL", + "value": "pcntl", + "url": "http://docs.php.net/pcntl", + "version": None + }, { + "name": "Shmop", + "value": "shmop", + "url": "http://docs.php.net/shmop", + "version": None + }, { + "name": "SOAP", + "value": "soap", + "url": "http://docs.php.net/soap", + "version": None + }, { + "name": "SQLite3", + "value": "sqlite3", + "url": "http://docs.php.net/sqlite3", + "version": "0.7-dev" + }, { + "name": "SQLite(PDO)", + "value": "pdo_sqlite", + "url": "http://docs.php.net/pdo_sqlite", + "version": "3.8.2" + }, { + "name": "XMLRPC", + "value": "xmlrpc", + "url": "http://docs.php.net/xmlrpc", + "version": "0.51" + }, { + "name": "XSL", + "value": "xsl", + "url": "http://docs.php.net/xsl", + "version": "1.1.28" + }, { + "name": "APCu", + "value": "apcu", + "url": "http://pecl.php.net/package/apcu", + "version": "4.0.6" + }, { + "name": "Blackfire", + "value": "blackfire", + "url": "http://blackfire.io/", + "version": "0.20.6" + }, { + "name": "memcached", + "value": "memcached", + "url": "http://docs.php.net/memcached", + "version": "2.2.0" + }, { + "name": "MongoDB", + "value": "mongodb", + "url": "http://docs.php.net/mongo", + "version": "1.6.6" + }, { + "name": "NewRelic", + "value": "newrelic", + "url": "http://newrelic.com/php", + "version": "4.19.0.90" + }, { + "name": "OAuth", + "value": "oauth", + "url": "http://docs.php.net/oauth", + "version": "1.2.3" + }, { + "name": "PHPRedis", + "value": "redis", + "url": "http://pecl.php.net/package/redis", + "version": "2.2.7" + }] bean = {"versions": versions, "default_version": default_version, "extends": extends} return Response(general_message(200, "success", "查询成功", bean))