jenkins-bot merged this change.

View Change

Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
CategorizedPageGenerator: Use startprefix parameter of category.articles

The previous method of passing `start` to `startsort` was wrong. It does not
work as expected because `startsort` needs to be a binary string.[1]

For older versions of MediaWiki implement a workaround by iterating over
all category.articles. This is inefficient, but no better way found.

Remove `kwargs['sortby'] = 'sortkey'`, 'sortkey' is API's default.

[1]: https://www.mediawiki.org/wiki/API:Categorymembers

Bug: T74101
Bug: T143120
Change-Id: I7eece66e258659f84479fbdd1094a8df9ee69479
---
M pywikibot/pagegenerators.py
1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index e503671..9071e1a 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -56,6 +56,7 @@
)
from pywikibot.logentries import LogEntryFactory
from pywikibot.proofreadpage import ProofreadPage
+from pywikibot.tools import MediaWikiVersion

if sys.version_info[0] > 2:
basestring = (str, )
@@ -1386,8 +1387,17 @@
'content': content, 'namespaces': namespaces,
}
if start:
- kwargs['sortby'] = 'sortkey'
- kwargs['startsort'] = start
+ if category.site.version() < MediaWikiVersion('1.18'):
+ kwargs.pop('total', None)
+ count = 0
+ for article in category.articles(**kwargs):
+ if article.title() >= start:
+ count += 1
+ yield article
+ if count == total:
+ return
+ return
+ kwargs['startprefix'] = start
for a in category.articles(**kwargs):
yield a

To view, visit change 428148. To unsubscribe, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I7eece66e258659f84479fbdd1094a8df9ee69479
Gerrit-Change-Number: 428148
Gerrit-PatchSet: 6
Gerrit-Owner: Dalba <dalba.wiki@gmail.com>
Gerrit-Reviewer: Dalba <dalba.wiki@gmail.com>
Gerrit-Reviewer: John Vandenberg <jayvdb@gmail.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: Zoranzoki21 <zorandori4444@gmail.com>
Gerrit-Reviewer: jenkins-bot <>