Revision: 7219 Author: russblau Date: 2009-09-07 18:12:56 +0000 (Mon, 07 Sep 2009)
Log Message: ----------- Edit conflict detection.
Modified Paths: -------------- branches/rewrite/pywikibot/site.py
Modified: branches/rewrite/pywikibot/site.py =================================================================== --- branches/rewrite/pywikibot/site.py 2009-09-07 09:12:09 UTC (rev 7218) +++ branches/rewrite/pywikibot/site.py 2009-09-07 18:12:56 UTC (rev 7219) @@ -2187,16 +2187,23 @@ except NoPage: lastrev = None if not recreate: - raise + raise token = self.token(page, "edit") + # getting token also updates the 'lastrevid' value, which allows us to + # detect if page has been changed since last time text was retrieved. + + # note that the server can still return an 'editconflict' error + # if the page is updated after the token is retrieved but + # before the page is saved. self.lock_page(page) if lastrev is not None and page.latestRevision() != lastrev: - raise Error("editpage: Edit conflict detected; saving aborted.") + raise EditConflict( + "editpage: Edit conflict detected; saving aborted.") req = api.Request(site=self, action="edit", title=page.title(withSection=False), text=text, token=token, summary=summary) -## if lastrev is not None: -## req["basetimestamp"] = page._revisions[lastrev].timestamp + if lastrev is not None: + req["basetimestamp"] = page._revisions[lastrev].timestamp if minor: req['minor'] = "" elif notminor:
pywikipedia-svn@lists.wikimedia.org