diff --git a/backend/application/dispatch.py b/backend/application/dispatch.py index 3f19225..6843c75 100644 --- a/backend/application/dispatch.py +++ b/backend/application/dispatch.py @@ -40,7 +40,7 @@ def _get_all_system_config(): from dvadmin.system.models import SystemConfig system_config_obj = ( - SystemConfig.objects.filter(status=True, parent_id__isnull=False) + SystemConfig.objects.filter(parent_id__isnull=False) .values("parent__key", "key", "value", "form_item_type") .order_by("sort") ) @@ -131,6 +131,8 @@ def get_dictionary_config(schema_name=None): :param schema_name: 对应字典配置的租户schema_name值 :return: """ + if not settings.DICTIONARY_CONFIG: + refresh_dictionary() if is_tenants_mode(): dictionary_config = settings.DICTIONARY_CONFIG[schema_name or connection.tenant.schema_name] else: @@ -175,6 +177,8 @@ def get_system_config(schema_name=None): :param schema_name: 对应字典配置的租户schema_name值 :return: """ + if not settings.SYSTEM_CONFIG: + refresh_system_config() if is_tenants_mode(): dictionary_config = settings.SYSTEM_CONFIG[schema_name or connection.tenant.schema_name] else: diff --git a/backend/dvadmin/system/models.py b/backend/dvadmin/system/models.py index 6aee47b..083400a 100644 --- a/backend/dvadmin/system/models.py +++ b/backend/dvadmin/system/models.py @@ -259,7 +259,7 @@ def media_file_name(instance, filename): class FileList(CoreModel): - name = models.CharField(max_length=50, null=True, blank=True, verbose_name="名称", help_text="名称") + name = models.CharField(max_length=200, null=True, blank=True, verbose_name="名称", help_text="名称") url = models.FileField(upload_to=media_file_name) md5sum = models.CharField(max_length=36, blank=True, verbose_name="文件md5", help_text="文件md5") @@ -427,4 +427,4 @@ class MessageCenter(CoreModel): db_table = table_prefix + "message_center" verbose_name = "消息中心" verbose_name_plural = verbose_name - ordering = ("-create_datetime",) \ No newline at end of file + ordering = ("-create_datetime",) diff --git a/backend/dvadmin/system/views/system_config.py b/backend/dvadmin/system/views/system_config.py index cfe7202..aa97091 100644 --- a/backend/dvadmin/system/views/system_config.py +++ b/backend/dvadmin/system/views/system_config.py @@ -250,9 +250,29 @@ class InitSettingsViewSet(APIView): authentication_classes = [] permission_classes = [] + def filter_system_config_values(self, data: dict): + """ + 过滤系统初始化配置 + :param data: + :return: + """ + if not self.request.query_params.get('key', ''): + return data + new_data = {} + for key in self.request.query_params.get('key', '').split('|'): + if key: + new_data.update(**dict(filter(lambda x: x[0].startswith(key), data.items()))) + return new_data + def get(self, request): data = dispatch.get_system_config() if not data: dispatch.refresh_system_config() data = dispatch.get_system_config() + # 不返回后端专用配置 + backend_config = [f"{ele.get('parent__key')}.{ele.get('key')}" for ele in + SystemConfig.objects.filter(status=False, parent_id__isnull=False).values('parent__key', + 'key')] + data = dict(filter(lambda x: x[0] not in backend_config, data.items())) + data = self.filter_system_config_values(data=data) return DetailResponse(data=data) diff --git a/backend/dvadmin/system/views/user.py b/backend/dvadmin/system/views/user.py index 5ee5fcc..933fbe6 100644 --- a/backend/dvadmin/system/views/user.py +++ b/backend/dvadmin/system/views/user.py @@ -272,22 +272,23 @@ class UserViewSet(CustomModelViewSet): @action(methods=["PUT"], detail=True, permission_classes=[IsAuthenticated]) def change_password(self, request, *args, **kwargs): """密码修改""" - instance = Users.objects.filter(id=kwargs.get("pk")).first() data = request.data old_pwd = data.get("oldPassword") new_pwd = data.get("newPassword") new_pwd2 = data.get("newPassword2") - if instance: - if new_pwd != new_pwd2: - return ErrorResponse(msg="两次密码不匹配") - elif instance.check_password(old_pwd): - instance.password = make_password(new_pwd) - instance.save() - return DetailResponse(data=None, msg="修改成功") - else: - return ErrorResponse(msg="旧密码不正确") + if old_pwd or new_pwd or new_pwd2: + return ErrorResponse(msg="参数不能为空") + if new_pwd != new_pwd2: + return ErrorResponse(msg="两次密码不匹配") + check_password = request.user.check_password(old_pwd) + if not check_password: + check_password = request.user.check_password(hashlib.md5(old_pwd.encode(encoding='UTF-8')).hexdigest()) + if check_password: + request.user.password = make_password(new_pwd) + request.user.save() + return DetailResponse(data=None, msg="修改成功") else: - return ErrorResponse(msg="未获取到用户") + return ErrorResponse(msg="旧密码不正确") @action(methods=["PUT"], detail=True, permission_classes=[IsAuthenticated]) def reset_to_default_password(self, request, *args, **kwargs): diff --git a/web/src/views/system/config/components/formContent.vue b/web/src/views/system/config/components/formContent.vue index 7dcd28f..191ec85 100644 --- a/web/src/views/system/config/components/formContent.vue +++ b/web/src/views/system/config/components/formContent.vue @@ -2,10 +2,10 @@
变量标题 - 变量值 + 变量值 变量名 - 状态 - 操作 + 是否前端配置 + 操作 {{item.title}} - + {{ item.label }} @@ -201,7 +201,7 @@
- +