jenkins-bot has submitted this change. (
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/637717 )
Change subject: [bugfix] do not raise Exception in Page.get_best_claim()
......................................................................
[bugfix] do not raise Exception in Page.get_best_claim()
Follow redirect if item_page exists and is a redirect.
Bug: T265839
Change-Id: Ie1f051bb1eda8f384de79ca2b56f406898664461
---
M pywikibot/page/__init__.py
1 file changed, 14 insertions(+), 8 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/page/__init__.py b/pywikibot/page/__init__.py
index 691bb2b..b31a82a 100644
--- a/pywikibot/page/__init__.py
+++ b/pywikibot/page/__init__.py
@@ -2380,14 +2380,20 @@
if not self.site.has_data_repository:
raise UnknownExtension(
'Wikibase is not implemented for {}.'.format(self.site))
- try:
- item_page = pywikibot.ItemPage.fromPage(self)
- except pywikibot.NoPage:
- pass
- else:
- item_page.get()
- if prop in item_page.claims:
- return find_best_claim(item_page.claims[prop])
+
+ def get_item_page(func, *args):
+ try:
+ item_p = func(*args)
+ item_p.get()
+ return item_p
+ except pywikibot.NoPage:
+ return None
+ except pywikibot.IsRedirectPage:
+ return get_item_page(item_p.getRedirectTarget)
+
+ item_page = get_item_page(pywikibot.ItemPage.fromPage, self)
+ if item_page and prop in item_page.claims:
+ return find_best_claim(item_page.claims[prop])
return None
--
To view, visit
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/637717
To unsubscribe, or for help writing mail filters, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: Ie1f051bb1eda8f384de79ca2b56f406898664461
Gerrit-Change-Number: 637717
Gerrit-PatchSet: 1
Gerrit-Owner: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged