Add filter options to redfam.article_generator

To give the posibility to filter not existing pages or redirect pages or
vice versa.

Related Task: [https://fs.golderweb.de/index.php?do=details&task_id=87 FS#87]
This commit is contained in:
2016-08-28 15:06:17 +02:00
parent e5989305a4
commit c0b18f88e5

View File

@@ -458,14 +458,41 @@ class RedFamWorker( RedFam ):
# with wrong month abreviations in strptime # with wrong month abreviations in strptime
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8') locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')
def article_generator(self): def article_generator(self, filter_existing=None, filter_redirects=None ):
""" """
Yields pywikibot pageobjects for articles belonging to this redfams Yields pywikibot pageobjects for articles belonging to this redfams
in a generator in a generator
self. self.
@param filter_existing Set to True to only get existing pages
set to False to only get nonexisting pages
unset/None results in not filtering
@type filter_existing bool/None
@param filter_redirects Set to True to get only noredirectpages,
set to False to get only redirectpages,
unset/None results in not filtering
@type filter_redirects bool/None
""" """
# Iterate over articles in redfam
for article in self._articlesList: for article in self._articlesList:
yield pywikibot.Page(pywikibot.Link(article), self.site) page = pywikibot.Page(pywikibot.Link(article), self.site)
# Filter non existing Pages if requested with filter_existing=True
if filter_existing and not page.exists():
continue
# Filter existing pages if requested with filter_existing=False
elif filter_existing is False and page.exists():
continue
# Filter redirects if requested with filter_redirects=True
if filter_redirects and page.isRedirectPage():
continue
# Filter noredirects if requested with filter_redirects=False
elif filter_redirects is False and not page.isRedirectPage():
continue
# Yield filtered pages
yield page
def update_status( self ): def update_status( self ):
""" """