parent
f49084a6a9
commit
0b29991387
2 changed files with 15 additions and 6 deletions
|
|
@ -54,12 +54,13 @@ class MediawikiBackend(BaseBackend, ICapContent):
|
|||
self.config['apiurl'].get(),
|
||||
username, password)
|
||||
|
||||
def get_content(self, _id):
|
||||
def get_content(self, _id, revision=None):
|
||||
_id = _id.replace(' ', '_').encode('utf-8')
|
||||
content = Content(_id)
|
||||
page = _id
|
||||
rev = revision.id if revision else None
|
||||
with self.browser:
|
||||
data = self.browser.get_wiki_source(page)
|
||||
data = self.browser.get_wiki_source(page, rev)
|
||||
|
||||
content.content = data
|
||||
return content
|
||||
|
|
|
|||
|
|
@ -55,24 +55,32 @@ class MediawikiBrowser(BaseBrowser):
|
|||
return m.group(1)
|
||||
else:
|
||||
return page
|
||||
|
||||
def get_wiki_source(self, page):
|
||||
|
||||
def get_wiki_source(self, page, rev=None):
|
||||
assert isinstance(self.apiurl, basestring)
|
||||
|
||||
page = self.url2page(page)
|
||||
page = self.url2page(page)
|
||||
|
||||
data = {'action': 'query',
|
||||
'prop': 'revisions|info',
|
||||
'titles': page,
|
||||
'rvprop': 'content|timestamp',
|
||||
'rvprop': 'content|timestamp|ids',
|
||||
'rvlimit': '1',
|
||||
'intoken': 'edit',
|
||||
}
|
||||
if rev:
|
||||
data['rvstartid'] = rev
|
||||
|
||||
result = self.API_get(data)
|
||||
pageid = result['query']['pages'].keys()[0]
|
||||
if pageid == "-1": # Page does not exist
|
||||
return ""
|
||||
|
||||
if 'revisions' not in repr(result['query']['pages'][str(pageid)]):
|
||||
raise APIError('Revision %s does not exist' % rev)
|
||||
if rev and result['query']['pages'][str(pageid)]['revisions'][0]['revid'] != int(rev):
|
||||
raise APIError('Revision %s does not exist' % rev)
|
||||
|
||||
return result['query']['pages'][str(pageid)]['revisions'][0]['*']
|
||||
|
||||
def get_token(self, page, _type):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue