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..d009313 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() @@ -151,7 +163,6 @@ class ConfigView(View): Argument('type', filter=lambda x: x in dict(Config.TYPES), help='缺少必要参数'), Argument('envs', type=list, filter=lambda x: len(x), help='请选择环境'), Argument('key', help='请输入Key'), - Argument('is_public', type=bool, help='缺少必要参数'), Argument('value', type=str, default=''), Argument('desc', required=False) ).parse(request.body) @@ -173,7 +184,6 @@ class ConfigView(View): form, error = JsonParser( Argument('id', type=int, help='缺少必要参数'), Argument('value', type=str, default=''), - Argument('is_public', type=bool, help='缺少必要参数'), Argument('desc', required=False) ).parse(request.body) if error is None: @@ -182,7 +192,6 @@ class ConfigView(View): if not config: return json_response(error='未找到指定对象') config.desc = form.desc - config.is_public = form.is_public if config.value != form.value: old_value = config.value config.value = form.value @@ -314,7 +323,6 @@ def _parse(request, query, data): item.delete() for key, value in data.items(): query.key = key - query.is_public = False query.value = _filter_value(value) query.updated_at = human_datetime() query.updated_by = request.user 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="可以由字母、数字和下划线组成。">