[X2Go-Commits] [python-x2go] 01/01: fix profile COPYing and hostname changes
git-admin at x2go.org
git-admin at x2go.org
Fri Mar 21 01:31:36 CET 2014
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository python-x2go.
commit 66e96d277460e92cddbe905672d65dc4daa50ef7
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Fri Mar 21 01:31:43 2014 +0100
fix profile COPYing and hostname changes
---
x2go/backends/profiles/base.py | 34 +++++++++++++++++++++++-----------
x2go/backends/profiles/file.py | 2 +-
x2go/inifiles.py | 1 +
3 files changed, 25 insertions(+), 12 deletions(-)
diff --git a/x2go/backends/profiles/base.py b/x2go/backends/profiles/base.py
index 7630a8a..c19571f 100644
--- a/x2go/backends/profiles/base.py
+++ b/x2go/backends/profiles/base.py
@@ -179,19 +179,24 @@ class X2GoSessionProfiles():
else:
return self._profile_metatypes[_profile_id]
- def is_mutable(self, profile_id_or_name):
+ def is_mutable(self, profile_id_or_name=None, profile_id=None):
"""\
Check if a given profile name (or ID) is mutable or not.
@param profile_id_or_name: profile name or profile ID
@type profile_id_or_name: C{str}
+ @param profile_id: if the profile ID is known, pass it in directly and skip
+ the L{check_profile_id_or_name()} call
+ @type profile_id: C{str}
@return: C{True} if the session profile of the specified name/ID is mutable
@rtype: C{bool}
+ @raise X2GoProfileException: if no such session profile exists
+
"""
try:
- profile_id = self.check_profile_id_or_name(profile_id_or_name)
+ profile_id = profile_id or self.check_profile_id_or_name(profile_id_or_name)
return self._is_mutable(profile_id)
except X2GoProfileException:
return None
@@ -258,8 +263,9 @@ class X2GoSessionProfiles():
self._delete_profile(profile_id)
try: del self._cached_profile_ids[profile_id]
- except ValueError: pass
+ except KeyError: pass
self.add_profile(profile_id=None, force_add=True, **_config)
+
self._profiles_need_profile_id_renewal = []
self._cached_profile_ids = {}
@@ -485,6 +491,8 @@ class X2GoSessionProfiles():
if kwargs['name'] in self.profile_names and not force_add:
raise X2GoProfileException('a profile of name ,,%s\'\' already exists' % kwargs['name'])
+ self._cached_profile_ids[profile_id] = kwargs['name']
+
for key, value in kwargs.items():
self.update_value(None, key, value, profile_id=profile_id)
@@ -492,7 +500,7 @@ class X2GoSessionProfiles():
if key in kwargs: continue
self.update_value(None, key, value, profile_id=profile_id)
- self._cached_profile_ids = []
+ self._cached_profile_ids = {}
return unicode(profile_id)
@@ -510,8 +518,7 @@ class X2GoSessionProfiles():
self.write_user_config = True
self.write()
- self._cached_profile_ids = []
- self._cached_profile_names = []
+ self._cached_profile_ids = {}
def _delete_profile(self, profile_id):
"""\
@@ -531,6 +538,9 @@ class X2GoSessionProfiles():
@type option: C{str}
@param value: the value to update the session profile option with
@type value: any type, depends on the session profile option
+ @param profile_id: if the profile ID is known, pass it in directly and skip
+ the L{check_profile_id_or_name()} call
+ @type profile_id: C{str}
"""
try:
@@ -538,7 +548,7 @@ class X2GoSessionProfiles():
except X2GoProfileException:
profile_id = profile_id_or_name
- if not self.is_mutable(profile_id):
+ if not self.is_mutable(profile_id=profile_id):
raise X2GoProfileException("session profile cannot be modified, it is marked as immutable")
if option == 'name':
@@ -547,9 +557,11 @@ class X2GoSessionProfiles():
if not profile_name:
raise X2GoProfileException('profile name for profile id %s must not be empty' % profile_id)
else:
- self._cached_profile_names = []
- if profile_name != current_profile_name and profile_name in self.profile_names:
- raise X2GoProfileException('a profile of name ,,%s\'\' already exists' % profile_name)
+ if profile_name != current_profile_name:
+ try: del self._cached_profile_ids[profile_id]
+ except KeyError: pass
+ if profile_name in self.profile_names:
+ raise X2GoProfileException('a profile of name ,,%s\'\' already exists' % profile_name)
if option == 'export' and type(value) == types.DictType:
_strvalue = '"'
@@ -561,7 +573,7 @@ class X2GoSessionProfiles():
if option == 'host':
_host = self.get_profile_config(profile_id=profile_id, parameter='host')
- if _host != value:
+ if _host != value and _host is not None:
self._profiles_need_profile_id_renewal.append(profile_id)
if type(value) is types.TupleType:
value = list(value)
diff --git a/x2go/backends/profiles/file.py b/x2go/backends/profiles/file.py
index c9c0f7c..39e7da1 100644
--- a/x2go/backends/profiles/file.py
+++ b/x2go/backends/profiles/file.py
@@ -109,7 +109,7 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles, inifiles.X2GoIniFile):
def _update_value(self, profile_id, option, value):
if option == 'host':
value = ','.join(value)
- inifiles.X2GoIniFile.update_value(self, profile_id, option, value)
+ self._X2GoIniFile__update_value(profile_id, option, value)
def _get_profile_parameter(self, profile_id, option, key_type):
return self.get(profile_id, option, key_type)
diff --git a/x2go/inifiles.py b/x2go/inifiles.py
index 1bc10d4..84a3e51 100644
--- a/x2go/inifiles.py
+++ b/x2go/inifiles.py
@@ -194,6 +194,7 @@ class X2GoIniFile(object):
self.iniConfig.add_section(section)
self._storeValue(section, key, value)
self._write_user_config = True
+ __update_value = update_value
def write(self):
"""\
--
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