| 8 | |
| 9 | |
| 10 | class DataHandler(object): |
| 11 | def __init__(self, basePath): |
| 12 | self.__root = basePath |
| 13 | self.types = ["tonic-query-data-model"] |
| 14 | self.metadata = {} |
| 15 | self.data = {} |
| 16 | self.arguments = {} |
| 17 | self.current = {} |
| 18 | self.sections = {} |
| 19 | self.basePattern = None |
| 20 | self.priority = [] |
| 21 | self.argOrder = [] |
| 22 | self.realValues = {} |
| 23 | self.can_write = True |
| 24 | |
| 25 | def getBasePath(self): |
| 26 | return self.__root |
| 27 | |
| 28 | def updateBasePattern(self): |
| 29 | self.priority.sort(key=lambda item: item[1]) |
| 30 | self.basePattern = "" |
| 31 | patternSeparator = "" |
| 32 | currentPriority = -1 |
| 33 | |
| 34 | for item in self.priority: |
| 35 | if currentPriority != -1: |
| 36 | if currentPriority == item[1]: |
| 37 | patternSeparator = "_" |
| 38 | else: |
| 39 | patternSeparator = "/" |
| 40 | currentPriority = item[1] |
| 41 | self.basePattern = "{%s}%s%s" % ( |
| 42 | item[0], |
| 43 | patternSeparator, |
| 44 | self.basePattern, |
| 45 | ) |
| 46 | |
| 47 | def registerArgument(self, **kwargs): |
| 48 | """ |
| 49 | We expect the following set of arguments |
| 50 | - priority |
| 51 | - name |
| 52 | - label (optional) |
| 53 | - values |
| 54 | - uiType |
| 55 | - defaultIdx |
| 56 | """ |
| 57 | newArgument = {} |
| 58 | argName = kwargs["name"] |
| 59 | self.argOrder.append(argName) |
| 60 | for key, value in iteritems(kwargs): |
| 61 | if key == "priority": |
| 62 | self.priority.append([argName, value]) |
| 63 | elif key == "values": |
| 64 | self.realValues[argName] = value |
| 65 | newArgument[key] = ["{value}".format(value=x) for x in value] |
| 66 | else: |
| 67 | newArgument[key] = value |