[X2Go-Commits] [python-x2go] 01/01: Speed-optimize session profile ID <-> name mapping.
git-admin at x2go.org
git-admin at x2go.org
Thu Mar 20 00:43:38 CET 2014
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 at 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
More information about the x2go-commits
mailing list