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

Change subject: login: add logout option and hidden password note
......................................................................


login: add logout option and hidden password note

- scripts/login.py now has the -logout option to log out
- when asking for a password, pywikibot/login.py will note no characters
  will be shown

Change-Id: If25cb90bfdde8fac0ed6ad8a0c224e5f7e811fcb
---
M pywikibot/login.py
M pywikibot/site.py
M scripts/login.py
3 files changed, 29 insertions(+), 6 deletions(-)

Approvals:
  Merlijn van Deen: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pywikibot/login.py b/pywikibot/login.py
index 49cebaa..872ad68 100644
--- a/pywikibot/login.py
+++ b/pywikibot/login.py
@@ -161,10 +161,9 @@
             # As we don't want the password to appear on the screen, we set
             # password = True
             self.password = pywikibot.input(
-                u'Password for user %(name)s on %(site)s:'
+                u'Password for user %(name)s on %(site)s (no characters will 
be shown):'
                 % {'name': self.username, 'site': self.site},
                 password=True)
-
 #        self.password = self.password.encode(self.site.encoding())
 
         pywikibot.output(u"Logging in to %(site)s as %(name)s"
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 13477b0..52d97fe 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -883,6 +883,14 @@
 
     forceLogin = login  # alias for backward-compatibility
 
+    def logout(self):
+        uirequest = api.Request(site=self, action="logout")
+        uidata = uirequest.submit()
+        self._loginstatus = LoginStatus.NOT_LOGGED_IN
+        if hasattr(self, "_userinfo"):
+            del self._userinfo
+        self.getuserinfo()
+
     def getuserinfo(self):
         """Retrieve userinfo from site and store in _userinfo attribute.
 
diff --git a/scripts/login.py b/scripts/login.py
index 53638e6..02a4590 100755
--- a/scripts/login.py
+++ b/scripts/login.py
@@ -8,9 +8,17 @@
 
 Parameters:
 
+   -family:FF
+   -lang:LL     Log in to the LL language of the FF family.
+                Example: -family:wiktionary -lang:fr will log you in at
+                fr.wiktionary.org.
+
    -all         Try to log in on all sites where a username is defined in
                 user-config.py.
 
+   -logout      Log out of the curren site. Combine with -all to log out of
+                all sites, or with -family and -lang to log out of a specific
+                site.
 
    -force       Ignores if the user is already logged in, and tries to log in.
 
@@ -57,10 +65,11 @@
     password = None
     sysop = False
     logall = False
+    logout = False
     for arg in pywikibot.handleArgs(*args):
         if arg.startswith("-pass"):
             if len(arg) == 5:
-                password = pywikibot.input(u'Password for all accounts:',
+                password = pywikibot.input(u'Password for all accounts (no 
characters will be shown):',
                                            password=True)
             else:
                 password = arg[6:]
@@ -71,6 +80,8 @@
         elif arg == "-force":
             pywikibot.output(u"To force a re-login, please delete the revelant 
lines from '%s' (or the entire file) and try again." %
                              join(config.base_dir, 'pywikibot.lwp'))
+        elif arg == "-logout":
+            logout = True
         else:
             pywikibot.showHelp('login')
             return
@@ -86,13 +97,18 @@
         for lang in namedict[familyName]:
             try:
                 site = pywikibot.getSite(code=lang, fam=familyName)
-                site.login()
-
+                if logout:
+                    site.logout()
+                else:
+                    site.login()
                 user = site.user()
                 if user:
                     pywikibot.output(u"Logged in on %(site)s as %(user)s." % 
locals())
                 else:
-                    pywikibot.output(u"Not logged in on %(site)s." % locals())
+                    if logout:
+                        pywikibot.output(u"Logged out of %(site)s." % locals())
+                    else:
+                        pywikibot.output(u"Not logged in on %(site)s." % 
locals())
             except NoSuchSite:
                 pywikibot.output(u'%s.%s is not a valid site, please remove it'
                                  u' from your config' % (lang, familyName))

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

Gerrit-MessageType: merged
Gerrit-Change-Id: If25cb90bfdde8fac0ed6ad8a0c224e5f7e811fcb
Gerrit-PatchSet: 12
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Ladsgroup <ladsgr...@gmail.com>
Gerrit-Reviewer: DrTrigon <dr.tri...@surfeu.ch>
Gerrit-Reviewer: Hashar <has...@free.fr>
Gerrit-Reviewer: Ladsgroup <ladsgr...@gmail.com>
Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhall...@arctus.nl>
Gerrit-Reviewer: Multichill <maar...@mdammers.nl>
Gerrit-Reviewer: Xqt <i...@gno.de>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to