From 10beaf2c5dce25a4b1d6bcd6d5c7d9f45e359ae5 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 19 Feb 2011 18:54:26 +0100 Subject: [PATCH] don't need to have an account on mediawiki --- weboob/backends/mediawiki/backend.py | 8 +++---- weboob/backends/mediawiki/browser.py | 32 ++++++++++++---------------- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/weboob/backends/mediawiki/backend.py b/weboob/backends/mediawiki/backend.py index a985845e..7d725bd9 100644 --- a/weboob/backends/mediawiki/backend.py +++ b/weboob/backends/mediawiki/backend.py @@ -28,13 +28,14 @@ __all__ = ['MediawikiBackend'] class MediawikiBackend(BaseBackend, ICapContent): NAME = 'mediawiki' MAINTAINER = u'Clément Schreiner' - EMAIL = '0.6' + EMAIL = 'clemux@clemux.info' + VERSION = '0.6' LICENSE = 'GPLv3' DESCRIPTION = 'Mediawiki wiki software application' CONFIG = ValuesDict(Value('url', label='URL of the Mediawiki website'), Value('apiurl', label='URL of the Mediawiki website\'s API'), - Value('username', label='Login'), - Value('password', label='Password', masked=True)) + Value('username', label='Login', default=''), + Value('password', label='Password', default='', masked=True)) BROWSER = MediawikiBrowser def create_default_browser(self): @@ -53,7 +54,6 @@ class MediawikiBackend(BaseBackend, ICapContent): def iter_revisions(self, _id, max_results=10): for rev in self.browser.iter_wiki_revisions(_id, max_results): yield rev - def push_content(self, content, message=None, minor=False): self.browser.set_wiki_source(content, message, minor) diff --git a/weboob/backends/mediawiki/browser.py b/weboob/backends/mediawiki/browser.py index 4c3656ba..92d837a6 100644 --- a/weboob/backends/mediawiki/browser.py +++ b/weboob/backends/mediawiki/browser.py @@ -35,7 +35,7 @@ __all__ = ['MediawikiBrowser'] # Browser class MediawikiBrowser(BaseBrowser): ENCODING = 'utf-8' - + def __init__(self, url, apiurl, *args, **kwargs): url_parsed = urlsplit(url) self.PROTOCOL = url_parsed.scheme @@ -43,7 +43,7 @@ class MediawikiBrowser(BaseBrowser): self.BASEPATH = url_parsed.path if self.BASEPATH.endswith('/'): self.BASEPATH = self.BASEPATH[:-1] - + prefix = '%s://%s%s' % (self.PROTOCOL, self.DOMAIN, self.BASEPATH) self.apiurl = apiurl @@ -51,7 +51,7 @@ class MediawikiBrowser(BaseBrowser): def get_wiki_source(self, page): assert isinstance(self.apiurl, basestring) - + data = {'action': 'query', 'prop': 'revisions|info', 'titles': page, @@ -61,7 +61,7 @@ class MediawikiBrowser(BaseBrowser): } - + result = self.API_get(data) pageid = result['query']['pages'].keys()[0] if pageid == "-1": @@ -70,7 +70,7 @@ class MediawikiBrowser(BaseBrowser): def get_token(self, page, _type): ''' _type can be edit, delete, protect, move, block, unblock, email or import''' - if not self.is_logged(): + if len(self.username) > 0 and not self.is_logged(): self.login() data = {'action': 'query', @@ -84,14 +84,14 @@ class MediawikiBrowser(BaseBrowser): return None return result['query']['pages'][str(pageid)][_type+'token'] - + def set_wiki_source(self, content, message=None, minor=False): - if not self.is_logged(): + if len(self.username) > 0 and not self.is_logged(): self.login() - + page = content.id token = self.get_token(page, 'edit') - + data = {'action': 'edit', 'title': page, 'token': token, @@ -111,8 +111,6 @@ class MediawikiBrowser(BaseBrowser): } result = self.API_post(data) return result['parse']['text']['*'] - - def is_logged(self): data = {'action': 'query', @@ -120,7 +118,7 @@ class MediawikiBrowser(BaseBrowser): } result = self.API_get(data) return result['query']['userinfo']['id'] != 0 - + def login(self): assert isinstance(self.username, basestring) assert isinstance(self.password, basestring) @@ -132,15 +130,15 @@ class MediawikiBrowser(BaseBrowser): } result = self.API_post(data) if result['login']['result'] == 'WrongPass': - raise BrowserIncorrectPassword - + raise BrowserIncorrectPassword() + if result['login']['result'] == 'NeedToken': data['lgtoken'] = result['login']['token'] result2 = self.API_post(data) def iter_wiki_revisions(self, page, nb_entries): '''Yield 'Revision' objects for the last revisions of the specified page.''' - if not self.is_logged(): + if len(self.username) > 0 and not self.is_logged(): self.login() data = {'action': 'query', 'titles': page, @@ -151,7 +149,7 @@ class MediawikiBrowser(BaseBrowser): result = self.API_get(data) pageid = str(result['query']['pages'].keys()[0]) - + for rev in result['query']['pages'][pageid]['revisions']: rev_content = Revision(str(rev['revid'])) rev_content.comment = rev['comment'] @@ -163,8 +161,6 @@ class MediawikiBrowser(BaseBrowser): else: rev_content.minor = False yield rev_content - - def home(self): '''We don't need to change location, we're using the JSON API here.'''