From 40cbbb462738393ed90c36055040e361d2d8eb6c Mon Sep 17 00:00:00 2001
From: Bryan Tong Minh <bryan.tongminh@gmail.com>
Date: Mon, 25 Feb 2008 15:31:10 +0000
Subject: [PATCH] Add protect compatibility for 1.13; change the compatibility
 format slightly

---
 mwclient/compatibility.py | 11 ++++++++---
 mwclient/page.py          |  8 ++++----
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/mwclient/compatibility.py b/mwclient/compatibility.py
index ded741a..80a0105 100644
--- a/mwclient/compatibility.py
+++ b/mwclient/compatibility.py
@@ -18,8 +18,8 @@ def userinfo(data, new_format = None):
 	else:
 		return data['userinfo']
 
-def iiprop(post_112):
-	if post_112:
+def iiprop(version):
+	if version[:2] >= (1, 12):
 		return 'timestamp|user|comment|url|size|sha1|metadata'
 	else:
 		return 'timestamp|user|comment|url|size|sha1'
@@ -29,4 +29,9 @@ def cmtitle(page, new_format, prefix = ''):
 		return prefix + 'title', page.name
 	else:
 		return prefix + 'category', page.strip_namespace(page.name)
-		
\ No newline at end of file
+		
+def protectright(version):
+	if version[:2] >= (1, 13):
+		return 'editprotected'
+	else:
+		return 'protect'
\ No newline at end of file
diff --git a/mwclient/page.py b/mwclient/page.py
index e41b1b8..605ba10 100644
--- a/mwclient/page.py
+++ b/mwclient/page.py
@@ -64,7 +64,7 @@ class Page(object):
 		
 	def can(self, action):
 		level = self.protection.get(action, (action, ))[0]
-		if level == 'sysop': level = 'protect'
+		if level == 'sysop': level = compatibility.protectright(site.version)
 		
 		return level in self.site.rights
 		
@@ -247,14 +247,14 @@ class Image(Page):
 	def __init__(self, site, name, info = None):
 		site.require(1, 11)
 		Page.__init__(self, site, name, info,
-			extra_properties = {'imageinfo': (('iiprop', compatibility.iiprop(
-				site.require(1, 12, raise_error = False))), )})
+			extra_properties = {'imageinfo': (('iiprop', 
+				compatibility.iiprop(site.version)), )})
 		self.imagerepository = self._info.get('imagerepository', '')
 		self.imageinfo = self._info.get('imageinfo', ((), ))[0]
 
 	def imagehistory(self):
 		return listing.PageProperty(self, 'imageinfo', 'ii', 
-			iiprop = compatibility.iiprop(self.site.require(1, 12, raise_error = False)))
+			iiprop = compatibility.iiprop(site.version))
 	def imageusage(self, namespace = None, filterredir = 'all', redirect = False, 
 			limit = None, generator = True):
 		self.site.require(1, 11)
-- 
GitLab