diff --git a/rhodecode/lib/__init__.py b/rhodecode/lib/__init__.py --- a/rhodecode/lib/__init__.py +++ b/rhodecode/lib/__init__.py @@ -23,20 +23,33 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -def str2bool(s): - if s is None: + +def str2bool(_str): + """ + returs True/False value from given string, it tries to translate the + string into boolean + + :param _str: string value to translate into boolean + :rtype: boolean + :returns: boolean from given string + """ + if _str is None: return False - if s in (True, False): - return s - s = str(s).strip().lower() - return s in ('t', 'true', 'y', 'yes', 'on', '1') + if _str in (True, False): + return _str + _str = str(_str).strip().lower() + return _str in ('t', 'true', 'y', 'yes', 'on', '1') + def generate_api_key(username, salt=None): """ - Generates uniq API key for given username + Generates unique API key for given username,if salt is not given + it'll be generated from some random string :param username: username as string :param salt: salt to hash generate KEY + :rtype: str + :returns: sha1 hash from username+salt """ from tempfile import _RandomNameSequence import hashlib @@ -46,23 +59,23 @@ def generate_api_key(username, salt=None return hashlib.sha1(username + salt).hexdigest() -def safe_unicode(_str): + +def safe_unicode(_str, from_encoding='utf8'): """ 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 + unicode with errors replace + + :param _str: string to decode + :rtype: unicode + :returns: unicode object """ if isinstance(_str, unicode): return _str try: - u_str = unicode(_str) + u_str = unicode(_str, from_encoding) except UnicodeDecodeError: - try: - u_str = _str.decode('utf-8', 'replace') - except UnicodeDecodeError: - #incase we have a decode error just represent as byte string - u_str = unicode(_str.encode('string_escape')) + u_str = unicode(_str, from_encoding, 'replace') - return u_str \ No newline at end of file + return u_str