annotate rhodecode/lib/__init__.py @ 1228:73434499fa72

merges for stable
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 09 Apr 2011 11:22:32 +0200
parents 3d9da7893fdb
children bf263968da47
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
922
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
1 # -*- coding: utf-8 -*-
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
2 """
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
3 rhodecode.lib.__init__
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
4 ~~~~~~~~~~~~~~~~~~~~~~~
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
5
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
6 Some simple helper functions
1152
008bdfdd95c8 fixed str2bool typo
Marcin Kuzminski <marcin@python-works.com>
parents: 1136
diff changeset
7
922
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
8 :created_on: Jan 5, 2011
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
9 :author: marcink
1152
008bdfdd95c8 fixed str2bool typo
Marcin Kuzminski <marcin@python-works.com>
parents: 1136
diff changeset
10 :copyright: (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
922
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
11 :license: GPLv3, see COPYING for more details.
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
12 """
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
13 # This program is free software: you can redistribute it and/or modify
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
14 # it under the terms of the GNU General Public License as published by
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
15 # the Free Software Foundation, either version 3 of the License, or
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
16 # (at your option) any later version.
1152
008bdfdd95c8 fixed str2bool typo
Marcin Kuzminski <marcin@python-works.com>
parents: 1136
diff changeset
17 #
922
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
18 # This program is distributed in the hope that it will be useful,
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
21 # GNU General Public License for more details.
1152
008bdfdd95c8 fixed str2bool typo
Marcin Kuzminski <marcin@python-works.com>
parents: 1136
diff changeset
22 #
922
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
23 # You should have received a copy of the GNU General Public License
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
922
b2a70582bce3 fixed base.html. and missing lib str2bool function
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
25
1228
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
26
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
27 def str2bool(_str):
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
28 """
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
29 returs True/False value from given string, it tries to translate the
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
30 string into boolean
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
31
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
32 :param _str: string value to translate into boolean
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
33 :rtype: boolean
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
34 :returns: boolean from given string
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
35 """
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
36 if _str is None:
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
37 return False
1228
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
38 if _str in (True, False):
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
39 return _str
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
40 _str = str(_str).strip().lower()
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
41 return _str in ('t', 'true', 'y', 'yes', 'on', '1')
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
42
1136
93b980ebee55 changes for release 1.1.5
Marcin Kuzminski <marcin@python-works.com>
parents: 922
diff changeset
43
93b980ebee55 changes for release 1.1.5
Marcin Kuzminski <marcin@python-works.com>
parents: 922
diff changeset
44 def generate_api_key(username, salt=None):
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
45 """
1228
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
46 Generates unique API key for given username,if salt is not given
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
47 it'll be generated from some random string
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
48
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
49 :param username: username as string
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
50 :param salt: salt to hash generate KEY
1228
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
51 :rtype: str
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
52 :returns: sha1 hash from username+salt
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
53 """
1136
93b980ebee55 changes for release 1.1.5
Marcin Kuzminski <marcin@python-works.com>
parents: 922
diff changeset
54 from tempfile import _RandomNameSequence
93b980ebee55 changes for release 1.1.5
Marcin Kuzminski <marcin@python-works.com>
parents: 922
diff changeset
55 import hashlib
93b980ebee55 changes for release 1.1.5
Marcin Kuzminski <marcin@python-works.com>
parents: 922
diff changeset
56
93b980ebee55 changes for release 1.1.5
Marcin Kuzminski <marcin@python-works.com>
parents: 922
diff changeset
57 if salt is None:
93b980ebee55 changes for release 1.1.5
Marcin Kuzminski <marcin@python-works.com>
parents: 922
diff changeset
58 salt = _RandomNameSequence().next()
93b980ebee55 changes for release 1.1.5
Marcin Kuzminski <marcin@python-works.com>
parents: 922
diff changeset
59
93b980ebee55 changes for release 1.1.5
Marcin Kuzminski <marcin@python-works.com>
parents: 922
diff changeset
60 return hashlib.sha1(username + salt).hexdigest()
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
61
1228
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
62
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
63 def safe_unicode(_str, from_encoding='utf8'):
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
64 """
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
65 safe unicode function. In case of UnicodeDecode error we try to return
1228
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
66 unicode with errors replace
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
67
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
68 :param _str: string to decode
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
69 :rtype: unicode
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
70 :returns: unicode object
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
71 """
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
72
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
73 if isinstance(_str, unicode):
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
74 return _str
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
75
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
76 try:
1228
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
77 u_str = unicode(_str, from_encoding)
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
78 except UnicodeDecodeError:
1228
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
79 u_str = unicode(_str, from_encoding, 'replace')
1218
3d9da7893fdb fixes for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1152
diff changeset
80
1228
73434499fa72 merges for stable
Marcin Kuzminski <marcin@python-works.com>
parents: 1218
diff changeset
81 return u_str