Xqt has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1264660?usp=email )

Change subject: refactor APISite.delete's deletetalk for MW < 1.38
......................................................................

refactor APISite.delete's deletetalk for MW < 1.38

- raise TypeError if page is not a BasePage
- delete the talk page after the subject page to ensure
  that subject page deletion is successful before deleting its talk page.
- warn if page is a talk page
- warn if the talk page does not exist

Follow-up to I66dd198ea78c33dc8964214a3ff7c7ba187ba77f

Change-Id: I48a7b5180e9525b056d258ef9969b27b91024521
---
M pywikibot/site/_apisite.py
1 file changed, 21 insertions(+), 10 deletions(-)

Approvals:
  Xqt: Verified; Looks good to me, approved




diff --git a/pywikibot/site/_apisite.py b/pywikibot/site/_apisite.py
index c0dc457..7b483a6 100644
--- a/pywikibot/site/_apisite.py
+++ b/pywikibot/site/_apisite.py
@@ -2690,17 +2690,15 @@
         else:
             params['pageid'] = int(page)
             title = str(page)
+            if deletetalk and self.mw_version < '1.38':
+                raise TypeError(
+                    "'page' must be a BasePage not a "
+                    f"'{page.__class__.__name__}' when "
+                    'deletetalk=True.'
+                )

-        if deletetalk:
-            if self.mw_version < '1.38wmf24':
-                if not page.isTalkPage():
-                    talk_page = page.toggleTalkPage()
-                    talk_page.delete(reason=reason, prompt=False)
-                else:
-                    raise ValueError('Cannot use "deletetalk" when deleting '
-                                     'a talk page.')
-            else:
-                params['deletetalk'] = deletetalk
+        if self.mw_version >= '1.38':
+            params['deletetalk'] = deletetalk
 
         req = self.simple_request(**params)
         self.lock_page(page)
@@ -2729,6 +2727,19 @@
         finally:
             self.unlock_page(page)

+        if deletetalk and self.mw_version < '1.38':
+            talk_page = page.toggleTalkPage()
+            if page.isTalkPage():
+                pywikibot.warning(
+                    'Cannot delete associated talk page of a talk page.'
+                )
+            elif not talk_page.exists():
+                pywikibot.warning(
+                    'Cannot delete a non-existing associated talk page.'
+                )
+            else:
+                self.delete(talk_page, reason)
+
     @need_right('undelete')
     def undelete(
         self,

--
To view, visit 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1264660?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I48a7b5180e9525b056d258ef9969b27b91024521
Gerrit-Change-Number: 1264660
Gerrit-PatchSet: 6
Gerrit-Owner: JJMC89 <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to