diff --git a/sat.tac b/sat.tac index 806e976a..09ef8e3e 100644 --- a/sat.tac +++ b/sat.tac @@ -19,8 +19,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -client_name = u'SàT (Salut à toi)' -client_version = '0.0.1D' #Please add 'D' at the end for dev versions +CONST = { + 'client_name' : u'SàT (Salut à toi)', + 'client_version' : u'0.0.1D', #Please add 'D' at the end for dev versions + 'local_dir' : '~/.sat' +} from twisted.application import internet, service from twisted.internet import glib2reactor, protocol, task @@ -250,8 +253,27 @@ class SAT(service.Service): def get_next_id(self): return sat_next_id() + def get_const(self, name): + """Return a constant""" + if not CONST.has_key(name): + error('Trying to access an undefined constant') + raise Exception + return CONST[name] + + def set_const(self, name, value): + """Save a constant""" + if CONST.has_key(name): + error('Trying to redefine a constant') + raise Exception + CONST[name] = value + def __init__(self): #TODO: standardize callback system + + local_dir = os.path.expanduser(self.get_const('local_dir')) + if not os.path.exists(local_dir): + os.makedirs(local_dir) + self.__waiting_conf = {} #callback called when a confirmation is received self.__progress_cb_map = {} #callback called when a progress is requested (key = progress id) self.__general_cb_map = {} #callback called for general reasons (key = name) @@ -323,7 +345,8 @@ class SAT(service.Service): self.fallBack = SatFallbackHandler(self) self.fallBack.setHandlerParent(self.xmppclient) - self.versionHandler = generic.VersionHandler(unicode(client_name), client_version) + self.versionHandler = generic.VersionHandler(self.get_const('client_name'), + self.get_const('client_version')) self.versionHandler.setHandlerParent(self.xmppclient) debug ("setting plugins parents") diff --git a/tools/memory.py b/tools/memory.py index eb2f71bb..8e06e554 100644 --- a/tools/memory.py +++ b/tools/memory.py @@ -29,8 +29,8 @@ from logging import debug, info, error import pdb from twisted.internet import defer -const_SAVEFILE_PARAM=os.path.expanduser("~/.sat_param.save") -const_SAVEFILE_HISTORY=os.path.expanduser("~/.sat_history.save") +SAVEFILE_PARAM="/param" +SAVEFILE_HISTORY="/history" class Param(): """This class manage parameter with xml""" @@ -66,6 +66,8 @@ class Param(): def __init__(self, host): debug("Parameters init") self.host = host + host.set_const('savefile_param', SAVEFILE_PARAM) + host.set_const('savefile_history', SAVEFILE_HISTORY) host.registerGeneralCB("registerNewAccount", host.registerNewAccountCB) def __get_unique_node(self, parent, tag, name): @@ -180,6 +182,7 @@ class Memory: def __init__(self, host): info ("Memory manager init") + self.host = host self.contact={} self.presenceStatus={} self.params=Param(host) @@ -190,11 +193,15 @@ class Memory: def load(self): """Load parameters and all memory things from file/db""" + param_file = os.path.expanduser(self.host.get_const('local_dir')+ + self.host.get_const('savefile_param')) + history_file = os.path.expanduser(self.host.get_const('local_dir')+ + self.host.get_const('savefile_history')) #parameters - if os.path.exists(const_SAVEFILE_PARAM): + if os.path.exists(param_file): try: - self.params.load(const_SAVEFILE_PARAM) + self.params.load(param_file) debug("params loaded") except: error ("Can't load params !") @@ -204,9 +211,9 @@ class Memory: self.params.load_default_params() #history - if os.path.exists(const_SAVEFILE_HISTORY): + if os.path.exists(history_file): try: - with open(const_SAVEFILE_HISTORY, 'r') as history_pickle: + with open(history_file, 'r') as history_pickle: self.history=pickle.load(history_pickle) debug("history loaded") except: @@ -216,9 +223,14 @@ class Memory: def save(self): """Save parameters and all memory things to file/db""" #TODO: need to encrypt files (at least passwords !) and set permissions - self.params.save(const_SAVEFILE_PARAM) + param_file = os.path.expanduser(self.host.get_const('local_dir')+ + self.host.get_const('savefile_param')) + history_file = os.path.expanduser(self.host.get_const('local_dir')+ + self.host.get_const('savefile_history')) + + self.params.save(param_file) debug("params saved") - with open(const_SAVEFILE_HISTORY, 'w') as history_pickle: + with open(history_file, 'w') as history_pickle: pickle.dump(self.history, history_pickle) debug("history saved")