matej_suchanek created this task.
matej_suchanek triaged this task as "High" priority.
matej_suchanek added a project: Pywikibot.
Restricted Application added subscribers: pywikibot-bugs-list, Aklapper.
TASK DESCRIPTION
Demonstrated on `listpages.py`.
name=scripts/listpages.py
page_target.text = text
page_target.save(summary=summary)
- `Page.text.setter` updates the `Page._text` attribute with the new content
- `Page.save` calls `Page._save` internally
- `Page._save` calls `Page._cosmetic_changes_hook`
- `Page._cosmetic_changes_hook` calls `Page.content_model` (new after
rPWBC94a3f39a038a87e7516e55a253423609694d5342
<https://phabricator.wikimedia.org/rPWBC94a3f39a038a87e7516e55a253423609694d5342>)
- `Page.content_model` cannot use cached information because it hasn't been
loaded yet (when `-overwrite` is used), so it calls `APISite.loadpageinfo` ->
`APISite._update_page` -> `pywikibot.data.api.update_page`
- `pywikibot.data.api.update_page` does `del page.text` which unconditionally
deletes `Page._text` (the text saved in `page_target.text = text`)
The last step is the problem: `APISite.loadpageinfo` deletes the useful
content.
Workarounds:
- (for users) disable cosmetic changes
- (for developers) always completely initialize the page object before
updating its content
Quick fix: revert rPWBC94a3f39a038a87e7516e55a253423609694d5342
<https://phabricator.wikimedia.org/rPWBC94a3f39a038a87e7516e55a253423609694d5342>
(or just remove the `content_model` check).
TASK DETAIL
https://phabricator.wikimedia.org/T260472
EMAIL PREFERENCES
https://phabricator.wikimedia.org/settings/panel/emailpreferences/
To: matej_suchanek
Cc: Xqt, Aklapper, matej_suchanek, pywikibot-bugs-list, JohnsonLee01, SHEKH,
Dijkstra, Khutuck, Zkhalido, Viztor, Wenyi, Tbscho, MayS, Mdupont, JJMC89,
Dvorapa, Altostratus, Avicennasis, mys_721tx, jayvdb, Masti, Alchimista, Rxy
_______________________________________________
pywikibot-bugs mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-bugs