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=0, month=0, day=0, hour=0, minute=0):
|
|
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.communicate()
|
|
return proc.returncode == 0
|
|
|