jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/721297 )

Change subject: [IMPR] Provide -create and -createonly options with add_text
......................................................................

[IMPR] Provide -create and -createonly options with add_text

https://www.mediawiki.org/wiki/Topic:Wgdnu8bl29esui34

Also fix type hints

Bug: T291354
Change-Id: Ib77d7ab94285ae74c37da000d63b72e8a92d3d3f
---
M pywikibot/bot.py
M scripts/add_text.py
2 files changed, 32 insertions(+), 14 deletions(-)

Approvals:
  Inductiveload: Looks good to me, but someone else must approve
  Xqt: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pywikibot/bot.py b/pywikibot/bot.py
index 3197e60..c50d36c 100644
--- a/pywikibot/bot.py
+++ b/pywikibot/bot.py
@@ -1895,7 +1895,8 @@
     parameters for the translated message.
     """

-    summary_key = None  # must be defined in subclasses
+    #: Must be defined in subclasses.
+    summary_key = None  # type: Optional[str]

     @property
     def summary_parameters(self) -> Dict[str, str]:
diff --git a/scripts/add_text.py b/scripts/add_text.py
index 63cdfd7..d664adb 100755
--- a/scripts/add_text.py
+++ b/scripts/add_text.py
@@ -18,6 +18,11 @@

 -up               If used, put the text at the top of the page

+-create           Create the page if necessary. Note that talk pages are
+                  created already without of this option.
+
+-createonly       Only create the page but do not edit existing ones
+
 -always           If used, the bot won't ask if it should add the specified
                   text

@@ -88,6 +93,8 @@
     'textfile': '',
     'summary': '',
     'up': False,
+    'create': False,
+    'createonly': False,
     'always': False,
     'minor': True,
     'talk_page': False,
@@ -109,7 +116,7 @@
 @deprecated('Page.text, NoRedirectPageBot class and BaseBot.skip_page() '
             '(see add_text.AddTextBot for example)', since='6.4.0')
 def get_text(page: pywikibot.page.BasePage, old: Optional[str],
-             create: bool) -> str:
+             create: bool) -> Optional[str]:
     """
     Get text on page. If old is not None, return old.

@@ -336,20 +343,30 @@

     def skip_page(self, page):
         """Skip if -exceptUrl matches or page does not exists."""
-        if page.exists() and self.opt.regex_skip_url:
-            url = page.full_url()
-            result = re.findall(self.opt.regex_skip_url, page.site.getUrl(url))
-
-            if result:
-                pywikibot.warning(
-                    'Skipping {page} because -excepturl matches {result}.'
-                    .format(page=page, result=result))
+        if page.exists():
+            if self.opt.createonly:
+                pywikibot.warning('Skipping because {page} already exists'
+                                  .format(page=page))
                 return True

-        if page.isTalkPage() and not page.exists():
+            if self.opt.regex_skip_url:
+                url = page.full_url()
+                result = re.findall(self.opt.regex_skip_url,
+                                    page.site.getUrl(url))
+
+                if result:
+                    pywikibot.warning(
+                        'Skipping {page} because -excepturl matches {result}.'
+                        .format(page=page, result=result))
+                    return True
+
+        elif page.isTalkPage():
             pywikibot.output("{} doesn't exist, creating it!".format(page))
             return False

+        elif self.opt.create:
+            return False
+
         return super().skip_page(page)

     def treat_page(self):
@@ -367,7 +384,7 @@
         self.put_current(text, summary=self.opt.summary, minor=self.opt.minor)


-def main(*argv: Tuple[str, ...]) -> None:
+def main(*argv: str) -> None:
     """
     Process command line arguments and invoke bot.

@@ -393,7 +410,7 @@

 def parse(argv: Tuple[str, ...],
           generator_factory: pagegenerators.GeneratorFactory
-          ) -> Dict[str, str]:
+          ) -> Dict[str, Union[bool, str]]:
     """
     Parses our arguments and provide a named tuple with their values.

@@ -414,7 +431,7 @@

         if option in ('-text', '-textfile', '-summary'):
             args[option[1:]] = value
-        elif option in ('-up', '-always'):
+        elif option in ('-up', '-always', '-create', 'createonly'):
             args[option[1:]] = True
         elif option in ('-talk', '-talkpage'):
             args['talk_page'] = True

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

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

Reply via email to