Filter out duplicate JS/CSS URLs, refs #291 (testme)

columns
Simon Willison 2018-05-27 01:45:03 -07:00
rodzic c972d79b5a
commit 02870e5731
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 17E2DEA2588B7F52
1 zmienionych plików z 16 dodań i 6 usunięć

Wyświetl plik

@ -189,15 +189,25 @@ class Datasette:
return {"name": query_name, "sql": query}
def asset_urls(self, key):
urls_or_dicts = (self.metadata.get(key) or [])
# Flatten list-of-lists from plugins:
urls_or_dicts += list(itertools.chain.from_iterable(getattr(pm.hook, key)()))
for url_or_dict in urls_or_dicts:
seen_urls = set()
for url_or_dict in itertools.chain(
itertools.chain.from_iterable(getattr(pm.hook, key)()),
(self.metadata.get(key) or [])
):
if isinstance(url_or_dict, dict):
yield {"url": url_or_dict["url"], "sri": url_or_dict.get("sri")}
url = url_or_dict["url"]
sri = url_or_dict.get("sri")
else:
yield {"url": url_or_dict}
url = url_or_dict
sri = None
if url in seen_urls:
continue
seen_urls.add(url)
if sri:
yield {"url": url, "sri": sri}
else:
yield {"url": url}
def extra_css_urls(self):
return self.asset_urls("extra_css_urls")