##// END OF EJS Templates
core: change from homebrew plugin system into pyramid machinery....
core: change from homebrew plugin system into pyramid machinery. - it's faster to load - homebrew system was never used as intended - it's cleaner CE/EE code this way

File last commit:

r2487:fcee5614 default
r3240:b74ad312 default
Show More
preparers.py
87 lines | 2.4 KiB | text/x-python | PythonLexer
gists: use colander schema to validate input data....
r523 # -*- coding: utf-8 -*-
release: update copyright year to 2018
r2487 # Copyright (C) 2016-2018 RhodeCode GmbH
gists: use colander schema to validate input data....
r523 #
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# 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.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
import unicodedata
def strip_preparer(value):
"""
strips given values using .strip() function
"""
if value:
value = value.strip()
return value
schema: preparer should keep case by default.
r1216 def slugify_preparer(value, keep_case=True):
gists: use colander schema to validate input data....
r523 """
Slugify given value to a safe representation for url/id
"""
from rhodecode.lib.utils import repo_name_slug
if value:
schema: preparer should keep case by default.
r1216 value = repo_name_slug(value if keep_case else value.lower())
gists: use colander schema to validate input data....
r523 return value
def non_ascii_strip_preparer(value):
"""
trie to replace non-ascii letters to their ascii representation
eg::
`żołw` converts into `zolw`
"""
if value:
value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')
return value
def unique_list_preparer(value):
"""
Converts an list to a list with only unique values
"""
def make_unique(value):
seen = []
return [c for c in value if
not (c in seen or seen.append(c))]
if isinstance(value, list):
ret_val = make_unique(value)
elif isinstance(value, set):
ret_val = list(value)
elif isinstance(value, tuple):
ret_val = make_unique(value)
elif value is None:
ret_val = []
else:
ret_val = [value]
return ret_val
def unique_list_from_str_preparer(value):
"""
Converts an list to a list with only unique values
"""
from rhodecode.lib.utils2 import aslist
if isinstance(value, basestring):
value = aslist(value, ',')
return unique_list_preparer(value)