Always do restart after update. fix #363
This commit is contained in:
@@ -28,7 +28,7 @@ class Updater(Plugin):
|
|||||||
else:
|
else:
|
||||||
self.updater = SourceUpdater()
|
self.updater = SourceUpdater()
|
||||||
|
|
||||||
fireEvent('schedule.interval', 'updater.check', self.check, hours = 6)
|
fireEvent('schedule.interval', 'updater.check', self.autoUpdate, hours = 6)
|
||||||
addEvent('app.load', self.check)
|
addEvent('app.load', self.check)
|
||||||
addEvent('updater.info', self.info)
|
addEvent('updater.info', self.info)
|
||||||
|
|
||||||
@@ -48,17 +48,20 @@ class Updater(Plugin):
|
|||||||
'return': {'type': 'see updater.info'}
|
'return': {'type': 'see updater.info'}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def autoUpdate(self):
|
||||||
|
if self.check() and self.conf('automatic') and not self.updater.update_failed:
|
||||||
|
self.updater.doUpdate()
|
||||||
|
|
||||||
def check(self):
|
def check(self):
|
||||||
if self.isDisabled():
|
if self.isDisabled():
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.updater.check():
|
if self.updater.check():
|
||||||
if self.conf('automatic') and not self.updater.update_failed:
|
if self.conf('notification') and not self.conf('automatic'):
|
||||||
if self.updater.doUpdate():
|
fireEvent('updater.available', message = 'A new update is available', data = self.updater.info())
|
||||||
fireEventAsync('app.restart')
|
return True
|
||||||
else:
|
|
||||||
if self.conf('notification'):
|
return False
|
||||||
fireEvent('updater.available', message = 'A new update is available', data = self.updater.info())
|
|
||||||
|
|
||||||
def info(self):
|
def info(self):
|
||||||
return self.updater.info()
|
return self.updater.info()
|
||||||
@@ -67,12 +70,22 @@ class Updater(Plugin):
|
|||||||
return jsonified(self.updater.info())
|
return jsonified(self.updater.info())
|
||||||
|
|
||||||
def checkView(self):
|
def checkView(self):
|
||||||
self.check()
|
return jsonified({
|
||||||
return self.updater.getInfo()
|
'update_available': self.check(),
|
||||||
|
'info': self.updater.info()
|
||||||
|
})
|
||||||
|
|
||||||
def doUpdateView(self):
|
def doUpdateView(self):
|
||||||
|
|
||||||
|
self.check()
|
||||||
|
if not self.update_version:
|
||||||
|
log.error('Trying to update when no update is available.')
|
||||||
|
success = False
|
||||||
|
else:
|
||||||
|
success = self.updater.doUpdate()
|
||||||
|
|
||||||
return jsonified({
|
return jsonified({
|
||||||
'success': self.updater.doUpdate()
|
'success': success
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -137,6 +150,7 @@ class GitUpdater(BaseUpdater):
|
|||||||
self.repo = LocalRepository(Env.get('app_dir'), command = git_command)
|
self.repo = LocalRepository(Env.get('app_dir'), command = git_command)
|
||||||
|
|
||||||
def doUpdate(self):
|
def doUpdate(self):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
log.debug('Stashing local changes')
|
log.debug('Stashing local changes')
|
||||||
self.repo.saveStash()
|
self.repo.saveStash()
|
||||||
@@ -152,6 +166,8 @@ class GitUpdater(BaseUpdater):
|
|||||||
version_date = datetime.fromtimestamp(info['update_version']['date'])
|
version_date = datetime.fromtimestamp(info['update_version']['date'])
|
||||||
fireEvent('updater.updated', 'Updated to a new version with hash "%s", this version is from %s' % (info['update_version']['hash'], version_date), data = info)
|
fireEvent('updater.updated', 'Updated to a new version with hash "%s", this version is from %s' % (info['update_version']['hash'], version_date), data = info)
|
||||||
|
|
||||||
|
fireEventAsync('app.restart')
|
||||||
|
|
||||||
return True
|
return True
|
||||||
except:
|
except:
|
||||||
log.error('Failed updating via GIT: %s' % traceback.format_exc())
|
log.error('Failed updating via GIT: %s' % traceback.format_exc())
|
||||||
@@ -243,6 +259,8 @@ class SourceUpdater(BaseUpdater):
|
|||||||
# Write update version to file
|
# Write update version to file
|
||||||
self.createFile(self.version_file, json.dumps(self.update_version))
|
self.createFile(self.version_file, json.dumps(self.update_version))
|
||||||
|
|
||||||
|
fireEventAsync('app.restart')
|
||||||
|
|
||||||
return True
|
return True
|
||||||
except:
|
except:
|
||||||
log.error('Failed updating: %s' % traceback.format_exc())
|
log.error('Failed updating: %s' % traceback.format_exc())
|
||||||
|
|||||||
@@ -16,7 +16,15 @@ var UpdaterBase = new Class({
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
Api.request('updater.check', {
|
Api.request('updater.check', {
|
||||||
'onComplete': onComplete || Function.from()
|
'onComplete': function(json){
|
||||||
|
if(onComplete)
|
||||||
|
onComplete(json);
|
||||||
|
|
||||||
|
if(json.update_available)
|
||||||
|
self.doUpdate();
|
||||||
|
else
|
||||||
|
App.unBlockPage()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
@@ -81,15 +89,19 @@ var UpdaterBase = new Class({
|
|||||||
Api.request('updater.update', {
|
Api.request('updater.update', {
|
||||||
'onComplete': function(json){
|
'onComplete': function(json){
|
||||||
if(json.success){
|
if(json.success){
|
||||||
App.restart('Please wait while CouchPotato is being updated with more awesome stuff.', 'Updating');
|
self.updating();
|
||||||
App.checkAvailable.delay(500, App, [1000, function(){
|
|
||||||
window.location.reload();
|
|
||||||
}]);
|
|
||||||
if(self.message)
|
|
||||||
self.message.destroy();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
updating: function(){
|
||||||
|
App.blockPage('Please wait while CouchPotato is being updated with more awesome stuff.', 'Updating');
|
||||||
|
App.checkAvailable.delay(500, App, [1000, function(){
|
||||||
|
window.location.reload();
|
||||||
|
}]);
|
||||||
|
if(self.message)
|
||||||
|
self.message.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ var CouchPotato = new Class({
|
|||||||
|
|
||||||
if(window.location.hash)
|
if(window.location.hash)
|
||||||
History.handleInitialState();
|
History.handleInitialState();
|
||||||
|
|
||||||
self.openPage(window.location.pathname);
|
self.openPage(window.location.pathname);
|
||||||
|
|
||||||
History.addEvent('change', self.openPage.bind(self));
|
History.addEvent('change', self.openPage.bind(self));
|
||||||
@@ -211,10 +211,10 @@ var CouchPotato = new Class({
|
|||||||
}]);
|
}]);
|
||||||
},
|
},
|
||||||
|
|
||||||
checkForUpdate: function(func){
|
checkForUpdate: function(onComplete){
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
Updater.check(func)
|
Updater.check(onComplete)
|
||||||
|
|
||||||
self.blockPage('Please wait. If this takes to long, something must have gone wrong.', 'Checking for updates');
|
self.blockPage('Please wait. If this takes to long, something must have gone wrong.', 'Checking for updates');
|
||||||
self.checkAvailable(3000);
|
self.checkAvailable(3000);
|
||||||
@@ -244,6 +244,8 @@ var CouchPotato = new Class({
|
|||||||
blockPage: function(message, title){
|
blockPage: function(message, title){
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
self.unBlockPage();
|
||||||
|
|
||||||
var body = $(document.body);
|
var body = $(document.body);
|
||||||
self.mask = new Element('div.mask').adopt(
|
self.mask = new Element('div.mask').adopt(
|
||||||
new Element('div').adopt(
|
new Element('div').adopt(
|
||||||
@@ -259,9 +261,10 @@ var CouchPotato = new Class({
|
|||||||
|
|
||||||
unBlockPage: function(){
|
unBlockPage: function(){
|
||||||
var self = this;
|
var self = this;
|
||||||
self.mask.get('tween').start('opacity', 0).chain(function(){
|
if(self.mask)
|
||||||
this.element.destroy()
|
self.mask.get('tween').start('opacity', 0).chain(function(){
|
||||||
});
|
this.element.destroy()
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
createUrl: function(action, params){
|
createUrl: function(action, params){
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ var AboutSettingTab = new Class({
|
|||||||
'text': 'Getting version...',
|
'text': 'Getting version...',
|
||||||
'events': {
|
'events': {
|
||||||
'click': App.checkForUpdate.bind(App, function(json){
|
'click': App.checkForUpdate.bind(App, function(json){
|
||||||
self.fillVersion(json)
|
self.fillVersion(json.info)
|
||||||
}),
|
}),
|
||||||
'mouseenter': function(){
|
'mouseenter': function(){
|
||||||
this.set('text', 'Check for updates')
|
this.set('text', 'Check for updates')
|
||||||
|
|||||||
Reference in New Issue
Block a user