update tests
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
from typing import Optional, Dict, List, Any
|
||||
from copy import copy
|
||||
import warnings
|
||||
import re
|
||||
|
||||
@ -126,22 +127,30 @@ class _Value:
|
||||
schema: Dict,
|
||||
root: str,
|
||||
fullpath: bool,
|
||||
withwarning: bool):
|
||||
withwarning: bool,
|
||||
parent_key: str=None) -> None:
|
||||
len_master = None
|
||||
for key, option in schema['properties'].items():
|
||||
hidden = self.temp.get(key, {}).get('hidden', None)
|
||||
model_display = not self.model.get(key, {}).get('hidden', False) and \
|
||||
self.model.get(key, {}).get('display', True)
|
||||
|
||||
if hidden is False or (hidden is None and model_display is True):
|
||||
if option['type'] == 'object':
|
||||
if option['type'] in ['object', 'array']:
|
||||
self._dict_walk(ret,
|
||||
option,
|
||||
root,
|
||||
fullpath,
|
||||
withwarning)
|
||||
withwarning,
|
||||
key)
|
||||
else:
|
||||
value = self.config.get_value(key)
|
||||
value = self.config.get_value(key, len_master)
|
||||
if parent_key is not None and schema.get('type') == 'array' and len_master is None:
|
||||
len_master = len(value)
|
||||
self._display_warnings(key, value, option['type'], option['name'], withwarning)
|
||||
ret[key] = value
|
||||
elif parent_key is not None and schema.get('type') == 'array' and len_master is None:
|
||||
break
|
||||
|
||||
def dict(self,
|
||||
fullpath: bool=False,
|
||||
@ -470,7 +479,7 @@ class Config:
|
||||
def __init__(self,
|
||||
json):
|
||||
self.model_ori = json['model']
|
||||
self.model = {option['key']: option for option in json['model']}
|
||||
self.model = self.gen_model(json['model'])
|
||||
self.form = {}
|
||||
for option in json['form']:
|
||||
if 'key' in option:
|
||||
@ -486,6 +495,23 @@ class Config:
|
||||
else:
|
||||
self.root = ''
|
||||
|
||||
def gen_model(self,
|
||||
model) -> List[Dict]:
|
||||
ret = {}
|
||||
for option in model:
|
||||
key = option['key']
|
||||
if 'index' in option:
|
||||
if key not in ret:
|
||||
ret[key] = copy(option)
|
||||
ret[key]['value'] = {ret[key]['index']: (ret[key]['value'], ret[key]['owner'])}
|
||||
del ret[key]['index']
|
||||
del ret[key]['owner']
|
||||
elif option.get('hidden') is not True:
|
||||
ret[key]['value'][option['index']] = (option['value'], option['owner'])
|
||||
else:
|
||||
ret[key] = option
|
||||
return ret
|
||||
|
||||
def __getattr__(self,
|
||||
subfunc: str) -> Any:
|
||||
if subfunc == 'property':
|
||||
@ -603,13 +629,29 @@ class Config:
|
||||
return value
|
||||
|
||||
def get_value(self,
|
||||
path: str) -> Any:
|
||||
if 'value' in self.temp.get(path, {}):
|
||||
value = self.temp[path]['value']
|
||||
path: str,
|
||||
len_master: int=None) -> Any:
|
||||
if len_master is None:
|
||||
if 'value' in self.temp.get(path, {}):
|
||||
value = self.temp[path]['value']
|
||||
else:
|
||||
value = self.model.get(path, {}).get('value')
|
||||
if value is None and self.get_schema(path).get('isMulti', False):
|
||||
value = []
|
||||
else:
|
||||
value = self.model.get(path, {}).get('value')
|
||||
if value is None and self.get_schema(path).get('isMulti', False):
|
||||
value = []
|
||||
value = self.temp.get(path)
|
||||
if value is None:
|
||||
value = self.model.get(path)
|
||||
if value is None:
|
||||
value = [None] * len_master
|
||||
else:
|
||||
val = []
|
||||
for index in range(len_master):
|
||||
if index in value['value']:
|
||||
val.append(value['value'][index][0])
|
||||
else:
|
||||
val.append(None)
|
||||
value = val
|
||||
return value
|
||||
|
||||
def get_owner(self,
|
||||
@ -676,14 +718,9 @@ class Config:
|
||||
match = True
|
||||
if match:
|
||||
if remote:
|
||||
ret = self.send_data({'updates': self.updates,
|
||||
'model': self.model_ori})
|
||||
self.updates = []
|
||||
self.temp.clear()
|
||||
# FIXME remove old key ?
|
||||
for model in ret['model']:
|
||||
self.model[model['key']] = model
|
||||
self.model_ori = ret['model']
|
||||
self.updates_data(self.send_data({'updates': self.updates,
|
||||
'model': self.model_ori}))
|
||||
|
||||
else:
|
||||
self.temp.setdefault(path, {})['owner'] = 'tmp'
|
||||
self.temp[path]['value'] = value
|
||||
@ -691,6 +728,14 @@ class Config:
|
||||
self.set_not_equal(path, value)
|
||||
self.do_copy(path, value)
|
||||
|
||||
def updates_data(self, data):
|
||||
self.updates = []
|
||||
self.temp.clear()
|
||||
# FIXME remove old key ?
|
||||
for model in data['model']:
|
||||
self.model[model['key']] = model
|
||||
self.model_ori = data['model']
|
||||
|
||||
def test_value(self,
|
||||
path: str,
|
||||
value: Any,
|
||||
|
Reference in New Issue
Block a user