From c3e3e6419c333452eb5c7040004a8761ecaae8fe Mon Sep 17 00:00:00 2001
From: vapao
Date: Mon, 31 Oct 2022 17:34:57 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=94=AF=E4=B8=80=E6=A0=87?=
=?UTF-8?q?=E8=AF=86=E7=AC=A6=E8=A7=84=E5=88=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
spug_api/apps/app/views.py | 32 +++++++++++++------
spug_api/apps/config/views.py | 28 +++++++++++-----
spug_web/src/pages/config/app/Form.js | 2 +-
spug_web/src/pages/config/app/Rel.js | 18 +++--------
spug_web/src/pages/config/environment/Form.js | 2 +-
spug_web/src/pages/config/service/Form.js | 14 +++-----
spug_web/src/pages/config/service/index.js | 2 +-
spug_web/src/pages/deploy/app/Form.js | 2 +-
8 files changed, 55 insertions(+), 45 deletions(-)
diff --git a/spug_api/apps/app/views.py b/spug_api/apps/app/views.py
index 67c0336..94b640d 100644
--- a/spug_api/apps/app/views.py
+++ b/spug_api/apps/app/views.py
@@ -5,7 +5,7 @@ from django.views.generic import View
from django.db.models import F
from libs import JsonParser, Argument, json_response, auth
from apps.app.models import App, Deploy, DeployExtend1, DeployExtend2
-from apps.config.models import Config, ConfigHistory
+from apps.config.models import Config, ConfigHistory, Service
from apps.app.utils import fetch_versions, remove_repo
from apps.setting.utils import AppSetting
import json
@@ -14,12 +14,21 @@ import re
class AppView(View):
def get(self, request):
- if request.user.is_supper:
- apps = App.objects.all()
- else:
- ids = request.user.deploy_perms['apps']
- apps = App.objects.filter(id__in=ids)
- return json_response(apps)
+ form, error = JsonParser(
+ Argument('id', type=int, required=False)
+ ).parse(request.GET)
+ if error is None:
+ if request.user.is_supper:
+ apps = App.objects.all()
+ else:
+ ids = request.user.deploy_perms['apps']
+ apps = App.objects.filter(id__in=ids)
+
+ if form.id:
+ app = apps.filter(pk=form.id).first()
+ return json_response(app)
+ return json_response(apps)
+ return json_response(error=error)
@auth('deploy.app.add|deploy.app.edit|config.app.add|config.app.edit')
def post(self, request):
@@ -30,12 +39,15 @@ class AppView(View):
Argument('desc', required=False)
).parse(request.body)
if error is None:
- if not re.fullmatch(r'[-\w]+', form.key, re.ASCII):
- return json_response(error='标识符必须为字母、数字、-和下划线的组合')
+ if not re.fullmatch(r'\w+', form.key, re.ASCII):
+ return json_response(error='标识符必须为字母、数字和下划线的组合')
app = App.objects.filter(key=form.key).first()
if app and app.id != form.id:
- return json_response(error=f'唯一标识符 {form.key} 已存在,请更改后重试')
+ return json_response(error='该识符已存在,请更改后重试')
+ service = Service.objects.filter(key=form.key).first()
+ if service:
+ return json_response(error=f'该标识符已被服务 {service.name} 使用,请更改后重试')
if form.id:
App.objects.filter(pk=form.id).update(**form)
else:
diff --git a/spug_api/apps/config/views.py b/spug_api/apps/config/views.py
index f2e5a72..1b028f7 100644
--- a/spug_api/apps/config/views.py
+++ b/spug_api/apps/config/views.py
@@ -28,8 +28,8 @@ class EnvironmentView(View):
Argument('desc', required=False)
).parse(request.body)
if error is None:
- if not re.fullmatch(r'[-\w]+', form.key, re.ASCII):
- return json_response(error='标识符必须为字母、数字、-和下划线的组合')
+ if not re.fullmatch(r'\w+', form.key, re.ASCII):
+ return json_response(error='标识符必须为字母、数字和下划线的组合')
env = Environment.objects.filter(key=form.key).first()
if env and env.id != form.id:
@@ -83,8 +83,16 @@ class EnvironmentView(View):
class ServiceView(View):
@auth('config.src.view')
def get(self, request):
- services = Service.objects.all()
- return json_response(services)
+ form, error = JsonParser(
+ Argument('id', type=int, required=False)
+ ).parse(request.GET)
+ if error is None:
+ if form.id:
+ service = Service.objects.get(pk=form.id)
+ return json_response(service)
+ services = Service.objects.all()
+ return json_response(services)
+ return json_response(error=error)
@auth('config.src.add|config.src.edit')
def post(self, request):
@@ -95,12 +103,15 @@ class ServiceView(View):
Argument('desc', required=False)
).parse(request.body)
if error is None:
- if not re.fullmatch(r'[-\w]+', form.key, re.ASCII):
- return json_response(error='标识符必须为字母、数字、-和下划线的组合')
+ if not re.fullmatch(r'\w+', form.key, re.ASCII):
+ return json_response(error='标识符必须为字母、数字和下划线的组合')
service = Service.objects.filter(key=form.key).first()
if service and service.id != form.id:
- return json_response(error=f'唯一标识符 {form.key} 已存在,请更改后重试')
+ return json_response(error='该标识符已存在,请更改后重试')
+ app = App.objects.filter(key=form.key).first()
+ if app:
+ return json_response(error=f'该标识符已被应用 {app.name} 使用,请更改后重试')
if form.id:
Service.objects.filter(pk=form.id).update(**form)
else:
@@ -119,7 +130,8 @@ class ServiceView(View):
if form.id in rel_services:
rel_apps.append(app.name)
if rel_apps:
- return json_response(error=f'该服务在配置中心已被 "{", ".join(rel_apps)}" 依赖,请解除依赖关系后再尝试删除。')
+ return json_response(
+ error=f'该服务在配置中心已被 "{", ".join(rel_apps)}" 依赖,请解除依赖关系后再尝试删除。')
# auto delete configs
Config.objects.filter(type='src', o_id=form.id).delete()
ConfigHistory.objects.filter(type='src', o_id=form.id).delete()
diff --git a/spug_web/src/pages/config/app/Form.js b/spug_web/src/pages/config/app/Form.js
index c2eb2c5..025d78e 100644
--- a/spug_web/src/pages/config/app/Form.js
+++ b/spug_web/src/pages/config/app/Form.js
@@ -42,7 +42,7 @@ export default observer(function () {
name="key"
label="唯一标识符"
tooltip="应用的唯一标识符,会作为生成配置的前缀。"
- extra="可以由字母、数字、-和下划线组成。">
+ extra="可以由字母、数字和下划线组成。">
diff --git a/spug_web/src/pages/config/app/Rel.js b/spug_web/src/pages/config/app/Rel.js
index 1507efe..dc45af1 100644
--- a/spug_web/src/pages/config/app/Rel.js
+++ b/spug_web/src/pages/config/app/Rel.js
@@ -51,26 +51,16 @@ class Rel extends React.Component {
return (
store.relVisible = false}
confirmLoading={this.state.loading}
footer={hasPermission('config.app.edit_config') ? undefined : null}
onOk={this.handleSubmit}>
- 设置依赖的应用仅会获取到其公共配置,私有配置并不会被其他应用所获取。
,
- 服务不存在公共和私有配置的概念,所以会获取到依赖服务的所有配置信息。
- ]}/>
-
+
-
+
+ extra="可以由字母、数字和下划线组成。">
diff --git a/spug_web/src/pages/config/service/Form.js b/spug_web/src/pages/config/service/Form.js
index 383e08f..d33fcd7 100644
--- a/spug_web/src/pages/config/service/Form.js
+++ b/spug_web/src/pages/config/service/Form.js
@@ -34,16 +34,12 @@ export default observer(function () {
confirmLoading={loading}
onOk={handleSubmit}>
-
+
+
-
-
+
+
diff --git a/spug_web/src/pages/config/service/index.js b/spug_web/src/pages/config/service/index.js
index 5481e79..0974fd9 100644
--- a/spug_web/src/pages/config/service/index.js
+++ b/spug_web/src/pages/config/service/index.js
@@ -17,7 +17,7 @@ export default observer(function () {
首页
配置中心
- 应用配置
+ 服务配置
diff --git a/spug_web/src/pages/deploy/app/Form.js b/spug_web/src/pages/deploy/app/Form.js
index 1e9adde..b1be2a9 100644
--- a/spug_web/src/pages/deploy/app/Form.js
+++ b/spug_web/src/pages/deploy/app/Form.js
@@ -42,7 +42,7 @@ export default observer(function () {
name="key"
label="唯一标识符"
tooltip="给应用设置的唯一标识符,会用于配置中心的配置生成。"
- extra="可以由字母、数字、-和下划线组成。">
+ extra="可以由字母、数字和下划线组成。">