summaryrefslogtreecommitdiff
path: root/plugins/python/welcome/version.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/python/welcome/version.py')
-rw-r--r--plugins/python/welcome/version.py107
1 files changed, 107 insertions, 0 deletions
diff --git a/plugins/python/welcome/version.py b/plugins/python/welcome/version.py
new file mode 100644
index 0000000..37ba001
--- /dev/null
+++ b/plugins/python/welcome/version.py
@@ -0,0 +1,107 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+from welcome.board import SmallBoard
+from gi.repository import Gtk
+import pychrysalide
+
+try:
+ import urllib3
+ has_urllib3 = True
+except:
+ has_urllib3 = False
+
+
+class VersionChecker(SmallBoard):
+ """Affichage des versions courante et disponible, ainsi que des conclusions associées."""
+
+
+ def __init__(self):
+ """Construit le panneau avec son contenu."""
+
+ super(VersionChecker, self).__init__()
+
+ current = pychrysalide.revision()
+
+ if has_urllib3:
+
+ lastest = self.get_lastest_version('community')
+ up2date = self.get_update_status(current, lastest)
+
+ if lastest != None and up2date != None:
+
+ msg = '''Your version is: <b>%s</b>
+
+Lastest version is: <b>%s</b>'''
+
+ caption = msg % (current, lastest if lastest != None else 'unknown')
+
+ if up2date:
+ caption = caption + '''
+
+Your software is <span color='green'><b>up-to-date</b></span>.'''
+ else:
+ caption = caption + '''
+
+Your software is <b><span color='red'>outdated</span></b>.'''
+
+ else:
+
+ msg = '''Your version is: <b>%s</b>
+
+An error occurred while dealing with revision numbers.'''
+
+ caption = msg % current
+
+ else:
+
+ msg = '''Your version is: <b>%s</b>
+
+To display the lastest available version, please install the <b>urllib3</b> package for Python.'''
+
+ caption = msg % current
+
+ desc = Gtk.Label(caption, use_markup=True, wrap=True)
+ desc.set_track_visited_links(False)
+ self.add(desc)
+
+
+ def get_lastest_version(self, category):
+ """Retrouve la dernière version disponible à partir du site officiel."""
+
+ lastest = None
+
+ http = urllib3.PoolManager()
+ request = http.request('GET', 'http://localhost/mediawiki/data/versions')
+
+ html = request.data.decode('utf-8')
+
+ request.release_conn()
+
+ available = html.split('\n')
+
+ for a in available:
+ desc = a.split('=')
+ if desc[0] == category:
+ lastest = desc[1]
+ break
+
+ return lastest
+
+
+ def get_update_status(self, current, lastest):
+ """Détermine le degré de mise à jour du système."""
+
+ if current[0] != 'r' or lastest[0] != 'r':
+ return None
+
+ cur_rev = int(current[1:])
+ last_rev = int(lastest[1:])
+
+ return (cur_rev >= last_rev)
+
+
+ def get_location(self):
+ """Fournit la localisation souhaitée pour la plache."""
+
+ return [ 2, 0, 1, 1 ]