jenkins-bot merged this change.
Allow archivebot to archive even restricted pages
The archive templates were recently added to templates which restricts
page to be edited, but it made archivebot not archive at all.
This patch excludes archive templates from restrictions and introduces a
method to filter out archive templates if archivebot is there.
TODO: This patch could be possibly expanded to some form of force
categories like:
page.save(force='always') x 'archive' x None
Change-Id: Iab249fd83f4f071b4694eba8d0b7d977ed22c3f8
---
M pywikibot/families/wikipedia_family.py
M pywikibot/family.py
M pywikibot/page.py
3 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/pywikibot/families/wikipedia_family.py b/pywikibot/families/wikipedia_family.py
index 0960980..b0234f6 100644
--- a/pywikibot/families/wikipedia_family.py
+++ b/pywikibot/families/wikipedia_family.py
@@ -205,11 +205,8 @@
self.edit_restricted_templates = {
'ar': ('تحرر',),
'bs': ('Izmjena u toku',),
- 'cs': ('Pracuje se', 'Archiv', 'Archiv Wikipedie',
- 'Archiv diskuse', 'Archivace start', 'Posloupnost archivů',
- 'Rfa-archiv-start', 'Rfc-archiv-start',),
- 'de': ('Inuse', 'In use', 'In bearbeitung', 'Inbearbeitung',
- 'Archiv',),
+ 'cs': ('Pracuje se',),
+ 'de': ('Inuse', 'In use', 'In bearbeitung', 'Inbearbeitung',),
'en': ('Inuse', 'In use'),
'fa': ('ویرایش',),
'fr': ('En cours', 'Plusieurs en cours', 'Correction en cours',
@@ -220,6 +217,15 @@
'zh': ('Inuse',),
}
+ # Archive templates that indicate an edit of non-archive bots
+ # should be avoided
+ self.archived_page_templates = {
+ 'cs': ('Archiv', 'Archiv Wikipedie', 'Archiv diskuse',
+ 'Archivace start', 'Posloupnost archivů',
+ 'Rfa-archiv-start', 'Rfc-archiv-start',),
+ 'de': ('Archiv',),
+ }
+
def get_known_families(self, site):
"""Override the family interwiki prefixes for each site."""
# In Swedish Wikipedia 's:' is part of page title not a family
diff --git a/pywikibot/family.py b/pywikibot/family.py
index ff18c20..936fbb9 100644
--- a/pywikibot/family.py
+++ b/pywikibot/family.py
@@ -730,6 +730,11 @@
# that indicate an edit should be avoided
self.edit_restricted_templates = {}
+ # A dict of tuples for different sites with names of archive
+ # templates that indicate an edit of non-archive bots
+ # should be avoided
+ self.archived_page_templates = {}
+
# A list of projects that share cross-project sessions.
if not hasattr(self, 'cross_projects'):
self.cross_projects = []
diff --git a/pywikibot/page.py b/pywikibot/page.py
index 91ee48c..6957e70 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -1171,6 +1171,15 @@
# multiple bots/nobots templates are allowed
restrictions = self.site.family.edit_restricted_templates.get(
self.site.code)
+ # also add archive templates for non-archive bots
+ if pywikibot.calledModuleName() != 'archivebot':
+ archived = self.site.family.archived_page_templates.get(
+ self.site.code)
+ if restrictions and archived:
+ restrictions += archived
+ elif archived:
+ restrictions = archived
+
for template, params in templates:
title = template.title(withNamespace=False)
if restrictions:
To view, visit change 428889. To unsubscribe, visit settings.