Revision: 7541
Author:   xqt
Date:     2009-10-26 07:20:46 +0000 (Mon, 26 Oct 2009)

Log Message:
-----------
merged with test.py

Modified Paths:
--------------
    trunk/pywikipedia/login.py

Modified: trunk/pywikipedia/login.py
===================================================================
--- trunk/pywikipedia/login.py  2009-10-25 13:39:52 UTC (rev 7540)
+++ trunk/pywikipedia/login.py  2009-10-26 07:20:46 UTC (rev 7541)
@@ -27,9 +27,11 @@
 
    -force       Ignores if the user is already logged in, and tries to log in.
 
+   -test        test whether you are logged-in
+
    -v -v        Shows http requests made when logging in. This might leak
-    (doubly     private data (password, session id), so make sure to check the
-     verbose)   output. Using -log is recommended: this will output a lot of 
+   (doubly      private data (password, session id), so make sure to check the
+       verbose) output. Using -log is recommended: this will output a lot of 
                 data
 
 If not given as parameter, the script will ask for your username and password
@@ -37,8 +39,8 @@
 combination, and store the resulting cookies (containing your password hash,
 so keep it secured!) in a file in the login-data subdirectory.
 
-All scripts in this library will be looking for this cookie file and will use 
the
-login information if it is present.
+All scripts in this library will be looking for this cookie file and will use
+the login information if it is present.
 
 To log out, throw away the XX-login.data file that is created in the login-data
 subdirectory.
@@ -68,6 +70,11 @@
     }
 }
 
+def show (mysite, sysop = False):
+    if mysite.loggedInAs(sysop = sysop):
+        wikipedia.output(u"You are logged in on %s as %s." % (repr(mysite), 
mysite.loggedInAs(sysop=sysop)))
+    else:
+        wikipedia.output(u"You are not logged in on %s." % repr(mysite))
 
 class LoginManager:
     def __init__(self, password = None, sysop = False, site = None, 
username=None, verbose=False):
@@ -316,6 +323,7 @@
     forceLogin = False
     verbose = False
     cleanAll = clean = False
+    testonly = False
 
     for arg in wikipedia.handleArgs():
         if arg.startswith("-pass"):
@@ -331,13 +339,15 @@
             logall = True
         elif arg == "-force":
             forceLogin = True
+        elif arg == "-test":
+            testonly = True
         else:
             wikipedia.showHelp('login')
             return
     
     if wikipedia.verbose > 1:
-      wikipedia.output(u"WARNING: Using -v -v on login.py might leak private 
data. When sharing, please double check your password is not readable and log 
out your bots session.")
-      verbose = True # only use this verbose when running from login.py
+        wikipedia.output(u"WARNING: Using -v -v on login.py might leak private 
data. When sharing, please double check your password is not readable and log 
out your bots session.")
+        verbose = True # only use this verbose when running from login.py
     if logall:
         if sysop:
             namedict = config.sysopnames
@@ -346,32 +356,36 @@
 
         for familyName in namedict.iterkeys():
             for lang in namedict[familyName].iterkeys():
-                try:
-                    site = wikipedia.getSite(lang, familyName)
-                    loginMan = LoginManager(password, sysop = sysop, site = 
site, verbose=verbose)
-                    if clean:
-                        if 
os.path.exists(wikipedia.config.datafilepath('login-data',
-                          '%s-%s-%s-login.data' % (familyName, lang, 
namedict[familyName][lang]))):
-                            loginMan.logout()
-                    else:
-                        if not forceLogin and site.loggedInAs(sysop = sysop):
-                            wikipedia.output(u'Already logged in on %s' % site)
+                if testonly:
+                    show(wikipedia.getSite(lang, familyName), sysop)
+                else:
+                    try:
+                        site = wikipedia.getSite(lang, familyName)
+                        loginMan = LoginManager(password, sysop = sysop, site 
= site, verbose=verbose)
+                        if clean:
+                            if 
os.path.exists(wikipedia.config.datafilepath('login-data',
+                              '%s-%s-%s-login.data' % (familyName, lang, 
namedict[familyName][lang]))):
+                                loginMan.logout()
                         else:
-                            loginMan.login()
-                except wikipedia.NoSuchSite:
-                    wikipedia.output(lang+ u'.' + familyName + u' is not a 
valid site, please remove it from your config')
+                            if not forceLogin and site.loggedInAs(sysop = 
sysop):
+                                wikipedia.output(u'Already logged in on %s' % 
site)
+                            else:
+                                loginMan.login()
+                    except wikipedia.NoSuchSite:
+                        wikipedia.output(lang+ u'.' + familyName + u' is not a 
valid site, please remove it from your config')
 
+    elif testonly:
+        show(wikipedia.getSite(), sysop)
+    elif clean:
+        try:
+            site = wikipedia.getSite()
+            lgm = LoginManager(site = site)
+            lgm.logout()
+        except wikipedia.NoSuchSite:
+            pass
     else:
-        if clean:
-            try:
-                site = wikipedia.getSite()
-                lgm = LoginManager(site = site)
-                lgm.logout()
-            except wikipedia.NoSuchSite:
-                pass
-        else:
-            loginMan = LoginManager(password, sysop = sysop, verbose=verbose)
-            loginMan.login()
+        loginMan = LoginManager(password, sysop = sysop, verbose=verbose)
+        loginMan.login()
 
 if __name__ == "__main__":
     try:



_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn

Reply via email to