Merge remote-tracking branch 'origin/v2.x' into v2.x
commit
5f7799733d
|
@ -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:
|
||||
|
|
|
@ -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",)
|
||||
ordering = ("-create_datetime",)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
<div>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="4">变量标题</el-col>
|
||||
<el-col :span="8">变量值</el-col>
|
||||
<el-col :span="10">变量值</el-col>
|
||||
<el-col :span="4" >变量名</el-col>
|
||||
<el-col :span="4" >状态</el-col>
|
||||
<el-col :span="4" >操作</el-col>
|
||||
<el-col :span="2">是否前端配置</el-col>
|
||||
<el-col :span="3" :offset="1">操作</el-col>
|
||||
</el-row>
|
||||
<el-form ref="form" :model="form" label-width="240px" label-position="left" style="margin-top: 20px">
|
||||
<el-form-item :label="item.title" :prop="['array'].indexOf(item.form_item_type_label) >-1?'':item.key"
|
||||
|
@ -17,7 +17,7 @@
|
|||
<el-input v-if="item.edit" v-model="item.title" style="display: inline-block;width: 200px;" placeholder="请输入标题"></el-input>
|
||||
<span v-else>{{item.title}}</span>
|
||||
</template>
|
||||
<el-col :span="6" >
|
||||
<el-col :span="11" >
|
||||
<!-- 文本 -->
|
||||
<el-input :key="index" v-if="['text','textarea'].indexOf(item.form_item_type_label) >-1"
|
||||
:type="item.form_item_type_label"
|
||||
|
@ -74,7 +74,7 @@
|
|||
<el-radio
|
||||
v-for="item in dictionary(item.setting) || []"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:label="item.value"
|
||||
:value="item.value">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
|
@ -201,7 +201,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6" :offset="2">
|
||||
<el-col :span="4" :offset="1">
|
||||
<el-input v-if="item.edit" v-model="item.new_key" style="width: 200px;" placeholder="请输入变量key">
|
||||
<template slot="prepend">
|
||||
<span style="padding: 0px 5px">{{ editableTabsItem.key }}</span>
|
||||
|
@ -209,16 +209,14 @@
|
|||
</el-input>
|
||||
<span v-else>{{ editableTabsItem.key }}.{{ item.key }}</span>
|
||||
</el-col>
|
||||
<el-col :span="4" >
|
||||
<el-col :span="3" :offset="1">
|
||||
<el-switch
|
||||
v-model="item.status"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
active-text="启用"
|
||||
inactive-text="禁用">
|
||||
inactive-color="#ff4949">
|
||||
</el-switch>
|
||||
</el-col>
|
||||
<el-col :span="4" :offset="1">
|
||||
<el-col :span="2">
|
||||
<el-button v-if="item.edit" size="mini" type="primary" icon="el-icon-success" @click="onEditSave(item)"></el-button>
|
||||
<el-button v-else size="mini" type="primary" icon="el-icon-edit" @click="onEdit(index)"></el-button>
|
||||
<el-popconfirm
|
||||
|
@ -305,7 +303,7 @@ export default {
|
|||
// 获取数据
|
||||
getInit () {
|
||||
const that = this
|
||||
api.GetList({ parent: this.options.id }).then(res => {
|
||||
api.GetList({ parent: this.options.id, limit: 999 }).then(res => {
|
||||
const { data } = res.data
|
||||
this.formList = data
|
||||
const form = {}
|
||||
|
|
Loading…
Reference in New Issue