|
|
@ -7,6 +7,7 @@ |
|
|
|
import json |
|
|
|
import json |
|
|
|
import logging |
|
|
|
import logging |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from django.template import Context, Template |
|
|
|
from rest_framework import serializers |
|
|
|
from rest_framework import serializers |
|
|
|
|
|
|
|
|
|
|
|
from api.models import SystemConfig |
|
|
|
from api.models import SystemConfig |
|
|
@ -23,25 +24,40 @@ class SystemConfigSerializer(serializers.ModelSerializer): |
|
|
|
fields = "__all__" |
|
|
|
fields = "__all__" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_render_context(tmp: str, context: dict) -> str: |
|
|
|
|
|
|
|
template = Template(tmp) |
|
|
|
|
|
|
|
context = Context(context) |
|
|
|
|
|
|
|
return template.render(context) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def invalid_config_cache(key='*'): |
|
|
|
def invalid_config_cache(key='*'): |
|
|
|
SystemConfigCache(key).del_many() |
|
|
|
SystemConfigCache(key).del_many() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ConfigCacheBase(object): |
|
|
|
def get_value_from_db(key): |
|
|
|
def __init__(self, px=''): |
|
|
|
context_dict = {} |
|
|
|
self.px = px |
|
|
|
for sys_obj_dict in SystemConfig.objects.values().all(): |
|
|
|
|
|
|
|
context_dict[sys_obj_dict['key']] = sys_obj_dict['value'] |
|
|
|
def get_value_from_db(self, key): |
|
|
|
data = SystemConfigSerializer(SystemConfig.objects.filter(key=key).first()).data |
|
|
|
sys_obj = SystemConfig.objects.filter(key=key).first() |
|
|
|
|
|
|
|
data = SystemConfigSerializer(sys_obj).data |
|
|
|
|
|
|
|
value = data.get('value', '') |
|
|
|
value = data.get('value', '') |
|
|
|
if value: |
|
|
|
if value: |
|
|
|
try: |
|
|
|
try: |
|
|
|
data['value'] = json.loads(value) |
|
|
|
r_text = get_render_context(value, context_dict) |
|
|
|
|
|
|
|
data['value'] = r_text |
|
|
|
|
|
|
|
try: |
|
|
|
|
|
|
|
data['value'] = json.loads(r_text) |
|
|
|
except Exception as e: |
|
|
|
except Exception as e: |
|
|
|
logger.warning(f"db config - json loads failed {e}") |
|
|
|
logger.warning(f"db config - json loads failed {e}") |
|
|
|
|
|
|
|
except Exception as e: |
|
|
|
|
|
|
|
logger.warning(f"db config - render failed {e}") |
|
|
|
|
|
|
|
|
|
|
|
return data |
|
|
|
return data |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ConfigCacheBase(object): |
|
|
|
|
|
|
|
def __init__(self, px=''): |
|
|
|
|
|
|
|
self.px = px |
|
|
|
|
|
|
|
|
|
|
|
def get_value(self, key, data=None): |
|
|
|
def get_value(self, key, data=None): |
|
|
|
if data is None: |
|
|
|
if data is None: |
|
|
|
data = {} |
|
|
|
data = {} |
|
|
@ -49,7 +65,7 @@ class ConfigCacheBase(object): |
|
|
|
cache_data = cache.get_storage_cache() |
|
|
|
cache_data = cache.get_storage_cache() |
|
|
|
if cache_data is not None and cache_data.get('key', '') == key: |
|
|
|
if cache_data is not None and cache_data.get('key', '') == key: |
|
|
|
return cache_data.get('value') |
|
|
|
return cache_data.get('value') |
|
|
|
db_data = self.get_value_from_db(key) |
|
|
|
db_data = get_value_from_db(key) |
|
|
|
d_key = db_data.get('key', '') |
|
|
|
d_key = db_data.get('key', '') |
|
|
|
if d_key != key and data is not None: |
|
|
|
if d_key != key and data is not None: |
|
|
|
db_data['value'] = data |
|
|
|
db_data['value'] = data |
|
|
|