http://www.mediawiki.org/wiki/Special:Code/pywikipedia/11752
Revision: 11752
Author: xqt
Date: 2013-07-13 18:21:32 +0000 (Sat, 13 Jul 2013)
Log Message:
-----------
fix for lists option;
code improvements;
Modified Paths:
--------------
branches/rewrite/scripts/featured.py
Modified: branches/rewrite/scripts/featured.py
===================================================================
--- branches/rewrite/scripts/featured.py 2013-07-13 18:21:11 UTC (rev 11751)
+++ branches/rewrite/scripts/featured.py 2013-07-13 18:21:32 UTC (rev 11752)
@@ -225,7 +225,7 @@
'fromall': False,
'fromlang': None,
'good': False,
- 'list': False,
+ 'lists': False,
'nocache': list(),
'side': False, # not template_on_top
'quiet': False,
@@ -276,7 +276,7 @@
if self.getOption('good'):
self.run_good()
done = True
- if self.getOption('list'):
+ if self.getOption('lists'):
self.run_list()
done = True
if self.getOption('former'):
@@ -477,8 +477,19 @@
def getTemplateList(self, lang, task):
add_templates = []
remove_templates = []
- if task == 'good':
+ if task == 'featured':
try:
+ add_templates = template[lang]
+ add_templates += template['_default']
+ except KeyError:
+ add_templates = template['_default']
+ try:
+ remove_templates = template_good[lang]
+ remove_templates += template_good['_default']
+ except KeyError:
+ remove_templates = template_good['_default']
+ elif task == 'good':
+ try:
add_templates = template_good[lang]
add_templates += template_good['_default']
except KeyError:
@@ -494,21 +505,24 @@
add_templates += template_lists['_default']
except KeyError:
add_templates = template_lists['_default']
- else: # task in ['former', 'featured']
+ else: # task == 'former'
try:
- add_templates = template[lang]
- add_templates += template['_default']
+ remove_templates = template[lang]
+ remove_templates += template['_default']
except KeyError:
- add_templates = template['_default']
- if task == 'featured':
- try:
- remove_templates = template_good[lang]
- remove_templates += template_good['_default']
- except KeyError:
- remove_templates = template_good['_default']
+ remove_templates = template['_default']
return add_templates, remove_templates
def featuredWithInterwiki(self, fromsite, task):
+ """Place or remove the Link_GA/FA template on/from a
page"""
+
+ def compile_link(site, templates):
+ """compile one link template list"""
+ findtemplate = '(%s)' % '|'.join(templates)
+ return re.compile(ur"\{\{%s\|%s\}\}"
+ % (findtemplate.replace(u' ', u'[ _]'),
+ site.code), re.IGNORECASE)
+
quiet = self.getOption('quiet')
tosite = self.site
if not fromsite.lang in self.cache:
@@ -520,14 +534,8 @@
fromsite.code in self.getOption('nocache'):
cc = {}
add_tl, remove_tl = self.getTemplateList(tosite.code, task)
- findtemplate = '(%s)' % '|'.join(add_tl)
- re_Link_add = re.compile(ur"\{\{%s\|%s\}\}"
- % (findtemplate.replace(u' ', u'[ _]'),
- fromsite.code), re.IGNORECASE)
- findtemplate = '(%s)' % '|'.join(remove_tl)
- re_Link_remove = re.compile(ur"\{\{%s\|%s\}\}"
- % (findtemplate.replace(u' ', u'[
_]'),
- fromsite.code), re.IGNORECASE)
+ re_Link_add = compile_link(fromsite, add_tl)
+ re_Link_remove = compile_link(fromsite, remove_tl)
gen = self.featuredArticles(fromsite, task, cc)
gen = PreloadingGenerator(gen)
pairs = []
@@ -545,65 +553,57 @@
continue
text = atrans.get()
- m = re_Link_add.search(text)
- if task != 'former':
- if m:
- pywikibot.output(u"(already done)")
+ m1 = add_tl and re_Link_add.search(text)
+ m2 = remove_tl and re_Link_remove.search(text)
+ changed = False
+ if add_tl:
+ if m1:
+ pywikibot.output(u"(already added)")
else:
# insert just before interwiki
if (not interactive or
pywikibot.input(
u'Connecting %s -> %s. Proceed? [Y/N]'
% (a.title(), atrans.title())) in ['Y',
'y']):
- if remove_tl:
- text = re.sub(re_Link_remove, '', text)
if self.getOption('side'):
# Placing {{Link FA|xx}} right next to
# corresponding interwiki
- text = (text[:m.end()] +
- (u" {{%s|%s}}" % (templatelist[0],
- fromsite.code)) +
- text[m.end():])
+ text = (text[:m1.end()] +
+ u" {{%s|%s}}" % (add_tl[0], fromsite.code)
+
+ text[m1.end():])
else:
# Moving {{Link FA|xx}} to top of interwikis
- iw = pywikibot.getLanguageLinks(text, site)
- text = pywikibot.removeLanguageLinks(text, site)
- text += u"\r\n{{%s|%s}}\r\n" % (templatelist[0],
+ iw = pywikibot.getLanguageLinks(text, self.site)
+ text = pywikibot.removeLanguageLinks(text, self.site)
+ text += u"\r\n{{%s|%s}}\r\n" % (add_tl[0],
fromsite.code)
text = pywikibot.replaceLanguageLinks(text,
- iw, site)
- comment = i18n.twtranslate(self.site,
- 'featured-' + task,
- {'page': unicode(a)})
- try:
- atrans.put(text, comment)
- except pywikibot.LockedPage:
- pywikibot.output(u'Page %s is locked!'
- % atrans.title())
- except pywikibot.PageNotSaved, e:
- pywikibot.output(u"Page not saved")
- else:
- if m:
- # insert just before interwiki
+ iw, self.site)
+ changed = True
+ if remove_tl:
+ if m2:
if (not interactive or
pywikibot.input(
u'Connecting %s -> %s. Proceed? [Y/N]'
% (a.title(), atrans.title())) in ['Y',
'y']):
text = re.sub(re_Link_add, '', text)
- comment = i18n.twtranslate(self.site, 'featured-former',
- {'page': unicode(a)})
- try:
- atrans.put(text, comment)
- except pywikibot.LockedPage:
- pywikibot.output(u'Page %s is locked!'
- % atrans.title())
- except pywikibot.PageNotSaved, e:
- pywikibot.output(u"Page not saved")
- else:
- pywikibot.output(u"(already done)")
+ changed = True
+ elif task == 'former':
+ pywikibot.output(u"(already removed)")
cc[a.title()] = atrans.title()
+ if changed:
+ comment = i18n.twtranslate(self.site, 'featured-' + task,
+ {'page': unicode(a)})
+ try:
+ atrans.put(text, comment)
+ except pywikibot.LockedPage:
+ pywikibot.output(u'Page %s is locked!'
+ % atrans.title())
+ except pywikibot.PageNotSaved, e:
+ pywikibot.output(u"Page not saved")
+
def main(*args):
global interactive, afterpage
interactive = 0