Spaces:
Runtime error
Runtime error
Update utils.py
Browse files
utils.py
CHANGED
@@ -127,101 +127,101 @@ def parse_invalid_json(json_string):
|
|
127 |
return None
|
128 |
|
129 |
def notionTable2JSON(databaseFUll_pages, kpi_database_pages):
|
130 |
-
|
131 |
-
|
132 |
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
|
142 |
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
if lev1 != None and lev1 != "NA":
|
151 |
-
if lev1 not in availableAttributes:
|
152 |
-
availableAttributes[lev1] = {"sub-levels": {}, "values": []}
|
153 |
-
|
154 |
-
if lev2 != None and lev2 != "NA":
|
155 |
-
if lev2 not in availableAttributes[lev1]["sub-levels"]:
|
156 |
-
availableAttributes[lev1]["sub-levels"][lev2] = {"sub-levels": {}, "values": []}
|
157 |
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
else:
|
163 |
-
availableAttributes[lev1]["
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
"KPI": [],
|
192 |
-
"visualisation": []
|
193 |
-
}
|
194 |
-
|
195 |
-
try:
|
196 |
-
attributeData["categoryData"] = parse_invalid_json(get_property_value(page, "categoryData"))
|
197 |
-
except:
|
198 |
-
attributeData["categoryData"]= "NA"
|
199 |
-
|
200 |
-
|
201 |
-
# iterated through list of KPI ref. Ids
|
202 |
-
kpiIDs = get_property_value(page, "KPI")
|
203 |
-
for kpiID in kpiIDs:
|
204 |
-
curKPI = get_page_by_id(kpi_database_pages, kpiID)
|
205 |
-
KPI_template ={
|
206 |
-
"name":get_property_value(curKPI, "name"),
|
207 |
-
"type":get_property_value(curKPI, "type"),
|
208 |
-
"unit":get_property_value(curKPI, "unit"),
|
209 |
-
"color":parse_invalid_json(get_property_value(curKPI, "color")),
|
210 |
-
"nameShort": get_property_value(curKPI, "nameShort"),
|
211 |
-
"quality":get_property_value(curKPI, "quality"),
|
212 |
-
"args": parse_invalid_json(get_property_value(curKPI, "args")),
|
213 |
-
"description":get_property_value(curKPI, "description"),
|
214 |
-
"interpretrationHigh":get_property_value(curKPI, "interpretrationHigh"),
|
215 |
-
"interpretationLow":get_property_value(curKPI, "interpretationLow"),
|
216 |
}
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
|
223 |
-
|
224 |
-
|
225 |
|
226 |
|
227 |
def get_page_by_id(notion_db_pages, page_id):
|
|
|
127 |
return None
|
128 |
|
129 |
def notionTable2JSON(databaseFUll_pages, kpi_database_pages):
|
130 |
+
attributeMetaData = {}
|
131 |
+
availableAttributes = {}
|
132 |
|
133 |
+
cnt = 0
|
134 |
+
# skip if isUsed == False
|
135 |
+
for page in databaseFUll_pages:
|
136 |
+
curAttrName = get_property_value(page, "name")
|
137 |
+
print(curAttrName)
|
138 |
+
lev1 = get_property_value(page, "level_1")
|
139 |
+
lev2 = get_property_value(page, "level_2")
|
140 |
+
lev3= get_property_value(page, "level_3")
|
141 |
|
142 |
|
143 |
+
try:
|
144 |
+
if get_property_value(page, "isUsed") == "False" or get_property_value(page, "isUsed") == "false" or get_property_value(page, "isUsed") == False:
|
145 |
+
# skip attribute
|
146 |
+
continue
|
147 |
+
except:
|
148 |
+
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
|
150 |
+
if lev1 != None and lev1 != "NA":
|
151 |
+
if lev1 not in availableAttributes:
|
152 |
+
availableAttributes[lev1] = {"sub-levels": {}, "values": []}
|
153 |
+
|
154 |
+
if lev2 != None and lev2 != "NA":
|
155 |
+
if lev2 not in availableAttributes[lev1]["sub-levels"]:
|
156 |
+
availableAttributes[lev1]["sub-levels"][lev2] = {"sub-levels": {}, "values": []}
|
157 |
+
|
158 |
+
if lev3 != None and lev3 != "NA":
|
159 |
+
if lev3 not in availableAttributes[lev1]["sub-levels"][lev2]["sub-levels"]:
|
160 |
+
availableAttributes[lev1]["sub-levels"][lev2]["sub-levels"][lev3] = {"values": []}
|
161 |
+
availableAttributes[lev1]["sub-levels"][lev2]["sub-levels"][lev3]["values"].append(curAttrName)
|
162 |
+
else:
|
163 |
+
availableAttributes[lev1]["sub-levels"][lev2]["values"].append(curAttrName)
|
164 |
else:
|
165 |
+
availableAttributes[lev1]["values"].append(curAttrName)
|
166 |
+
|
167 |
+
# attributeMetadata
|
168 |
+
attributeData = {
|
169 |
+
"name": get_property_value(page, "name"),
|
170 |
+
"nameShort": get_property_value(page, "nameShort"),
|
171 |
+
"nameLong": get_property_value(page, "nameLong"),
|
172 |
+
"description": get_property_value(page, "description"),
|
173 |
+
"indicator": get_property_value(page, "indicator"),
|
174 |
+
"unit": get_property_value(page, "unit"),
|
175 |
+
"unitShort": get_property_value(page, "unitShort"),
|
176 |
+
"spatialUnit": get_property_value(page, "spatialUnit"),
|
177 |
+
"method": get_property_value(page, "method"),
|
178 |
+
"type": get_property_value(page, "type"),
|
179 |
+
"colorMapping": parse_invalid_json(get_property_value(page, "colorMapping")),
|
180 |
+
"parameter": parse_invalid_json(get_property_value(page, "parameter")),
|
181 |
+
"level_1": get_property_value(page, "level_1"),
|
182 |
+
"level_2": get_property_value(page, "level_2"),
|
183 |
+
"level_3": get_property_value(page, "level_3"),
|
184 |
+
"isUsed": get_property_value(page, "isUsed"),
|
185 |
+
"dataType": get_property_value(page, "dataType"),
|
186 |
+
|
187 |
+
"dataSet": "NA",
|
188 |
+
"dataSource": "NA",
|
189 |
+
"isWeight": get_property_value(page, "isWeight"),
|
190 |
+
|
191 |
+
"KPI": [],
|
192 |
+
"visualisation": []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
}
|
194 |
+
|
195 |
+
try:
|
196 |
+
attributeData["categoryData"] = parse_invalid_json(get_property_value(page, "categoryData"))
|
197 |
+
except:
|
198 |
+
attributeData["categoryData"]= "NA"
|
199 |
+
|
200 |
+
|
201 |
+
# iterated through list of KPI ref. Ids
|
202 |
+
kpiIDs = get_property_value(page, "KPI")
|
203 |
+
for kpiID in kpiIDs:
|
204 |
+
curKPI = get_page_by_id(kpi_database_pages, kpiID)
|
205 |
+
KPI_template ={
|
206 |
+
"name":get_property_value(curKPI, "name"),
|
207 |
+
"type":get_property_value(curKPI, "type"),
|
208 |
+
"unit":get_property_value(curKPI, "unit"),
|
209 |
+
"color":parse_invalid_json(get_property_value(curKPI, "color")),
|
210 |
+
"nameShort": get_property_value(curKPI, "nameShort"),
|
211 |
+
"quality":get_property_value(curKPI, "quality"),
|
212 |
+
"args": parse_invalid_json(get_property_value(curKPI, "args")),
|
213 |
+
"description":get_property_value(curKPI, "description"),
|
214 |
+
"interpretrationHigh":get_property_value(curKPI, "interpretrationHigh"),
|
215 |
+
"interpretationLow":get_property_value(curKPI, "interpretationLow"),
|
216 |
+
}
|
217 |
+
# add KPI data to attributeData
|
218 |
+
attributeData["KPI"].append(KPI_template)
|
219 |
+
|
220 |
+
# add to main dictioanry
|
221 |
+
attributeMetaData[get_property_value(page, "name")] = attributeData
|
222 |
|
223 |
+
print("processed pages:", cnt)
|
224 |
+
return attributeMetaData, availableAttributes
|
225 |
|
226 |
|
227 |
def get_page_by_id(notion_db_pages, page_id):
|