diff --git a/magneto/src/magneto/core/interfaces.py b/magneto/src/magneto/core/interfaces.py index 4599e8a18..b506b49e1 100644 --- a/magneto/src/magneto/core/interfaces.py +++ b/magneto/src/magneto/core/interfaces.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- """ @author: Fabio Erculiani @@ -10,6 +11,7 @@ """ # System imports +import os import sys import time import subprocess @@ -248,6 +250,21 @@ class MagnetoCore(MagnetoCoreUI): _("Repositories are being updated automatically") ) + def is_system_on_batteries(self): + """ + Return whether System is running on batteries. + + @return: True, if running on batteries + @rtype: bool + """ + ac_powa_exec = "/usr/bin/on_ac_power" + if not os.access(ac_powa_exec, os.X_OK): + return False + ex_rc = os.system(ac_powa_exec) + if ex_rc: + return True + return False + def is_system_changed(self): # enable applet if disabled diff --git a/magneto/src/magneto/gtk/interfaces.py b/magneto/src/magneto/gtk/interfaces.py index 1caea83da..d08b15f3f 100644 --- a/magneto/src/magneto/gtk/interfaces.py +++ b/magneto/src/magneto/gtk/interfaces.py @@ -73,6 +73,11 @@ class Magneto(MagnetoCore): def __do_first_check(self): + # if system is running on batteries, + # first check is skipped + if self.is_system_on_batteries(): + return + def _do_check(): self.send_check_updates_signal() return False diff --git a/magneto/src/magneto/kde/interfaces.py b/magneto/src/magneto/kde/interfaces.py index 34d305fb9..cc7cb9863 100644 --- a/magneto/src/magneto/kde/interfaces.py +++ b/magneto/src/magneto/kde/interfaces.py @@ -93,6 +93,11 @@ class Magneto(MagnetoCore): def __do_first_check(self): + # if system is running on batteries, + # first check is skipped + if self.is_system_on_batteries(): + return + def _do_check(): self.send_check_updates_signal() return False diff --git a/services/client-updates-daemon b/services/client-updates-daemon index b8402ec32..966bce814 100755 --- a/services/client-updates-daemon +++ b/services/client-updates-daemon @@ -198,7 +198,25 @@ class UpdatesDaemon(dbus.service.Object): def do_alert(self, string, msg, urgency = "critical"): write_output('alert: %s, %s, urgency: %s' % (string, msg, urgency,)) + def is_system_on_batteries(self): + """ + Return whether System is running on batteries. + + @return: True, if running on batteries + @rtype: bool + """ + ac_powa_exec = "/usr/bin/on_ac_power" + if not os.access(ac_powa_exec, os.X_OK): + return False + ex_rc = os.system(ac_powa_exec) + if ex_rc: + return True + return False + def check_system_changes(self): + if self.is_system_on_batteries(): + # running on batteries, then skip + return self.__alive changed = self._is_system_changed() if changed: # trigger check and push @@ -224,6 +242,11 @@ class UpdatesDaemon(dbus.service.Object): return self.__alive def run_fetcher(self): + + if self.is_system_on_batteries(): + # running on batteries, then skip + return self.__alive + with self.__fetch_mutex: task = ParallelTask(self.__run_fetcher) task.start()