This commit is contained in:
anwinged 2012-03-21 06:20:36 +00:00
parent 3e9412752a
commit 62e68c3d20
5 changed files with 94 additions and 24 deletions

10
opal.py
View File

@ -18,9 +18,15 @@ def main():
import pprint import pprint
s = server.LocalServer() s = server.LocalServer()
s.LoadTasksDescriptions() s.LoadTasksDescriptions()
ds = s.GetTasksDescriptions()[0] ds = s.GetTasksDescriptions()
ms = []
for d in ds:
ms.extend(d.GetModelsDescriptions())
pprint.pprint(ds.data) m = ms[0]
pprint.pprint(m.data)
print m.GetSpecifications()
if __name__ == '__main__': if __name__ == '__main__':
main() main()

95
task.py
View File

@ -37,20 +37,50 @@ class TaskDescription:
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
class Parameter: class Parameter:
def __init__(self, paramdescr): def __init__(self, data):
pass self.data = data
def DoDataParametrization(objectdata): def GetType(self):
data = objectdata['data'] return self.data['type']
for label in data:
par = Parameter(data[label]) def GetTitle(self):
data[label] = par return self.data.get('title', '')
def GetComment(self):
return self.data.get('comment', '')
def GetDefault(self):
return self.data.get('default')
def GetTestExpresion(self):
return self.data.get('test')
def Test(self, value):
return True
#def __repr__(self):
# return "'{}'".format(
# self.GetType()
# )
#-------------------------------------------------------------------------------
class DataDescription: class DataDescription:
def __init__(self, parentdescr, label, data): def __init__(self, parent, label, data):
self.parentdescr = parentdescr self.parent = parent
self.label = label self.label = label
self.data = data self.data = data
# создание описаний параметров
self.pdata = self.data.get('params', {})
for label in self.pdata:
par = Parameter(self.pdata[label])
self.pdata[label] = par
self.specs = []
# рекурсивное создание описаний спецификаций
for label, data in self.data.get('spec', {}).iteritems():
self.specs.append(DataDescription(self, label, data))
def GetLabel(self): def GetLabel(self):
return self.label return self.label
@ -64,24 +94,53 @@ class DataDescription:
def GetId(self): def GetId(self):
return None return None
def GetSpecifications(self):
return self.specs
def IsExecutable(self):
return self.data.get('exec', True)
def __getitem__(self, label):
return self.pdata.get(label)
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
class DataDefinition: class DataDefinition:
def __init__(self, objectdescr): def __init__(self, datadescr):
self.descr = objectdescr self.DD = datadescr
self.params = {} self.params = {}
for param in self.DD.pdata:
self.params[param] = self.DD[param].GetDefault()
self.taskjob = None self.taskjob = None
def GetParameter(self, label): def __getitem__(self, label):
pass return self.params[label]
def SetParameter(self, label, value): def __setitem__(self, label, value):
pass if self.DD[label].Test(value):
self.params[label] = value
else:
raise ValueError
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
import server, json
from pprint import pprint
def main(): def main():
pass s = server.LocalServer()
s.LoadTasksDescriptions()
ds = s.GetTasksDescriptions()
models = []
for d in ds:
models.extend(d.GetModelsDescriptions())
model = models[0]
mdef = DataDefinition(model)
pprint(mdef.DD.data)
print mdef.DD['x'].GetTitle()
if __name__ == '__main__': if __name__ == '__main__':
main() main()

View File

@ -1 +1 @@
tasks/task.py tasks/testt.py

View File

@ -10,11 +10,14 @@
"author": "Anton Vakhrushev", "author": "Anton Vakhrushev",
"date": "2012-03-08", "date": "2012-03-08",
"exec": true,
"params": { "params": {
"x": { "x": {
"type": "int", "type": "int",
"default": 10 "default": 10,
"title": "Main parameter"
}, },
"u": { "u": {
@ -24,7 +27,9 @@
"n": { "n": {
"type": "int", "type": "int",
"default": 1000 "default": 1000,
"title": "Steps",
"comment": "Number of steps for algorithm"
} }
} }
} }

View File

@ -12,7 +12,7 @@ def main():
os.chdir(d) os.chdir(d)
if sys.argv[1] == '-i': if sys.argv[1] == '-i':
with open('task.js') as f: with open('testt.js') as f:
d = json.load(f) d = json.load(f)
print json.dumps(d, indent = 2) print json.dumps(d, indent = 2)