diff --git a/rhodecode/lib/__init__.py b/rhodecode/lib/__init__.py --- a/rhodecode/lib/__init__.py +++ b/rhodecode/lib/__init__.py @@ -48,20 +48,23 @@ def generate_api_key(username, salt=None return hashlib.sha1(username + salt).hexdigest() -def safe_unicode(str): +def safe_unicode(_str): """ safe unicode function. In case of UnicodeDecode error we try to return unicode with errors replace, if this fails we return unicode with string_escape decoding """ + if isinstance(_str, unicode): + return _str + try: - u_str = unicode(str) + u_str = unicode(_str) except UnicodeDecodeError: try: - u_str = unicode(str, 'utf-8', 'replace') + u_str = _str.decode('utf-8', 'replace') except UnicodeDecodeError: #incase we have a decode error just represent as byte string - u_str = unicode(str(str).encode('string_escape')) + u_str = unicode(_str.encode('string_escape')) return u_str diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -24,6 +24,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. + +import os import logging import datetime from datetime import date @@ -212,7 +214,7 @@ class Repository(Base): @property def just_name(self): - return self.repo_name.split('/')[-1] + return self.repo_name.split(os.sep)[-1] @property def groups_with_parents(self):