Mjbmr has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/189433

Change subject: Caching password, allow switching logged in user to/from sysop
......................................................................

Caching password, allow switching logged in user to/from sysop

Change-Id: I730aabd23ac6061de6dd065b840fa8cec1e41802
---
M pywikibot/site.py
1 file changed, 12 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/33/189433/1

diff --git a/pywikibot/site.py b/pywikibot/site.py
index 2a347bb..6381736 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -1513,6 +1513,7 @@
         self._siteinfo = Siteinfo(self)
         self._paraminfo = api.ParamInfo(self)
         self.tokens = TokenWallet(self)
+        self._passwords = {}
 
     def __getstate__(self):
         """Remove TokenWallet before pickling, for security reasons."""
@@ -1661,13 +1662,22 @@
                 return
         except api.APIError:  # May occur if you are not logged in (no API 
read permissions).
             pass
-        loginMan = api.LoginManager(site=self, sysop=sysop,
-                                    user=self._username[sysop])
+        password = None
+        if self._username[sysop] in self._passwords:
+            password = self._passwords[self._username[sysop]]
+        loginMan = api.LoginManager(site=self, password=password,
+                       sysop=sysop, user=self._username[sysop])
         if loginMan.login(retry=True):
+            self._passwords[loginMan.username] = loginMan.password
             self._username[sysop] = loginMan.username
             if hasattr(self, "_userinfo"):
                 del self._userinfo
             self.getuserinfo()
+            if sysop:
+                self._username[not sysop] = loginMan.username
+            else:
+                if 'sysop' not in self.userinfo['groups']:
+                    self._username[not sysop] = loginMan.username
             self._loginstatus = (LoginStatus.AS_SYSOP
                                  if sysop else LoginStatus.AS_USER)
         else:

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I730aabd23ac6061de6dd065b840fa8cec1e41802
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Mjbmr <[email protected]>

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

Reply via email to