lars
80337411ae
svn:keywords set fixed: shutdown - delay reboot/poweroff by some seconds to finish the web page before added: format_fs - show link to umount in case of active device added: new plugin "language_selection" fixed: recently introduced syntax error in 'network' added: "volume_props" mentions encryption support via "format_fs" (including link) updated: plugin-interface.txt fixed: broken test case for date plugin (caused by twill, I guess) added: "partition" plugin - better handling of config partition
69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
import CryptoBoxPlugin
|
|
|
|
|
|
class date(CryptoBoxPlugin.CryptoBoxPlugin):
|
|
|
|
pluginCapabilities = [ "system" ]
|
|
requestAuth = False
|
|
rank = 10
|
|
|
|
def doAction(self, store=None, year=None, month=None, day=None, hour=None, minute=None):
|
|
import datetime
|
|
if store:
|
|
try:
|
|
year, month, day = int(year), int(month), int(day)
|
|
hour, minute = int(hour), int(minute)
|
|
new_date = datetime.datetime(year, month, day, hour, minute)
|
|
except ValueError:
|
|
self.hdf["Data.Warning"] = "Plugins.date.InvalidDate"
|
|
self.__prepareFormData()
|
|
return "form_date"
|
|
date = "%02d%02d%02d%02d%d" % (month, day, hour, minute, year)
|
|
if self.__setDate(date):
|
|
self.cbox.log.info("changed date to: %s" % date)
|
|
self.hdf["Data.Success"] = "Plugins.date.DateChanged"
|
|
return None
|
|
else:
|
|
## a failure should usually be an invalid date (we do not check it really)
|
|
self.cbox.log.info("failed to set date: %s" % date)
|
|
self.hdf["Data.Warning"] = "Plugins.date.InvalidDate"
|
|
self.__prepareFormData()
|
|
return "form_date"
|
|
else:
|
|
self.__prepareFormData()
|
|
return "form_date"
|
|
|
|
|
|
def getStatus(self):
|
|
now = self.__getCurrentDate()
|
|
return "%d/%d/%d/%d/%d/%d" % (now.year, now.month, now.day, now.hour, now.minute, now.second)
|
|
|
|
|
|
def __prepareFormData(self):
|
|
date = self.__getCurrentDate()
|
|
self.hdf[self.hdf_prefix + "year"] = date.year
|
|
self.hdf[self.hdf_prefix + "month"] = date.month
|
|
self.hdf[self.hdf_prefix + "day"] = date.day
|
|
self.hdf[self.hdf_prefix + "hour"] = date.hour
|
|
self.hdf[self.hdf_prefix + "minute"] = date.minute
|
|
|
|
|
|
def __getCurrentDate(self):
|
|
import datetime
|
|
return datetime.datetime(2000,1,1).now()
|
|
|
|
|
|
def __setDate(self, date):
|
|
import subprocess
|
|
import os
|
|
proc = subprocess.Popen(
|
|
shell = False,
|
|
args = [
|
|
self.cbox.prefs["Programs"]["super"],
|
|
self.cbox.prefs["Programs"]["CryptoBoxRootActions"],
|
|
"plugin",
|
|
os.path.join(self.pluginDir, "root_action.py"),
|
|
date])
|
|
proc.wait()
|
|
return proc.returncode == 0
|
|
|