[X2Go-Commits] [python-x2go] 01/01: Handle duplicate profile names gracefully (i.e. append a " (1)", " (2)", ... to the session profile name). (Fixes: #500).
git-admin at x2go.org
git-admin at x2go.org
Wed Sep 10 12:04:26 CEST 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 7cb2ca7325a2d46142d6a0e380ad89f164792307
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Wed Sep 10 12:04:15 2014 +0200
Handle duplicate profile names gracefully (i.e. append a " (1)", " (2)", ... to the session profile name). (Fixes: #500).
---
debian/changelog | 2 ++
x2go/backends/profiles/base.py | 21 +++++++++++++++++++--
x2go/backends/profiles/file.py | 8 +++++++-
3 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index e437449..c8be003 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -90,6 +90,8 @@ python-x2go (0.5.0.0-0x2go1) UNRELEASED; urgency=low
- Clean up terminal sessions properly when the clean_sessions() method
of the control session has got called.
- Don't use compression on TeKi sshfs mounts.
+ - Handle duplicate profile names gracefully (i.e. append a " (1)",
+ " (2)", ... to the session profile name). (Fixes: #500).
* 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 c19571f..2855d09 100644
--- a/x2go/backends/profiles/base.py
+++ b/x2go/backends/profiles/base.py
@@ -124,6 +124,24 @@ class X2GoSessionProfiles():
"""
self.session_profiles = self. _populate_session_profiles()
+ # scan for duplicate profile names and handle them...
+ scan_profile_names = {}
+ for profile_id in self.session_profiles.keys():
+ profile_name = self.to_profile_name(profile_id)
+ if profile_name not in scan_profile_names.keys():
+ scan_profile_names[profile_name] = [profile_id]
+ else:
+ scan_profile_names[profile_name].append(profile_id)
+ _duplicates = {}
+ for profile_name in scan_profile_names.keys():
+ if len(scan_profile_names[profile_name]) > 1:
+ _duplicates[profile_name] = scan_profile_names[profile_name]
+ for profile_name in _duplicates.keys():
+ i = 1
+ for profile_id in _duplicates[profile_name]:
+ self.update_value(None, 'name', '{name} ({i})'.format(name=profile_name, i=i), profile_id=profile_id)
+ i += 1
+
def _populate_session_profiles(self):
"""\
Inherit from this class and provide the backend specific way of loading /
@@ -558,10 +576,9 @@ class X2GoSessionProfiles():
raise X2GoProfileException('profile name for profile id %s must not be empty' % profile_id)
else:
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)
+ self._cached_profile_ids[profile_id] = profile_name
if option == 'export' and type(value) == types.DictType:
_strvalue = '"'
diff --git a/x2go/backends/profiles/file.py b/x2go/backends/profiles/file.py
index 39e7da1..913267d 100644
--- a/x2go/backends/profiles/file.py
+++ b/x2go/backends/profiles/file.py
@@ -85,13 +85,16 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles, inifiles.X2GoIniFile):
"""
session_profiles = [ p for p in self.iniConfig.sections() if p not in self._non_profile_sections and p != 'none' ]
+ _session_profiles_dict = {}
for session_profile in session_profiles:
for key, default_value in self.defaultSessionProfile.iteritems():
if not self.iniConfig.has_option(session_profile, key):
self._storeValue(session_profile, key, default_value)
# update cached meta type session profile information
self.get_profile_metatype(session_profile)
- return session_profiles
+ _session_profiles_dict[session_profile] = self.get_profile_config(session_profile)
+
+ return _session_profiles_dict
def _is_mutable(self, profile_id):
return True
@@ -105,11 +108,14 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles, inifiles.X2GoIniFile):
def _delete_profile(self, profile_id):
self.iniConfig.remove_section(profile_id)
+ try: del self.session_profiles[profile_id]
+ except KeyError: pass
def _update_value(self, profile_id, option, value):
if option == 'host':
value = ','.join(value)
self._X2GoIniFile__update_value(profile_id, option, value)
+ self.session_profiles[profile_id][option] = value
def _get_profile_parameter(self, profile_id, option, key_type):
return self.get(profile_id, option, key_type)
--
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