jenkins-bot has submitted this change and it was merged.
Change subject: Support for fetching page properties ......................................................................
Support for fetching page properties
Added a convenience function for fetching the defaultsort value.
Change-Id: I0752f1560e0e93cba0e01a9a1ea834e35f8a725c --- M pywikibot/data/api.py M pywikibot/page.py M pywikibot/site.py 3 files changed, 35 insertions(+), 0 deletions(-)
Approvals: Merlijn van Deen: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py index 2b23fb4..17f4db9 100644 --- a/pywikibot/data/api.py +++ b/pywikibot/data/api.py @@ -989,6 +989,9 @@ coords.append(coord) page._coords = coords
+ if "pageprops" in pagedict: + page._pageprops = pagedict['pageprops'] +
if __name__ == "__main__": from pywikibot import Site, logging diff --git a/pywikibot/page.py b/pywikibot/page.py index 59108e3..4147b4f 100644 --- a/pywikibot/page.py +++ b/pywikibot/page.py @@ -368,6 +368,24 @@ if hasattr(self, "_text"): del self._text
+ def properties(self, force=False): + """ + Returns the various page properties stored for a page + @param force: force updating from the live site + @return: dict + """ + if not hasattr(self, '_pageprops') or force: + self.site.loadpageprops(self) + return self._pageprops + + def defaultsort(self, force=False): + """ + Returns the value of {{DEFAULTSORT:}} magic word + @param force: force updating from the live site + @return: unicode + """ + return self.properties(force=force).get('defaultsort') + def expand_text(self, refresh=False): """Return the page text with all templates expanded.""" if not hasattr(self, "_expanded_text") or (self._expanded_text is None) or refresh: diff --git a/pywikibot/site.py b/pywikibot/site.py index 1c0b144..5050f78 100644 --- a/pywikibot/site.py +++ b/pywikibot/site.py @@ -1266,6 +1266,20 @@ continue api.update_page(page, pageitem)
+ def loadpageprops(self, page): + title = page.title(withSection=False) + query = self._generator(api.PropertyGenerator, + type_arg="pageprops", + titles=title.encode(self.encoding()), + ) + for pageitem in query: + if not self.sametitle(pageitem['title'], title): + pywikibot.warning( + u"loadpageprops: Query on %s returned data on '%s'" + % (page, pageitem['title'])) + continue + api.update_page(page, pageitem) + def loadimageinfo(self, page, history=False): """Load image info from api and save in page attributes