This is an automated email from the git hooks/post-receive script. x2go pushed a commit to annotated tag CVix/1.99.3 in repository python-x2go. commit 66cecf3095c26e005ad6b0608b1c1ff280b1a4d0 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Mar 19 15:26:37 2014 +0100 Speed-optimize session profile ID <-> name mapping. --- debian/changelog | 1 + x2go/backends/profiles/base.py | 45 +++++++++++++++++++++++----------------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4052101..d2bb58a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,6 +12,7 @@ python-x2go (0.5.0.0-0x2go1) UNRELEASED; urgency=low - Provide session profile backend for a http broker. - Make session profile backends more unicode robust. - X2GoSessionProfile.get_server_hostname must return unicode objects. + - Speed-optimize session profile ID <-> name mapping. * debian/control: + Add dependencies: python-requests, python-simplejson. * python-x2go.spec: diff --git a/x2go/backends/profiles/base.py b/x2go/backends/profiles/base.py index 002124d..3aff841 100644 --- a/x2go/backends/profiles/base.py +++ b/x2go/backends/profiles/base.py @@ -60,8 +60,8 @@ class X2GoSessionProfiles(): """ self.defaultValues = {} self._profile_metatypes = {} - self._cached_profile_ids = [] - self._cached_profile_names = [] + self._cached_profile_ids = {} + self.__useexports = {} self._profiles_need_profile_id_renewal = [] self.write_user_config = False @@ -257,12 +257,11 @@ class X2GoSessionProfiles(): self._delete_profile(profile_id) - try: self._cached_profile_ids.remove(profile_id) + try: del self._cached_profile_ids[profile_id] except ValueError: pass self.add_profile(profile_id=None, force_add=True, **_config) self._profiles_need_profile_id_renewal = [] - self._cached_profile_ids = [] - self._cached_profile_names = [] + self._cached_profile_ids = {} return self._write() @@ -307,7 +306,11 @@ class X2GoSessionProfiles(): """ _profile_id = profile_id or self.check_profile_id_or_name(profile_id_or_name) _profile_config = {} - for option in self._get_profile_options(_profile_id): + if parameter is None: + parameters = self._get_profile_options(_profile_id) + else: + parameters = [parameter] + for option in parameters: value = self._get_profile_parameter(_profile_id, option, key_type=self.get_profile_option_type(option)) if option == 'export': @@ -362,6 +365,11 @@ class X2GoSessionProfiles(): except X2GoProfileException: return False + def _update_profile_ids_cache(self): + for p in self._get_profile_ids(): + if p not in self._non_profile_sections: + self._cached_profile_ids[p] = self.to_profile_name(p) + @property def profile_ids(self): """\ @@ -369,8 +377,8 @@ class X2GoSessionProfiles(): """ if not self._cached_profile_ids: - self._cached_profile_ids = [ s for s in self._get_profile_ids() if s not in self._non_profile_sections ] - return self._cached_profile_ids + self._update_profile_ids_cache() + return self._cached_profile_ids.keys() def _get_profile_ids(self): """\ @@ -402,9 +410,9 @@ class X2GoSessionProfiles(): Render a list of all profile names found in the session profiles configuration. """ - if not self._cached_profile_names: - self._cached_profile_names = [ self.to_profile_name(p) for p in self.profile_ids ] - return self._cached_profile_names + if not self._cached_profile_ids: + self._update_profile_ids_cache() + return self._cached_profile_ids.values() def has_profile_name(self, profile_name): """\ @@ -430,7 +438,7 @@ class X2GoSessionProfiles(): @rtype: C{str} """ - _profile_ids = [ p for p in self.profile_ids if self.to_profile_name(p) == profile_name ] + _profile_ids = [ p for p in self.profile_ids if self._cached_profile_ids[p] == profile_name ] if len(_profile_ids) == 1: return unicode(_profile_ids[0]) elif len(_profile_ids) == 0: @@ -449,10 +457,10 @@ class X2GoSessionProfiles(): @rtype: C{str} """ - _profile_config = self.get_profile_config(profile_id=profile_id) - if _profile_config.has_key('name'): - return unicode(_profile_config['name']) - else: + try: + _profile_name = self.get_profile_config(profile_id=profile_id, parameter='name') + return unicode(_profile_name) + except: return u'' def add_profile(self, profile_id=None, force_add=False, **kwargs): @@ -485,7 +493,6 @@ class X2GoSessionProfiles(): self.update_value(None, key, value, profile_id=profile_id) self._cached_profile_ids = [] - self._cached_profile_names = [] return unicode(profile_id) @@ -553,8 +560,8 @@ class X2GoSessionProfiles(): value = _strvalue if option == 'host': - _config = self.get_profile_config(profile_id=profile_id) - if _config.has_key('host') and _config['host'] != value: + _host = self.get_profile_config(profile_id=profile_id, parameter='host') + if _host != value: self._profiles_need_profile_id_renewal.append(profile_id) if type(value) is types.TupleType: value = list(value) -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git