diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3c81ea242..636c62796 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,12 +22,6 @@ repos: files: src/dashboard/ - repo: local hooks: - - id: isort - name: isort - language: python - types: [python] - entry: isort --settings-path=src/esb/pyproject.toml - files: src/esb/ - id: black name: black language: python diff --git a/src/dashboard/apigateway/apigateway/editions/ee/apps/esb/component/serializers.py b/src/dashboard/apigateway/apigateway/editions/ee/apps/esb/component/serializers.py index a6bb202ce..ac2b12514 100644 --- a/src/dashboard/apigateway/apigateway/editions/ee/apps/esb/component/serializers.py +++ b/src/dashboard/apigateway/apigateway/editions/ee/apps/esb/component/serializers.py @@ -39,7 +39,6 @@ class ESBChannelSLZ(OfficialWriteFields, serializers.ModelSerializer): - board = serializers.HiddenField(default="") system_id = serializers.IntegerField(min_value=1) system_name = serializers.CharField(source="system.name", read_only=True) @@ -164,6 +163,11 @@ def _exclude_current_instance(self, queryset): def update(self, instance, validated_data): if not ESBChannelExtend.objects.get_config_fields(instance.id): validated_data.pop("config", None) + elif validated_data.get("config"): + # 指定 config-fields 的组件,保留未修改的原配置 + config = instance.config.copy() + config.update(validated_data["config"]) + validated_data["config"] = config return super().update(instance, validated_data) diff --git a/src/esb/esb/esb/management/utils/channel_tools.py b/src/esb/esb/esb/management/utils/channel_tools.py index 0fb7c1023..fa5278ebe 100644 --- a/src/esb/esb/esb/management/utils/channel_tools.py +++ b/src/esb/esb/esb/management/utils/channel_tools.py @@ -48,7 +48,7 @@ def get_info(self): "path": self.path, "method": self.channel_config.get("method", ""), "comp_codename": self.channel_config["comp_codename"], - "comp_conf_to_db": self.channel_config.get("comp_conf_to_db") or self.channel_config.get("comp_conf"), + "comp_conf_to_db": self._get_comp_conf_to_db(), "config_fields": self.channel_config.get("config_fields"), "permission_level": self.channel_config.get("permission_level", PermissionLevelEnum.UNLIMITED.value), "verified_user_required": self.channel_config.get("verified_user_required", True), @@ -57,3 +57,15 @@ def get_info(self): } ) return info + + def _get_comp_conf_to_db(self): + if self.channel_config.get("comp_conf_to_db"): + return self.channel_config.get("comp_conf_to_db") + + if self.channel_config.get("comp_conf"): + return self.channel_config.get("comp_conf") + + if self.channel_config.get("config_fields"): + return {field["variable"]: field["default"] for field in self.channel_config["config_fields"]} + + return None