From 4cebe36eee7d1136e8d07496dae1d8dc6a263dfa Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Sun, 24 Mar 2019 00:30:25 -0400 Subject: [PATCH] Validate site info if not in sites DB --- copyvios/sites.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/copyvios/sites.py b/copyvios/sites.py index aab428a..df432be 100644 --- a/copyvios/sites.py +++ b/copyvios/sites.py @@ -18,23 +18,28 @@ def get_site(query): try: return wiki.get_site(name=name) except exceptions.SiteNotFoundError: - try: - return wiki.add_site(lang=lang, project=project) - except (exceptions.APIError, exceptions.LoginError): - return None + return _add_site(lang, project) try: return wiki.get_site(lang=lang, project=project) except exceptions.SiteNotFoundError: - try: - return wiki.add_site(lang=lang, project=project) - except (exceptions.APIError, exceptions.LoginError): - return None + return _add_site(lang, project) def update_sites(): if time() - cache.last_sites_update > 60 * 60 * 24 * 7: cache.langs, cache.projects = _load_sites() cache.last_sites_update = time() +def _add_site(lang, project): + update_sites() + if not any(project == item[0] for item in cache.projects): + return None + if lang != "www" and not any(lang == item[0] for item in cache.langs): + return None + try: + return cache.bot.wiki.add_site(lang=lang, project=project) + except (exceptions.APIError, exceptions.LoginError): + return None + def _load_sites(): site = cache.bot.wiki.get_site() matrix = site.api_query(action="sitematrix")["sitematrix"]