From 09b68e9b60ce8f53a0c50dd52607444ec6c46ba2 Mon Sep 17 00:00:00 2001
From: Bryan Tong Minh <bryan.tongminh@gmail.com>
Date: Sat, 5 Dec 2009 22:08:05 +0000
Subject: [PATCH] Bug 2690034: Fix revision iteration

---
 mwclient/RELEASE-NOTES.txt | 1 +
 mwclient/page.py           | 8 +++++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/mwclient/RELEASE-NOTES.txt b/mwclient/RELEASE-NOTES.txt
index 3ba95bf..faa0af6 100644
--- a/mwclient/RELEASE-NOTES.txt
+++ b/mwclient/RELEASE-NOTES.txt
@@ -9,6 +9,7 @@ Mwclient 0.6.4 is unreleased.
 * Properly fix detection of alpha versions
 * Added support for builtin json library
 * Handle badtoken once
+* Bug 2690034: Fix revision iteration
 
 == Changes in version 0.6.3 ==
 * Added domain parameter to login.
diff --git a/mwclient/page.py b/mwclient/page.py
index 4398b9a..3cfee99 100644
--- a/mwclient/page.py
+++ b/mwclient/page.py
@@ -266,7 +266,7 @@ class Page(object):
 		kwargs['rvprop'] = prop
 		if expandtemplates: kwargs['rvexpandtemplates'] = '1'
 		
-		return listing.PageProperty(self, 'revisions', 'rv', limit = limit, **kwargs)
+		return RevisionsIterator(self, 'revisions', 'rv', limit = limit, **kwargs)
 	def templates(self, namespace = None, generator = True):
 		self.site.require(1, 8)
 		kwargs = dict(listing.List.generate_kwargs('tl', namespace = namespace))
@@ -313,3 +313,9 @@ class Image(Page):
 	def __repr__(self):
 		return "<Image object '%s' for %s>" % (self.name.encode('utf-8'), self.site)
 	
+class RevisionsIterator(listing.PageProperty):
+	def load_chunk(self):
+		if 'rvstartid' in self.args and 'rvstart' in self.args:
+			del self.args['rvstart']
+		return listing.PageProperty.load_chunk(self)
+	
\ No newline at end of file
-- 
GitLab