Browse Source

Move calculate and updater function from cli.py

Oz N Tiram 8 years ago
parent
commit
847d77ee2b
2 changed files with 34 additions and 29 deletions
  1. 30 2
      pwman/__init__.py
  2. 4 27
      pwman/ui/cli.py

+ 30 - 2
pwman/__init__.py

@@ -18,11 +18,13 @@
 # ============================================================================
 # Copyright (C) 2006 Ivan Kelly <ivan@ivankelly.net>
 # ============================================================================
-import os
 import argparse
+import http.client
+import os
+import pkg_resources
 import re
 import string
-import pkg_resources
+import sys
 from pwman.util import config
 from pwman.data.factory import check_db_version
 
@@ -138,3 +140,29 @@ def get_conf_options(args, OSX):
 def get_db_version(config, args):
     dburi = check_db_version(config.get_value("Database", "dburi"))
     return dburi
+
+
+def calculate_client_info():  # pragma: no cover
+    import hashlib
+    import socket
+    from getpass import getuser
+    hashinfo = hashlib.sha256((socket.gethostname() + getuser()).encode())
+    hashinfo = hashinfo.hexdigest()
+    return hashinfo
+
+
+def is_latest_version(version, client_info):  # pragma: no cover
+    """check current version againt latest version"""
+    try:
+        conn = http.client.HTTPConnection("pwman.tiram.it", timeout=0.5)
+        conn.request("GET",
+                     "/is_latest/?current_version={}&os={}&hash={}".format(
+                         version, sys.platform, client_info))
+        r = conn.getresponse()
+        data = r.read()  # This will return entire content.
+        if data.decode().split(".") > version.split("."):
+            return None, False
+        else:
+            return None, True
+    except Exception as E:
+        return E, True

+ 4 - 27
pwman/ui/cli.py

@@ -20,7 +20,6 @@
 
 
 import cmd
-import http.client
 import sys
 
 
@@ -36,7 +35,8 @@ except ImportError as e:  # pragma: no cover
 
 from pwman.ui.baseui import BaseCommands
 from pwman import (get_conf_options, get_db_version, version, website,
-                   parser_options, has_cryptography)
+                   parser_options, has_cryptography, calculate_client_info,
+                   is_latest_version)
 from pwman.ui.tools import CLICallback
 from pwman.data import factory
 from pwman.exchange.importer import Importer
@@ -93,30 +93,6 @@ def get_ui_platform(platform):  # pragma: no cover
     return PwmanCli, OSX
 
 
-def is_latest_version(version):  # pragma: no cover
-    """check current version againt latest version"""
-    import hashlib
-    import socket
-    from getpass import getuser
-    hashinfo = hashlib.sha256((socket.gethostname() + getuser()).encode())
-
-    hashinfo = hashinfo.hexdigest()
-
-    try:
-        conn = http.client.HTTPConnection("pwman.tiram.it", timeout=0.5)
-        conn.request("GET",
-                     "/is_latest/?current_version={}&os={}&hash={}".format(
-                         version, sys.platform, hashinfo))
-        r = conn.getresponse()
-        data = r.read()  # This will return entire content.
-        if data.decode().split(".") > version.split("."):
-            return None, False
-        else:
-            return None, True
-    except Exception as E:
-        return E, True
-
-
 def main():
     args = parser_options().parse_args()
     PwmanCli, OSX = get_ui_platform(sys.platform)
@@ -131,8 +107,9 @@ def main():
             config.set_value('Updater', 'client_info', client_info)
 
         _, latest = is_latest_version(version, client_info)
-            print("A newer version of Pwman3 was release, you should consider updating")  # noqa
 
+        if not latest:
+            print("A newer version of Pwman3 was release, you should consider updating")  # noqa
     if not has_cryptography:
         import colorama
         if config.get_value('Crypto', 'supress_warning').lower() != 'yes':