jayvdb created this task.
jayvdb added a subscriber: jayvdb.
jayvdb added a project: pywikibot-core.
Restricted Application added subscribers: Aklapper, pywikipedia-bugs.
TASK DESCRIPTION
With a sysopname set for test:test, canBeEdited() returns True, but editing the page
does not work unless the sysop account is explicitly logged in.
```
$ python3 pwb.py shell
Welcome to the Pywikibot interactive shell!
>> import pywikibot
>> s = pywikibot.Site('test', 'test')
>> p = pywikibot.Page(s, 'User:John Vandenberg/test protected')
>> p.canBeEdited()
True
>> p.text = 'Testing 1 2 3'
>> p.save()
Logging in to test:test as JVbot
Traceback (most recent call last):
File "pywikibot/site.py", line 4163, in editpage
result = req.submit()
File "pywikibot/data/api.py", line 1734, in submit
raise APIError(**result['error'])
pywikibot.data.api.APIError: protectedpage: The "editprotected" right is
required to edit this page
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.4/code.py", line 90, in runcode
exec(code, self.locals)
File "<console>", line 1, in <module>
File "pywikibot/tools/__init__.py", line 949, in wrapper
return obj(*__args, **__kw)
File "pywikibot/page.py", line 1051, in save
**kwargs)
File "pywikibot/page.py", line 1075, in _save
raise err
File "pywikibot/page.py", line 1062, in _save
watch=watchval, bot=botflag, **kwargs)
File "pywikibot/site.py", line 1075, in callee
return fn(self, *args, **kwargs)
File "pywikibot/site.py", line 4183, in editpage
raise self._ep_errors[err.code](page)
pywikibot.exceptions.LockedPage: Page [[test:User:John Vandenberg/test protected]] is
locked.
```
None of these callers explicitly login as sysop, and two dont catch the error.
```
$ git grep canBeEdited
pywikibot/page.py: def canBeEdited(self):
pywikibot/page.py: if not self.canBeEdited():
scripts/blockpageschecker.py: # if not page.canBeEdited():
scripts/blockpageschecker.py: if not page.canBeEdited():
scripts/reflinks.py: if not page.canBeEdited():
scripts/replace.py: if not page.canBeEdited():
scripts/upload.py: if potential_file_page.canBeEdited():
$ grep login scripts/blockpageschecker.py scripts/reflinks.py scripts/replace.py
scripts/upload.py
scripts/replace.py: site.login()
scripts/upload.py: self.targetSite.login()
$ grep LockedPage scripts/blockpageschecker.py scripts/reflinks.py scripts/replace.py
scripts/upload.py
scripts/blockpageschecker.py: except pywikibot.LockedPage:
scripts/replace.py: except pywikibot.LockedPage:
```
TASK DETAIL
https://phabricator.wikimedia.org/T98659
EMAIL PREFERENCES
https://phabricator.wikimedia.org/settings/panel/emailpreferences/
To: jayvdb
Cc: pywikipedia-bugs, jayvdb, Aklapper