preparers.py
97 lines
| 2.5 KiB
| text/x-python
|
PythonLexer
r5608 | # Copyright (C) 2016-2024 RhodeCode GmbH | |||
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/ | ||||
r5066 | from rhodecode.lib.str_utils import convert_special_chars, safe_int, safe_bytes | |||
def to_bytes_preparer(value): | ||||
if value: | ||||
value = safe_bytes(value) | ||||
return value | ||||
r523 | ||||
def strip_preparer(value): | ||||
""" | ||||
strips given values using .strip() function | ||||
""" | ||||
if value: | ||||
value = value.strip() | ||||
return value | ||||
r1216 | def slugify_preparer(value, keep_case=True): | |||
r523 | """ | |||
Slugify given value to a safe representation for url/id | ||||
""" | ||||
from rhodecode.lib.utils import repo_name_slug | ||||
if value: | ||||
r1216 | value = repo_name_slug(value if keep_case else value.lower()) | |||
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: | ||||
r5066 | value = convert_special_chars(value) | |||
r523 | 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 | ||||
r4908 | if isinstance(value, str): | |||
r523 | value = aslist(value, ',') | |||
r5066 | return unique_list_preparer(value) | |||
def ensure_value_is_int(value): | ||||
return safe_int(value) | ||||