diff --git a/couchpotato/core/_base/_core/main.py b/couchpotato/core/_base/_core/main.py index b22f9ba..81ed944 100644 --- a/couchpotato/core/_base/_core/main.py +++ b/couchpotato/core/_base/_core/main.py @@ -8,6 +8,7 @@ from couchpotato.environment import Env from flask import request from uuid import uuid4 import os +import platform import time import traceback import webbrowser @@ -32,12 +33,16 @@ class Core(Plugin): addApiView('app.available', self.available, docs = { 'desc': 'Check if app available.' }) + addApiView('app.version', self.versionView, docs = { + 'desc': 'Get version.' + }) addEvent('app.crappy_shutdown', self.crappyShutdown) addEvent('app.crappy_restart', self.crappyRestart) addEvent('app.load', self.launchBrowser, priority = 1) addEvent('app.base_url', self.createBaseUrl) addEvent('app.api_url', self.createApiUrl) + addEvent('app.version', self.version) addEvent('setting.save.core.password', self.md5Password) addEvent('setting.save.core.api_key', self.checkApikey) @@ -161,3 +166,17 @@ class Core(Plugin): def createApiUrl(self): return '%s/%s' % (self.createBaseUrl(), Env.setting('api_key')) + + def version(self): + ver = fireEvent('updater.info', single = True) + + if os.name == 'nt': platf = 'windows' + elif 'Darwin' in platform.platform(): platf = 'osx' + else: platf = 'linux' + + return '%s - %s-%s - v2' % (platf, ver.get('version')['type'], ver.get('version')['hash']) + + def versionView(self): + return jsonified({ + 'version': self.version() + }) diff --git a/couchpotato/core/_base/updater/main.py b/couchpotato/core/_base/updater/main.py index 9721012..fdd306c 100644 --- a/couchpotato/core/_base/updater/main.py +++ b/couchpotato/core/_base/updater/main.py @@ -28,6 +28,7 @@ class Updater(Plugin): fireEvent('schedule.interval', 'updater.check', self.check, hours = 6) addEvent('app.load', self.check) + addEvent('updater.info', self.info) addApiView('updater.info', self.getInfo, docs = { 'desc': 'Get updater information', @@ -57,6 +58,9 @@ class Updater(Plugin): if self.conf('notification'): fireEvent('updater.available', message = 'A new update is available', data = self.updater.getVersion()) + def info(self): + return self.updater.info() + def getInfo(self): return jsonified(self.updater.info()) @@ -161,6 +165,7 @@ class GitUpdater(BaseUpdater): self.version = { 'hash': output.hash[:8], 'date': output.getDate(), + 'type': 'git', } except Exception, e: log.error('Failed using GIT updater, running from source, you need to have GIT installed. %s' % e) @@ -320,6 +325,7 @@ class SourceUpdater(BaseUpdater): return { 'hash': commit['sha'], 'date': int(time.mktime(parse(commit['commit']['committer']['date']).timetuple())), + 'type': 'source', } except: log.error('Failed getting latest request from github: %s' % traceback.format_exc())