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(),
|
self.config['apiurl'].get(),
|
||||||
username, password)
|
username, password)
|
||||||
|
|
||||||
def get_content(self, _id):
|
def get_content(self, _id, revision=None):
|
||||||
_id = _id.replace(' ', '_').encode('utf-8')
|
_id = _id.replace(' ', '_').encode('utf-8')
|
||||||
content = Content(_id)
|
content = Content(_id)
|
||||||
page = _id
|
page = _id
|
||||||
|
rev = revision.id if revision else None
|
||||||
with self.browser:
|
with self.browser:
|
||||||
data = self.browser.get_wiki_source(page)
|
data = self.browser.get_wiki_source(page, rev)
|
||||||
|
|
||||||
content.content = data
|
content.content = data
|
||||||
return content
|
return content
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ class MediawikiBrowser(BaseBrowser):
|
||||||
else:
|
else:
|
||||||
return page
|
return page
|
||||||
|
|
||||||
def get_wiki_source(self, page):
|
def get_wiki_source(self, page, rev=None):
|
||||||
assert isinstance(self.apiurl, basestring)
|
assert isinstance(self.apiurl, basestring)
|
||||||
|
|
||||||
page = self.url2page(page)
|
page = self.url2page(page)
|
||||||
|
|
@ -64,15 +64,23 @@ class MediawikiBrowser(BaseBrowser):
|
||||||
data = {'action': 'query',
|
data = {'action': 'query',
|
||||||
'prop': 'revisions|info',
|
'prop': 'revisions|info',
|
||||||
'titles': page,
|
'titles': page,
|
||||||
'rvprop': 'content|timestamp',
|
'rvprop': 'content|timestamp|ids',
|
||||||
'rvlimit': '1',
|
'rvlimit': '1',
|
||||||
'intoken': 'edit',
|
'intoken': 'edit',
|
||||||
}
|
}
|
||||||
|
if rev:
|
||||||
|
data['rvstartid'] = rev
|
||||||
|
|
||||||
result = self.API_get(data)
|
result = self.API_get(data)
|
||||||
pageid = result['query']['pages'].keys()[0]
|
pageid = result['query']['pages'].keys()[0]
|
||||||
if pageid == "-1": # Page does not exist
|
if pageid == "-1": # Page does not exist
|
||||||
return ""
|
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]['*']
|
return result['query']['pages'][str(pageid)]['revisions'][0]['*']
|
||||||
|
|
||||||
def get_token(self, page, _type):
|
def get_token(self, page, _type):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue