|
53 | 53 | ns=NS_MDATTR, tag=EntityAttributes.c_tag
|
54 | 54 | ),
|
55 | 55 | "mdui_uiinfo": "{ns}&{tag}".format(ns=NS_MDUI, tag=UIInfo.c_tag),
|
| 56 | + "mdui_uiinfo_display_name": "{ns}&{tag}".format(ns=NS_MDUI, tag=DisplayName.c_tag), |
| 57 | + "mdui_uiinfo_description": "{ns}&{tag}".format(ns=NS_MDUI, tag=Description.c_tag), |
| 58 | + "mdui_uiinfo_information_url": "{ns}&{tag}".format( |
| 59 | + ns=NS_MDUI, tag=InformationURL.c_tag |
| 60 | + ), |
| 61 | + "mdui_uiinfo_privacy_statement_url": "{ns}&{tag}".format( |
| 62 | + ns=NS_MDUI, tag=PrivacyStatementURL.c_tag |
| 63 | + ), |
| 64 | + "mdui_uiinfo_logo": "{ns}&{tag}".format(ns=NS_MDUI, tag=Logo.c_tag), |
56 | 65 | }
|
57 | 66 |
|
58 | 67 | ENTITY_CATEGORY = "http://macedir.org/entity-category"
|
@@ -1290,6 +1299,105 @@ def mdui_uiinfo(self, entity_id):
|
1290 | 1299 | uiinfos = list(self._mdui_uiinfo(entity_id))
|
1291 | 1300 | return uiinfos
|
1292 | 1301 |
|
| 1302 | + def _mdui_uiinfo_i18n_elements(self, entity_id, langpref, element_hint, lookup): |
| 1303 | + uiinfos = self._mdui_uiinfo(entity_id) |
| 1304 | + elements = lookup(uiinfos, element_hint) |
| 1305 | + lang_elements = ( |
| 1306 | + element |
| 1307 | + for element in elements |
| 1308 | + if element.get("lang") == langpref |
| 1309 | + ) |
| 1310 | + values = ( |
| 1311 | + value |
| 1312 | + for element in lang_elements |
| 1313 | + for value in [element.get("text")] |
| 1314 | + ) |
| 1315 | + return values |
| 1316 | + |
| 1317 | + def _mdui_uiinfo_lookup_elements_by_cls(self, uiinfos, element_cls): |
| 1318 | + elements = ( |
| 1319 | + element |
| 1320 | + for uiinfo in uiinfos |
| 1321 | + for element_key, elements in uiinfo.items() |
| 1322 | + if element_key != "__class__" |
| 1323 | + for element in elements |
| 1324 | + if element.get("__class__") == element_cls |
| 1325 | + ) |
| 1326 | + return elements |
| 1327 | + |
| 1328 | + def _mdui_uiinfo_lookup_elements_by_key(self, uiinfos, element_key): |
| 1329 | + elements = ( |
| 1330 | + element |
| 1331 | + for uiinfo in uiinfos |
| 1332 | + for elements in [uiinfo.get(element_key, [])] |
| 1333 | + for element in elements |
| 1334 | + ) |
| 1335 | + return elements |
| 1336 | + |
| 1337 | + def mdui_uiinfo_i18n_element_cls(self, entity_id, langpref, element_cls): |
| 1338 | + values = self._mdui_uiinfo_i18n_elements( |
| 1339 | + entity_id, langpref, element_cls, self._mdui_uiinfo_lookup_elements_by_cls |
| 1340 | + ) |
| 1341 | + return values |
| 1342 | + |
| 1343 | + def mdui_uiinfo_i18n_element_key(self, entity_id, langpref, element_key): |
| 1344 | + values = self._mdui_uiinfo_i18n_elements( |
| 1345 | + entity_id, langpref, element_key, self._mdui_uiinfo_lookup_elements_by_key |
| 1346 | + ) |
| 1347 | + return values |
| 1348 | + |
| 1349 | + def _mdui_uiinfo_display_name(self, entity_id, langpref="en"): |
| 1350 | + cls = classnames["mdui_uiinfo_display_name"] |
| 1351 | + values = self.mdui_uiinfo_i18n_element_cls(entity_id, langpref, cls) |
| 1352 | + return values |
| 1353 | + |
| 1354 | + def mdui_uiinfo_display_name(self, entity_id, langpref="en"): |
| 1355 | + values = list(self._mdui_uiinfo_display_name(entity_id, langpref)) |
| 1356 | + return values |
| 1357 | + |
| 1358 | + def _mdui_uiinfo_description(self, entity_id, langpref="en"): |
| 1359 | + cls = classnames["mdui_uiinfo_description"] |
| 1360 | + values = self.mdui_uiinfo_i18n_element_cls(entity_id, langpref, cls) |
| 1361 | + return values |
| 1362 | + |
| 1363 | + def mdui_uiinfo_description(self, entity_id, langpref="en"): |
| 1364 | + values = list(self._mdui_uiinfo_description(entity_id, langpref)) |
| 1365 | + return values |
| 1366 | + |
| 1367 | + def _mdui_uiinfo_information_url(self, entity_id, langpref="en"): |
| 1368 | + cls = classnames["mdui_uiinfo_information_url"] |
| 1369 | + values = self.mdui_uiinfo_i18n_element_cls(entity_id, langpref, cls) |
| 1370 | + return values |
| 1371 | + |
| 1372 | + def mdui_uiinfo_information_url(self, entity_id, langpref="en"): |
| 1373 | + values = list(self._mdui_uiinfo_information_url(entity_id, langpref)) |
| 1374 | + return values |
| 1375 | + |
| 1376 | + def _mdui_uiinfo_privacy_statement_url(self, entity_id, langpref="en"): |
| 1377 | + cls = classnames["mdui_uiinfo_privacy_statement_url"] |
| 1378 | + values = self.mdui_uiinfo_i18n_element_cls(entity_id, langpref, cls) |
| 1379 | + return values |
| 1380 | + |
| 1381 | + def mdui_uiinfo_privacy_statement_url(self, entity_id, langpref="en"): |
| 1382 | + values = list(self._mdui_uiinfo_privacy_statement_url(entity_id, langpref)) |
| 1383 | + return values |
| 1384 | + |
| 1385 | + def _mdui_uiinfo_logo(self, entity_id, width, height): |
| 1386 | + uiinfos = self._mdui_uiinfo(entity_id) |
| 1387 | + cls = classnames["mdui_uiinfo_logo"] |
| 1388 | + elements = self._mdui_uiinfo_lookup_elements_by_cls(uiinfos, cls) |
| 1389 | + values = ( |
| 1390 | + element |
| 1391 | + for element in elements |
| 1392 | + if width is None or element.get("width") == width |
| 1393 | + if height is None or element.get("height") == height |
| 1394 | + ) |
| 1395 | + return values |
| 1396 | + |
| 1397 | + def mdui_uiinfo_logo(self, entity_id, width=None, height=None): |
| 1398 | + values = list(self._mdui_uiinfo_logo(entity_id, width, height)) |
| 1399 | + return values |
| 1400 | + |
1293 | 1401 | def bindings(self, entity_id, typ, service):
|
1294 | 1402 | for _md in self.metadata.values():
|
1295 | 1403 | if entity_id in _md.items():
|
|
0 commit comments