# # Copyright 2006 sense.lab e.V. # # This file is part of the CryptoBox. # # The CryptoBox is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # The CryptoBox is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with the CryptoBox; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # import cryptobox.plugins.base class date(cryptobox.plugins.base.CryptoBoxPlugin): pluginCapabilities = [ "system" ] pluginVisibility = [ "preferences" ] 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.wait() return proc.returncode == 0