Revision: 7455
Author: alexsh
Date: 2009-10-13 19:53:10 +0000 (Tue, 13 Oct 2009)
Log Message:
-----------
Page().undelete(): add API
Modified Paths:
--------------
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py 2009-10-13 19:44:09 UTC (rev 7454)
+++ trunk/pywikipedia/wikipedia.py 2009-10-13 19:53:10 UTC (rev 7455)
@@ -770,7 +770,7 @@
if restr['type'] == 'edit':
self.editRestriction = restr['level']
elif restr['type'] == 'move':
- self.moveRestriction = restr['level']
+ self.moveRestriction = restr['level']
self._revisionId = pageInfo['revisions'][0]['revid']
@@ -2999,38 +2999,65 @@
if ... #decide whether to undelete a revision
pg.markDeletedRevision(rev) #mark for undeletion
pg.undelete('This will restore only selected revisions.')
-
+
"""
# Login
self._getActionUser(action = 'undelete', sysop = True)
-
+
# Check blocks
self.site().checkBlocks(sysop = True)
-
+
+ token = self.site().getToken(self, sysop=True)
+
if throttle:
put_throttle()
-
- address = self.site().undelete_address()
- token = self.site().getToken(self, sysop=True)
-
- formdata = {
+
+ if config.use_api and self.site().versionnumber() >= 12:
+ params = {
+ 'action': 'undelete',
+ 'title': self.title(),
+ 'reason': comment,
+ 'token': token,
+ }
+ if self._deletedRevs and self._deletedRevsModified:
+ selected = []
+
+ for ts in self._deletedRevs:
+ if self._deletedRevs[ts][4]:
+ selected.append(ts)
+ params['timestamps'] = query.ListToParam(ts),
+
+ result = query.GetData(params, self.site(), sysop=True)
+ if 'error' in result:
+ raise RuntimeError("%s" % result)
+ elif 'undelete' in result:
+ output(u'Page %s undeleted' % self.aslink())
+
+ return result
+
+ else:
+ address = self.site().undelete_address()
+
+ formdata = {
'target': self.title(),
'wpComment': comment,
'wpEditToken': token,
'restore': self.site().mediawiki_message('undeletebtn')
- }
+ }
+
+ if self._deletedRevs and self._deletedRevsModified:
+ for ts in self._deletedRevs:
+ if self._deletedRevs[ts][4]:
+ formdata['ts'+ts] = '1'
- if self._deletedRevs is not None and self._deletedRevsModified:
- for ts in self._deletedRevs:
- if self._deletedRevs[ts][4]:
- formdata['ts'+ts] = '1'
+ self._deletedRevs = None
+ #TODO: Check for errors below (have we succeeded? etc):
+ result = self.site().postForm(address,formdata,sysop=True)
+ output(u'Page %s undeleted' % self.aslink())
+
+ return result
+
- self._deletedRevs = None
- #TODO: Check for errors below (have we succeeded? etc):
- result = self.site().postForm(address,formdata,sysop=True)
- output(u'Page %s undeleted' % self.aslink())
- return result
-
def protect(self, editcreate = 'sysop', move = 'sysop', unprotect = False,
reason = None, editcreate_duration = 'infinite',
move_duration = 'infinite', cascading = False, prompt = True,
throttle = True):
"""(Un)protect a wiki title. Requires administrator status.
_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn