Revision: 7999 Author: xqt Date: 2010-03-13 12:21:37 +0000 (Sat, 13 Mar 2010)
Log Message: ----------- use site.has_api() method
Modified Paths: -------------- trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/wikipedia.py =================================================================== --- trunk/pywikipedia/wikipedia.py 2010-03-13 11:03:04 UTC (rev 7998) +++ trunk/pywikipedia/wikipedia.py 2010-03-13 12:21:37 UTC (rev 7999) @@ -656,13 +656,7 @@
This method returns the raw wiki text as a unicode string. """ - try: - if config.use_api and self.site().versionnumber() > 11: - x = self.site().api_address() - del x - else: - raise NotImplementedError - except NotImplementedError: + if not self.site().has_api() or self.site().versionnumber() < 12: return self._getEditPageOld(get_redirect, throttle, sysop, oldid, change_edit_time)
params = { @@ -1209,13 +1203,7 @@ * redirectsOnly - if True, only returns redirects to self.
""" - try: - if config.use_api and self.site().versionnumber() > 9: - d = self.site().apipath() - del d - else: - raise NotImplementedError - except NotImplementedError: + if not self.site().has_api(): for s in self.getReferencesOld(follow_redirects, withTemplateInclusion, onlyTemplateInclusion, redirectsOnly): yield s return @@ -1543,7 +1531,7 @@ if not force: if not self.botMayEdit(username): raise LockedPage(u'Not allowed to edit %s because of a restricting template' % self.aslink()) - elif config.use_api and self.namespace() in [2,3] and ( '.css' in self.title() or '.js' in self.title()): + elif self.site().has_api() and self.namespace() in [2,3] and ( '.css' in self.title() or '.js' in self.title()): # API enable: if title is .css or .js in ns2,3 , it need permission `editusercssjs` sysop = self._getActionUser(action = 'editusercssjs', restriction = self.editRestriction, sysop=True)
@@ -1584,7 +1572,7 @@ newPage = not self.exists() # if posting to an Esperanto wiki, we must e.g. write Bordeauxx instead # of Bordeaux - if self.site().lang == 'eo' and not config.use_api: + if self.site().lang == 'eo' and not self.site().has_api(): newtext = encodeEsperantoX(newtext) comment = encodeEsperantoX(comment)
@@ -1613,13 +1601,8 @@ Don't use this directly, use put() instead.
""" - try: - if config.use_api and self.site().versionnumber() >= 13: - apitest = self.site().api_address() - del apitest - else: - raise NotImplementedError #No enable api or version not support - except NotImplementedError: + if not self.site().has_api() or self.site().versionnumber() < 13: + # api not enabled or version not supported return self._putPageOld(text, comment, watchArticle, minorEdit, newPage, token, newToken, sysop, captcha, botflag, maxTries)
@@ -2501,13 +2484,7 @@ """Load history informations by API query. Internal use for self.getVersionHistory(), don't use this function directly. """ - try: - if config.use_api and self.site().versionnumber() >= 8: - x = self.site().api_address() - del x - else: - raise NotImplementedError - except NotImplementedError: + if not self.site().has_api() or self.site().versionnumber() < 8: return self._getVersionHistoryOld(reExist, getAll, skipFirst, reverseOrder, revCount) dataQ = [] thisHistoryDone = False @@ -2664,13 +2641,7 @@ to move and delete if not directly requested.
* fixredirects has no effect in MW < 1.13""" - try: - if config.use_api and self.site().versionnumber() >= 12: - x = self.site().api_address() - del x - else: - raise NotImplementedError - except NotImplementedError: + if not self.site().has_api() or self.site().versionnumber() < 12: return self._moveOld(newtitle, reason, movetalkpage, sysop, throttle, deleteAndMove, safe, fixredirects, leaveRedirect) # Login @@ -2895,13 +2866,8 @@
token = self.site().getToken(self, sysop = True) reason = reason.encode(self.site().encoding()) - try: - d = self.site().api_address() - del d - except NotImplementedError: - config.use_api = False
- if config.use_api and self.site().versionnumber() >= 12: + if self.site().has_api() and self.site().versionnumber() >= 12: #API Mode params = { 'action': 'delete', @@ -2973,7 +2939,7 @@
self._deletedRevs = {}
- if config.use_api and self.site().versionnumber() >= 12: + if self.site().has_api() and self.site().versionnumber() >= 12: params = { 'action': 'query', 'list': 'deletedrevs', @@ -3090,7 +3056,7 @@ if throttle: put_throttle()
- if config.use_api and self.site().versionnumber() >= 12: + if self.site().has_api() and self.site().versionnumber() >= 12: params = { 'action': 'undelete', 'title': self.title(), @@ -3178,15 +3144,10 @@ answer = 'y' self.site()._noProtectPrompt = True if answer == 'y': - try: - if config.use_api and self.site().versionnumber() >= 12: - x = self.site().api_address() - del x - else: - raise NotImplementedError - except NotImplementedError: - return self._oldProtect( editcreate, move, unprotect, reason, editcreate_duration, - move_duration, cascading, prompt, throttle) + if not self.site().has_api() or self.site().versionnumber() < 12: + return self._oldProtect(editcreate, move, unprotect, reason, + editcreate_duration, move_duration, + cascading, prompt, throttle)
token = self.site().getToken(self, sysop = True)
@@ -3637,16 +3598,11 @@ return u'{| border="1"\n! date/time || username || resolution || size || edit summary\n|----\n' + u'\n|----\n'.join(lines) + '\n|}'
def usingPages(self): - try: - if config.use_api and self.site().versionnumber() >= 11: - x = self.site().api_address() - del x - else: - raise NotImplementedError - except NotImplementedError: + if not self.site().has_api() or self.site().versionnumber() < 11: for a in self._usingPagesOld(): yield a return + params = { 'action': 'query', 'list': 'imageusage', @@ -3709,14 +3665,8 @@ def run(self): if self.pages: doAPI = None - #if config.use_api: - # # API Implemented Check - # try: - # doAPI = True - # d = self.site.api_address() - # del d - # except NotImplementedError: - # doAPI = False + # API Implemented Check + # doAPI = self.site.has_api()
if doAPI: while True: @@ -4074,10 +4024,9 @@ """ # TODO: why isn't this a Site method? pages = list(pages) # if pages is an iterator, we need to make it a list - output(u'Getting %d pages from %s' % (len(pages), site), newline = False) - #if config.use_api: - # output(u' via API...') - #else: + output(u'Getting %d pages from %s' % (len(pages), site), newline=False) + if site.has_api(): + output(u' via API', newline=False) output(u'...') limit = config.special_page_limit / 4 # default is 500/4, but It might have good point for server.
@@ -4600,6 +4549,7 @@ return 1 else: return 0 + def username(self, sysop = False): return self._userName[self._userIndex(sysop = sysop)]
@@ -4682,7 +4632,6 @@ else: self._load(sysop = sysop) index = self._userIndex(sysop) - ##output('%s' % self._rights[index]) #for debug use return right in self._rights[index]
def server_time(self): @@ -5645,7 +5594,6 @@ index = self._userIndex(sysop) if self._userData[index] and not force: return - if verbose: output(u'Getting information for site %s' % self)
@@ -6224,7 +6172,7 @@ break
def randompage(self, redirect = False): - if config.use_api and self.versionnumber() >= 12: + if self.has_api() and self.versionnumber() >= 12: params = { 'action': 'query', 'list': 'random', @@ -6273,10 +6221,8 @@ page = Page(self, start) namespace = page.namespace() start = page.titleWithoutNamespace() - try: - api_url = self.api_address() - del api_url - except NotImplementedError: + + if not self.has_api(): for page in self._allpagesOld(start, namespace, includeredirects, throttle): yield page return
pywikipedia-svn@lists.wikimedia.org