django-vue-admin/backend/application/dispatch.py

209 lines
6.4 KiB
Python
Raw Normal View History

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from django.conf import settings
from django.db import connection
def is_tenants_mode():
"""
判断是否为租户模式
:return:
"""
2022-06-07 04:05:27 +00:00
return hasattr(connection, "tenant") and connection.tenant.schema_name
# ================================================= #
# ******************** 初始化 ******************** #
# ================================================= #
def _get_all_dictionary():
from dvadmin.system.models import Dictionary
2022-06-07 04:05:27 +00:00
queryset = Dictionary.objects.filter(status=True, is_value=False)
data = []
for instance in queryset:
2022-06-07 04:05:27 +00:00
data.append(
{
"id": instance.id,
"value": instance.value,
"children": list(
Dictionary.objects.filter(parent=instance.id)
.filter(status=1)
.values("label", "value", "type", "color")
),
}
)
return {ele.get("value"): ele for ele in data}
def _get_all_system_config():
data = {}
from dvadmin.system.models import SystemConfig
2022-06-07 04:05:27 +00:00
system_config_obj = (
SystemConfig.objects.filter(status=True, parent_id__isnull=False)
.values("parent__key", "key", "value", "form_item_type")
.order_by("sort")
)
for system_config in system_config_obj:
2022-06-07 04:05:27 +00:00
value = system_config.get("value", "")
if value and system_config.get("form_item_type") == 7:
value = value[0].get("url")
2022-05-16 01:38:03 +00:00
data[f"{system_config.get('parent__key')}.{system_config.get('key')}"] = value
return data
2022-05-15 09:15:09 +00:00
def init_dictionary():
"""
初始化字典配置
:return:
"""
try:
if is_tenants_mode():
2022-05-15 09:15:09 +00:00
from django_tenants.utils import tenant_context, get_tenant_model
2022-06-07 04:05:27 +00:00
2022-05-15 09:15:09 +00:00
for tenant in get_tenant_model().objects.filter():
with tenant_context(tenant):
settings.DICTIONARY_CONFIG[connection.tenant.schema_name] = _get_all_dictionary()
else:
settings.DICTIONARY_CONFIG = _get_all_dictionary()
2022-05-17 01:23:36 +00:00
except Exception as e:
print("请先进行数据库迁移!")
return
def init_system_config():
"""
初始化系统配置
:param name:
:return:
"""
try:
if is_tenants_mode():
2022-05-15 09:15:09 +00:00
from django_tenants.utils import tenant_context, get_tenant_model
2022-06-07 04:05:27 +00:00
2022-05-15 09:15:09 +00:00
for tenant in get_tenant_model().objects.filter():
with tenant_context(tenant):
settings.SYSTEM_CONFIG[connection.tenant.schema_name] = _get_all_system_config()
else:
settings.SYSTEM_CONFIG = _get_all_system_config()
2022-05-17 01:23:36 +00:00
except Exception as e:
print("请先进行数据库迁移!")
return
def refresh_dictionary():
"""
刷新字典配置
:return:
"""
if is_tenants_mode():
2022-05-17 01:23:36 +00:00
from django_tenants.utils import tenant_context, get_tenant_model
2022-06-07 04:05:27 +00:00
2022-05-17 01:23:36 +00:00
for tenant in get_tenant_model().objects.filter():
with tenant_context(tenant):
settings.DICTIONARY_CONFIG[connection.tenant.schema_name] = _get_all_dictionary()
else:
settings.DICTIONARY_CONFIG = _get_all_dictionary()
def refresh_system_config():
"""
刷新系统配置
:return:
"""
if is_tenants_mode():
2022-05-17 01:23:36 +00:00
from django_tenants.utils import tenant_context, get_tenant_model
2022-06-07 04:05:27 +00:00
2022-05-17 01:23:36 +00:00
for tenant in get_tenant_model().objects.filter():
with tenant_context(tenant):
settings.SYSTEM_CONFIG[connection.tenant.schema_name] = _get_all_system_config()
else:
settings.SYSTEM_CONFIG = _get_all_system_config()
# ================================================= #
# ******************** 字典管理 ******************** #
# ================================================= #
def get_dictionary_config(schema_name=None):
"""
获取字典所有配置
:param schema_name: 对应字典配置的租户schema_name值
:return:
"""
if is_tenants_mode():
dictionary_config = settings.DICTIONARY_CONFIG[schema_name or connection.tenant.schema_name]
else:
dictionary_config = settings.DICTIONARY_CONFIG
return dictionary_config or {}
def get_dictionary_values(key, schema_name=None):
"""
获取字典数据数组
:param key: 对应字典配置的key值(字典编号)
:param schema_name: 对应字典配置的租户schema_name值
:return:
"""
dictionary_config = get_dictionary_config(schema_name)
return dictionary_config.get(key)
def get_dictionary_label(key, name, schema_name=None):
"""
获取获取字典label值
:param key: 字典管理中的key值(字典编号)
:param name: 对应字典配置的value值
:param schema_name: 对应字典配置的租户schema_name值
:return:
"""
children = get_dictionary_values(key, schema_name) or []
for ele in children:
if ele.get("value") == str(name):
return ele.get("label")
return ""
# ================================================= #
# ******************** 系统配置 ******************** #
# ================================================= #
def get_system_config(schema_name=None):
"""
获取系统配置中所有配置
1.只传父级的key返回全部子级{ "父级key.子级key" : "" }
2."父级key.子级key"返回子级值
:param schema_name: 对应字典配置的租户schema_name值
:return:
"""
if is_tenants_mode():
dictionary_config = settings.SYSTEM_CONFIG[schema_name or connection.tenant.schema_name]
else:
dictionary_config = settings.SYSTEM_CONFIG
return dictionary_config or {}
def get_system_config_values(key, schema_name=None):
"""
获取系统配置数据数组
:param key: 对应系统配置的key值(字典编号)
:param schema_name: 对应系统配置的租户schema_name值
:return:
"""
system_config = get_system_config(schema_name)
return system_config.get(key)
def get_system_config_label(key, name, schema_name=None):
"""
获取获取系统配置label值
:param key: 系统配置中的key值(字典编号)
:param name: 对应系统配置的value值
:param schema_name: 对应系统配置的租户schema_name值
:return:
"""
children = get_system_config_values(key, schema_name) or []
for ele in children:
if ele.get("value") == str(name):
return ele.get("label")
return ""