From a6464a371ac9dcd4477bc12d7481bc9b58f9fdb8 Mon Sep 17 00:00:00 2001
From: Bryan Tong Minh <bryan.tongminh@gmail.com>
Date: Thu, 16 Jul 2009 19:19:37 +0000
Subject: [PATCH] * Allow arbitrary data to be passed to page.save * Fix
 mwclient on WMF wikis

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

diff --git a/mwclient/RELEASE-NOTES.txt b/mwclient/RELEASE-NOTES.txt
index 265bac5..3fc892f 100644
--- a/mwclient/RELEASE-NOTES.txt
+++ b/mwclient/RELEASE-NOTES.txt
@@ -6,6 +6,8 @@ This is mwclient 0.6.3. The following are the release notes for this version.
 Mwclient 0.6.3 is unreleased.
 * Added domain parameter to login.
 * Applied edit fix to page_nowriteapi
+* Allow arbitrary data to be passed to page.save
+* Fix mwclient on WMF wikis
 
 == Changes in version 0.6.2 ==
 Mwclient was released on 2 May 2009.
diff --git a/mwclient/client.py b/mwclient/client.py
index 9c125d6..a901c57 100644
--- a/mwclient/client.py
+++ b/mwclient/client.py
@@ -96,8 +96,11 @@ class Site(object):
 			
 		if self.site['generator'].startswith('MediaWiki '):
 			version = self.site['generator'][10:].split('.')
+			# FIXME! Fix those awful two hacks
 			if len(version) == 2 and version[1].endswith('alpha'):
 				self.version = (int(version[0]), int(version[1][:-5]), 'alpha')
+			elif len(version) == 2 and version[1].endswith('alpha-wmf'):
+				self.version = (int(version[0]), int(version[1][:-5]), 'alpha-wmf')
 			elif len(version) == 3 and 'rc' in version[2]:
 				self.version = (int(version[0]), int(version[1]), version[2])
 			elif len(version) == 3:
diff --git a/mwclient/page.py b/mwclient/page.py
index 3a7675d..58dde4b 100644
--- a/mwclient/page.py
+++ b/mwclient/page.py
@@ -108,7 +108,7 @@ class Page(object):
 		self.edit_time = time.gmtime()
 		return self.text
 	
-	def save(self, text = u'', summary = u'', minor = False, bot = True):
+	def save(self, text = u'', summary = u'', minor = False, bot = True, **kwargs):
 		if not self.site.logged_in and self.site.force_login:
 			# Should we really check for this?
 			raise errors.LoginError(self.site)
@@ -129,6 +129,8 @@ class Page(object):
 		if self.edit_time: data['starttimestamp'] = time.strftime('%Y%m%d%H%M%S', self.edit_time)
 		if bot: data['bot'] = '1'
 		
+		data.update(kwargs)
+		
 		try:
 			result = self.site.api('edit', title = self.name, text = text, 
 					summary = summary, token = self.get_token('edit'), 
@@ -143,6 +145,8 @@ class Page(object):
 				raise errors.ProtectedPageError(self, e.code, e.info)
 			else:
 				raise
+		if result['edit'] == 'Success':
+			self.last_rev_time = client.parse_timestamp(result['newtimestamp'])
 		return result['edit']
 
 	def get_expanded(self):
-- 
GitLab