|
|
|
@ -19,6 +19,7 @@ from soaplib.serializers.primitive import String, Integer, Boolean, Any
|
|
|
|
|
from soaplib.serializers.clazz import Array, ClassSerializer
|
|
|
|
|
from soaplib.service import rpc
|
|
|
|
|
import sys
|
|
|
|
|
from itertools import *
|
|
|
|
|
|
|
|
|
|
from calculate.lib.cl_lang import setLocalTranslate
|
|
|
|
|
setLocalTranslate('calculate_api',sys.modules[__name__])
|
|
|
|
@ -158,7 +159,7 @@ class Field(DataVarsSerializer):
|
|
|
|
|
comments = Array(String) # comments for choice
|
|
|
|
|
|
|
|
|
|
def __init__(self,dv=None,varObj=None,expert=False,briefmode=False,
|
|
|
|
|
inbrief=False,**kwargs):
|
|
|
|
|
inbrief=False,groupVars=(),**kwargs):
|
|
|
|
|
"""
|
|
|
|
|
dv - datavars, varObj - current variable, expert - expert variable flag,
|
|
|
|
|
briefmode - view request for brief, inbrief - variable palced in brief,
|
|
|
|
@ -178,7 +179,13 @@ class Field(DataVarsSerializer):
|
|
|
|
|
else:
|
|
|
|
|
self.uncompatible = dv.Uncompatible(varObj.name)
|
|
|
|
|
if self.uncompatible:
|
|
|
|
|
dv.Invalidate(varObj.name,onlySet=True)
|
|
|
|
|
for var in varObj.reqUncompat:
|
|
|
|
|
if not briefmode and var in groupVars:
|
|
|
|
|
if not dv.Uncompatible(var.name):
|
|
|
|
|
self.uncompatible = ""
|
|
|
|
|
break
|
|
|
|
|
else:
|
|
|
|
|
dv.Invalidate(varObj.name,onlySet=True)
|
|
|
|
|
if expert:
|
|
|
|
|
self.default = not varObj.wasSet
|
|
|
|
|
self.choice, self.comments = self.getChoice(varObj)
|
|
|
|
@ -219,12 +226,20 @@ class GroupField(DataVarsSerializer):
|
|
|
|
|
self.prevlabel = _("Previous")
|
|
|
|
|
self.fields = []
|
|
|
|
|
|
|
|
|
|
# get all variables with deps which using in this group
|
|
|
|
|
groupDepVars = []
|
|
|
|
|
for varname in chain(info['normal'],info['expert']):
|
|
|
|
|
for var in dv.getRequired(varname):
|
|
|
|
|
if not var in groupDepVars:
|
|
|
|
|
groupDepVars.append(var)
|
|
|
|
|
|
|
|
|
|
for varname in info['normal']:
|
|
|
|
|
inbrief = brief and varname in info['brief']
|
|
|
|
|
varObj = dv.getInfo(varname)
|
|
|
|
|
self.fields.append(Field(dv=dv,inbrief=inbrief,
|
|
|
|
|
briefmode = brief,
|
|
|
|
|
varObj=dv.getInfo(varname)))
|
|
|
|
|
|
|
|
|
|
varObj=varObj,
|
|
|
|
|
groupVars=groupDepVars))
|
|
|
|
|
if info['expert']:
|
|
|
|
|
for varname in info['expert']:
|
|
|
|
|
if expert == True or \
|
|
|
|
@ -235,10 +250,12 @@ class GroupField(DataVarsSerializer):
|
|
|
|
|
value="open"))
|
|
|
|
|
for varname in info['expert']:
|
|
|
|
|
inbrief = brief and varname in info['brief']
|
|
|
|
|
varObj = dv.getInfo(varname)
|
|
|
|
|
self.fields.append(Field(dv=dv,expert=True,
|
|
|
|
|
inbrief=inbrief,
|
|
|
|
|
briefmode = brief,
|
|
|
|
|
varObj=dv.getInfo(varname)))
|
|
|
|
|
varObj=varObj,
|
|
|
|
|
groupVars=groupDepVars))
|
|
|
|
|
break
|
|
|
|
|
else:
|
|
|
|
|
if expert == False:
|
|
|
|
|