Mercurial > kallithea
diff rhodecode/lib/__init__.py @ 1154:36fe593dfe4b beta
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 18 Mar 2011 19:39:48 +0100 |
parents | 1aa1655bf019 |
children | 268fa0b6b2ef |
line wrap: on
line diff
--- a/rhodecode/lib/__init__.py Fri Mar 18 16:43:36 2011 +0100 +++ b/rhodecode/lib/__init__.py Fri Mar 18 19:39:48 2011 +0100 @@ -25,19 +25,21 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. -def str2bool(v): - if isinstance(v, (str, unicode)): - obj = v.strip().lower() - if obj in ['true', 'yes', 'on', 'y', 't', '1']: - return True - elif obj in ['false', 'no', 'off', 'n', 'f', '0']: - return False - else: - if not safe: - raise ValueError("String is not true/false: %r" % obj) - return bool(obj) +def str2bool(s): + if s 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') def generate_api_key(username, salt=None): + """ + Generates uniq API key for given username + + :param username: username as string + :param salt: salt to hash generate KEY + """ from tempfile import _RandomNameSequence import hashlib @@ -45,3 +47,21 @@ salt = _RandomNameSequence().next() return hashlib.sha1(username + salt).hexdigest() + +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 + """ + + try: + u_str = unicode(str) + except UnicodeDecodeError: + try: + u_str = unicode(str, 'utf-8', 'replace') + except UnicodeDecodeError: + #incase we have a decode error just represent as byte string + u_str = unicode(str(str).encode('string_escape')) + + return u_str