##// END OF EJS Templates
moved LANGUAGE_EXTENSION_MAP to lib, and made whoosh indexer use the same map
moved LANGUAGE_EXTENSION_MAP to lib, and made whoosh indexer use the same map

File last commit:

r1302:f0e90465 beta
r1302:f0e90465 beta
Show More
__init__.py
142 lines | 3.9 KiB | text/x-python | PythonLexer
Added force https option into config files
r914 # -*- coding: utf-8 -*-
"""
rhodecode.lib.__init__
~~~~~~~~~~~~~~~~~~~~~~~
Some simple helper functions
source code cleanup: remove trailing white space, normalize file endings
r1203
Added force https option into config files
r914 :created_on: Jan 5, 2011
:author: marcink
source code cleanup: remove trailing white space, normalize file endings
r1203 :copyright: (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
Added force https option into config files
r914 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
Added force https option into config files
r914 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
Added force https option into config files
r914 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
Added force https option into config files
r914
fixed setup.py file to use same platform as defined in main rhodecode PLATFORM_OTHERS,...
r1223
moved LANGUAGE_EXTENSION_MAP to lib, and made whoosh indexer use the same map
r1302
def __get_lem():
from pygments import lexers
from string import lower
from collections import defaultdict
d = defaultdict(lambda: [])
def __clean(s):
s = s.lstrip('*')
s = s.lstrip('.')
if s.find('[') != -1:
exts = []
start, stop = s.find('['), s.find(']')
for suffix in s[start + 1:stop]:
exts.append(s[:s.find('[')] + suffix)
return map(lower, exts)
else:
return map(lower, [s])
for lx, t in sorted(lexers.LEXERS.items()):
m = map(__clean, t[-2])
if m:
m = reduce(lambda x, y: x + y, m)
for ext in m:
desc = lx.replace('Lexer', '')
d[ext].append(desc)
return dict(d)
# language map is also used by whoosh indexer, which for those specified
# extensions will index it's content
LANGUAGES_EXTENSIONS_MAP = __get_lem()
#Additional mappings that are not present in the pygments lexers
# NOTE: that this will overide any mappings in LANGUAGES_EXTENSIONS_MAP
ADDITIONAL_MAPPINGS = {'xaml': 'XAML'}
LANGUAGES_EXTENSIONS_MAP.update(ADDITIONAL_MAPPINGS)
fixed setup.py file to use same platform as defined in main rhodecode PLATFORM_OTHERS,...
r1223 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:
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
r1154 return False
fixed setup.py file to use same platform as defined in main rhodecode PLATFORM_OTHERS,...
r1223 if _str in (True, False):
return _str
_str = str(_str).strip().lower()
return _str in ('t', 'true', 'y', 'yes', 'on', '1')
Added api_key into user, api key get's generated again after password change...
r1116
def generate_api_key(username, salt=None):
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
r1154 """
fixed setup.py file to use same platform as defined in main rhodecode PLATFORM_OTHERS,...
r1223 Generates unique API key for given username,if salt is not given
it'll be generated from some random string
source code cleanup: remove trailing white space, normalize file endings
r1203
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
r1154 :param username: username as string
:param salt: salt to hash generate KEY
fixed setup.py file to use same platform as defined in main rhodecode PLATFORM_OTHERS,...
r1223 :rtype: str
:returns: sha1 hash from username+salt
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
r1154 """
Added api_key into user, api key get's generated again after password change...
r1116 from tempfile import _RandomNameSequence
import hashlib
if salt is None:
salt = _RandomNameSequence().next()
return hashlib.sha1(username + salt).hexdigest()
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
r1154
fixed setup.py file to use same platform as defined in main rhodecode PLATFORM_OTHERS,...
r1223
simplified safe_unicode function
r1222 def safe_unicode(_str, from_encoding='utf8'):
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
r1154 """
safe unicode function. In case of UnicodeDecode error we try to return
simplified safe_unicode function
r1222 unicode with errors replace
fixed setup.py file to use same platform as defined in main rhodecode PLATFORM_OTHERS,...
r1223
simplified safe_unicode function
r1222 :param _str: string to decode
:rtype: unicode
:returns: unicode object
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
r1154 """
Added os.sep in models for better win support...
r1199 if isinstance(_str, unicode):
return _str
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
r1154 try:
simplified safe_unicode function
r1222 u_str = unicode(_str, from_encoding)
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
r1154 except UnicodeDecodeError:
simplified safe_unicode function
r1222 u_str = unicode(_str, from_encoding, 'replace')
simplified str2bool, and moved safe_unicode out of helpers since it was not html specific function
r1154
return u_str
fixed problem with `Cannot operate on a closed database` error, by forcing NullPool when using sqlite database.
r1300
def engine_from_config(configuration, prefix='sqlalchemy.', **kwargs):
"""
Custom engine_from_config functions that makes sure we use NullPool for
file based sqlite databases. This prevents errors on sqlite.
"""
from sqlalchemy import engine_from_config as efc
from sqlalchemy.pool import NullPool
url = configuration[prefix + 'url']
if url.startswith('sqlite'):
kwargs.update({'poolclass':NullPool})
return efc(configuration, prefix, **kwargs)