jenkins-bot has submitted this change and it was merged.

Change subject: Bug 58944 - site.mediawiki_message: support multiple messages
......................................................................


Bug 58944 - site.mediawiki_message: support multiple messages

Added site.mediawiki_messages() added to handle request of several messages.

https://bugzilla.wikimedia.org/show_bug.cgi?id=58944

Change-Id: I64710f67c04a0d2b93c70d9edd472f8bab4ce309
---
M pywikibot/site.py
M tests/site_tests.py
2 files changed, 42 insertions(+), 14 deletions(-)

Approvals:
  Mpaa: Looks good to me, but someone else must approve
  Xqt: Looks good to me, approved
  Merlijn van Deen: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/pywikibot/site.py b/pywikibot/site.py
index a090d04..d51ae54 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -997,24 +997,42 @@
             self.login(sysop)
         return 'hasmsg' in self._userinfo
 
+    def mediawiki_messages(self, keys):
+        """Return the MediaWiki message text for each 'key' in keys
+           in a dict:
+           -. dict['key'] = text message
+
+        """
+
+        if not all(_key in self._msgcache for _key in keys):
+            msg_query = api.QueryGenerator(
+                site=self,
+                meta="allmessages",
+                ammessages='|'.join(keys),
+            )
+            for _key in keys:
+                for msg in msg_query:
+                    if msg['name'] == _key and not 'missing' in msg:
+                        self._msgcache[_key] = msg['*']
+                        break
+                else:
+                    raise KeyError("Site %(self)s has no message '%(_key)s'"
+                                   % locals())
+
+        return dict((_key, self._msgcache[_key]) for _key in keys)
+
     def mediawiki_message(self, key):
-        """Return the MediaWiki message text for key "key" """
-        if not key in self._msgcache:
-            msg_query = api.QueryGenerator(site=self, meta="allmessages",
-                                           ammessages=key)
-            for msg in msg_query:
-                if msg['name'] == key and not 'missing' in msg:
-                    self._msgcache[key] = msg['*']
-                    break
-            else:
-                raise KeyError("Site %(self)s has no message '%(key)s'"
-                               % locals())
-        return self._msgcache[key]
+        """Return the MediaWiki message text for key 'key' """
+        return self.mediawiki_messages([key])[key]
 
     def has_mediawiki_message(self, key):
-        """Return True iff this site defines a MediaWiki message for 'key'."""
+        """Return True if this site defines a MediaWiki message for 'key' """
+        return self.has_all_mediawiki_messages([key])
+
+    def has_all_mediawiki_messages(self, keys):
+        """Return True if this site defines MediaWiki messages for all 'keys'; 
False otherwise."""
         try:
-            v = self.mediawiki_message(key)
+            v = self.mediawiki_messages(keys)
             return True
         except KeyError:
             return False
diff --git a/tests/site_tests.py b/tests/site_tests.py
index ce7b930..ee86e70 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -144,12 +144,22 @@
         except pywikibot.NoUsername:
             pywikibot.warning(
                 "Cannot test Site methods for sysop; no sysop account 
configured.")
+
         for msg in ("1movedto2", "about", "aboutpage", "aboutsite",
                     "accesskey-n-portal"):
             self.assertTrue(mysite.has_mediawiki_message(msg))
             self.assertType(mysite.mediawiki_message(msg), basestring)
         self.assertFalse(mysite.has_mediawiki_message("nosuchmessage"))
         self.assertRaises(KeyError, mysite.mediawiki_message, "nosuchmessage")
+
+        msg = ("1movedto2", "about", "aboutpage")
+        self.assertType(mysite.mediawiki_messages(msg), dict)
+        self.assertTrue(mysite.mediawiki_messages(msg))
+
+        msg = ("1movedto2", "about", "aboutpage", "nosuchmessage")
+        self.assertFalse(mysite.has_all_mediawiki_messages(msg))
+        self.assertRaises(KeyError, mysite.mediawiki_messages, msg)
+
         self.assertType(mysite.getcurrenttimestamp(), basestring)
         self.assertType(mysite.siteinfo, dict)
         self.assertType(mysite.case(), basestring)

-- 
To view, visit https://gerrit.wikimedia.org/r/104211
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I64710f67c04a0d2b93c70d9edd472f8bab4ce309
Gerrit-PatchSet: 8
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Mpaa <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Merlijn van Deen <[email protected]>
Gerrit-Reviewer: Mpaa <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to