From 62e68c3d201cdce9f3e68c199abcc8e66bc00458 Mon Sep 17 00:00:00 2001 From: anwinged Date: Wed, 21 Mar 2012 06:20:36 +0000 Subject: [PATCH] --- opal.py | 10 +++- task.py | 95 ++++++++++++++++++++++++++++++------- tasks.conf | 2 +- tasks/{task.js => testt.js} | 9 +++- tasks/{task.py => testt.py} | 2 +- 5 files changed, 94 insertions(+), 24 deletions(-) rename tasks/{task.js => testt.js} (66%) rename tasks/{task.py => testt.py} (87%) diff --git a/opal.py b/opal.py index 58ad7da..bd981cb 100644 --- a/opal.py +++ b/opal.py @@ -18,9 +18,15 @@ def main(): import pprint s = server.LocalServer() 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__': main() diff --git a/task.py b/task.py index 492dcdf..92cc567 100644 --- a/task.py +++ b/task.py @@ -37,20 +37,50 @@ class TaskDescription: #------------------------------------------------------------------------------- class Parameter: - def __init__(self, paramdescr): - pass + def __init__(self, data): + self.data = data -def DoDataParametrization(objectdata): - data = objectdata['data'] - for label in data: - par = Parameter(data[label]) - data[label] = par + def GetType(self): + return self.data['type'] + + def GetTitle(self): + 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: - def __init__(self, parentdescr, label, data): - self.parentdescr = parentdescr - self.label = label - self.data = data + def __init__(self, parent, label, data): + self.parent = parent + self.label = label + 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): return self.label @@ -64,24 +94,53 @@ class DataDescription: def GetId(self): 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: - def __init__(self, objectdescr): - self.descr = objectdescr + def __init__(self, datadescr): + self.DD = datadescr self.params = {} + for param in self.DD.pdata: + self.params[param] = self.DD[param].GetDefault() + self.taskjob = None - def GetParameter(self, label): - pass + def __getitem__(self, label): + return self.params[label] - def SetParameter(self, label, value): - pass + def __setitem__(self, label, value): + if self.DD[label].Test(value): + self.params[label] = value + else: + raise ValueError #------------------------------------------------------------------------------- +import server, json +from pprint import pprint + 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__': main() diff --git a/tasks.conf b/tasks.conf index 8910a10..1ceed75 100644 --- a/tasks.conf +++ b/tasks.conf @@ -1 +1 @@ -tasks/task.py \ No newline at end of file +tasks/testt.py \ No newline at end of file diff --git a/tasks/task.js b/tasks/testt.js similarity index 66% rename from tasks/task.js rename to tasks/testt.js index 8a094ad..54d371b 100644 --- a/tasks/task.js +++ b/tasks/testt.js @@ -10,11 +10,14 @@ "author": "Anton Vakhrushev", "date": "2012-03-08", + "exec": true, + "params": { "x": { "type": "int", - "default": 10 + "default": 10, + "title": "Main parameter" }, "u": { @@ -24,7 +27,9 @@ "n": { "type": "int", - "default": 1000 + "default": 1000, + "title": "Steps", + "comment": "Number of steps for algorithm" } } } diff --git a/tasks/task.py b/tasks/testt.py similarity index 87% rename from tasks/task.py rename to tasks/testt.py index 63f6495..f787eeb 100644 --- a/tasks/task.py +++ b/tasks/testt.py @@ -12,7 +12,7 @@ def main(): os.chdir(d) if sys.argv[1] == '-i': - with open('task.js') as f: + with open('testt.js') as f: d = json.load(f) print json.dumps(d, indent = 2)