jenkins-bot has submitted this change and it was merged.
Change subject: add new methods for purging pages
......................................................................
add new methods for purging pages
Page.purge() and APISite.purgepages()
also added a test
Change-Id: I5ee059907684440491ef4e675ffe231cbe100929
---
M pywikibot/page.py
M pywikibot/site.py
M tests/page_tests.py
3 files changed, 33 insertions(+), 0 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/page.py b/pywikibot/page.py
index f95b39b..539f4f6 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -944,6 +944,12 @@
"""
return self.site.watchpage(self, unwatch)
+ def purge(self, **kwargs):
+ """Purge the server's cache for this page.
+
+ """
+ return self.site.purgepages([self], **kwargs)
+
def linkedPages(self, namespaces=None, step=None, total=None,
content=False):
"""Iterate Pages that this Page links to.
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 78196a5..93fce2f 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -3196,6 +3196,32 @@
return ((unwatch and "unwatched" in watched)
or (not unwatch and "watched" in result))
+ def purgepages(self, pages, **kwargs):
+ """Purge the server's cache for one or multiple pages.
+
+ @param pages: list of Page objects
+ @return: True if API returned expected response; False otherwise
+
+ """
+ req = api.Request(site=self, action='purge')
+ req['titles'] = [page.title(withSection=False) for page in set(pages)]
+ linkupdate = False
+ linkupdate_args = ['forcelinkupdate',
'forcerecursivelinkupdate']
+ for arg in kwargs:
+ if arg in linkupdate_args + ['redirects', 'converttitles']:
+ req[arg] = kwargs[arg]
+ if arg in linkupdate_args:
+ linkupdate = True
+ result = req.submit()
+ if 'purge' not in result:
+ pywikibot.error(u'purgepages: Unexpected API response:\n%s' %
result)
+ return False
+ result = result['purge']
+ purged = ['purged' in page for page in result]
+ if linkupdate:
+ purged += ['linkupdate' in page for page in result]
+ return all(purged)
+
@deprecated("Site().exturlusage")
def linksearch(self, siteurl, limit=None):
"""Backwards-compatible interface to
exturlusage()"""
diff --git a/tests/page_tests.py b/tests/page_tests.py
index d764f68..78740cf 100644
--- a/tests/page_tests.py
+++ b/tests/page_tests.py
@@ -243,6 +243,7 @@
self.assertType(mainpage.editTime(), pywikibot.Timestamp)
self.assertType(mainpage.previousRevision(), int)
self.assertType(mainpage.permalink(), basestring)
+ self.assertType(mainpage.purge(), bool)
def testIsDisambig(self):
"""
--
To view, visit
https://gerrit.wikimedia.org/r/119690
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I5ee059907684440491ef4e675ffe231cbe100929
Gerrit-PatchSet: 2
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Ricordisamoa <ricordisamoa(a)live.it>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Ricordisamoa <ricordisamoa(a)live.it>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>