# HG changeset patch # User Goffi # Date 1322951580 -3600 # Node ID 7099ea9c1b12d04a5e4f75befbb193f1ebde9cd9 # Parent ab9ddf6c7eaf74cdc8219a3b64ddb4275f4a6664 core: getPrivate/setPrivate removed from memory, private values now use database storage and persistent dicts \o/ diff -r ab9ddf6c7eaf -r 7099ea9c1b12 src/memory/memory.py --- a/src/memory/memory.py Sat Dec 03 22:21:52 2011 +0100 +++ b/src/memory/memory.py Sat Dec 03 23:33:00 2011 +0100 @@ -35,7 +35,6 @@ from sat.memory.persistent import PersistentDict SAVEFILE_PARAM_XML="/param" #xml parameters template -SAVEFILE_PRIVATE="/private" #file used to store misc values (mainly for plugins) SAVEFILE_DATABASE="/sat.db" class ProfileNotInCacheError(Exception): @@ -167,13 +166,10 @@ @DEFAULT@ for default profile @return: requested profile name or None if it doesn't exist""" if profile_key=='@DEFAULT@': - if not self.params: - return "" - default = self.host.memory.getPrivate('Profile_default') - if not default or not default in self.params: + default = self.host.memory.memory_data.get('Profile_default') + if not default: info(_('No default profile, returning first one')) #TODO: manage real default profile - default = self.storage.getProfilesList()[0] - self.host.memory.setPrivate('Profile_default', default) + default = self.host.memory.memory_data['Profile_default'] = self.storage.getProfilesList()[0] return default #FIXME: temporary, must use real default value, and fallback to first one if it doesn't exists if not self.storage.hasProfile(profile_key): info (_('Trying to access an unknown profile')) @@ -500,11 +496,9 @@ self.presenceStatus={} self.lastResource={} #tmp, will be refactored with bdd integration self.subscriptions={} - self.private={} #used to store private value self.server_features={} #used to store discovery's informations self.server_identities={} self.config = self.parseMainConf() - host.set_const('savefile_private', SAVEFILE_PRIVATE) host.set_const('savefile_database', SAVEFILE_DATABASE) database_file = os.path.expanduser(self.getConfig('','local_dir')+ self.host.get_const('savefile_database')) @@ -512,7 +506,9 @@ PersistentDict.storage = self.storage self.params=Params(host, self.storage) self.loadFiles() - d = self.storage.initialized.addCallback(self.load) + d = self.storage.initialized.addCallback(lambda ignore:self.load()) + self.memory_data = PersistentDict("memory") + d.addCallback(lambda ignore: self.memory_data.load()) d.chainDeferred(self.initialized) def parseMainConf(self): @@ -544,8 +540,6 @@ """Load parameters and all memory things from file/db""" param_file_xml = os.path.expanduser(self.getConfig('','local_dir')+ self.host.get_const('savefile_param_xml')) - private_file = os.path.expanduser(self.getConfig('','local_dir')+ - self.host.get_const('savefile_private')) #parameters template if os.path.exists(param_file_xml): @@ -559,16 +553,8 @@ info (_("No params template, using default template")) self.params.load_default_params() - #private - if os.path.exists(private_file): - try: - with open(private_file, 'r') as private_pickle: - self.private=pickle.load(private_pickle) - debug(_("private values loaded")) - except: - error (_("Can't load private values !")) - def load(self, ignore): + def load(self): """Load parameters and all memory things from db""" #parameters data return self.params.loadGenParams() @@ -588,14 +574,9 @@ #TODO: need to encrypt files (at least passwords !) and set permissions param_file_xml = os.path.expanduser(self.getConfig('','local_dir')+ self.host.get_const('savefile_param_xml')) - private_file = os.path.expanduser(self.getConfig('','local_dir')+ - self.host.get_const('savefile_private')) self.params.save_xml(param_file_xml) debug(_("params saved")) - with open(private_file, 'w') as private_pickle: - pickle.dump(self.private, private_pickle) - debug(_("private values saved")) def getProfilesList(self): return self.storage.getProfilesList() @@ -631,18 +612,6 @@ def getHistory(self, from_jid, to_jid, limit=0, between=True): return self.storage.getHistory(jid.JID(from_jid), jid.JID(to_jid), limit, between) - def setPrivate(self, key, value): - """Save a misc private value (mainly useful for plugins)""" - self.private[key] = value - - def getPrivate(self, key): - """return a private value - @param key: name of wanted value - @return: value or None if value don't exist""" - if self.private.has_key(key): - return self.private[key] - return None - def addServerFeature(self, feature, profile): """Add a feature discovered from server @param feature: string of the feature