Coverage for /home/marco/Code/django-simple-captcha/captcha/conf/settings.py: 88.14%
47 statements
« prev ^ index » next coverage.py v7.6.5, created at 2024-11-15 09:22 +0100
« prev ^ index » next coverage.py v7.6.5, created at 2024-11-15 09:22 +0100
1import os
3from django.conf import settings
4from django.utils.module_loading import import_string
7CAPTCHA_FONT_PATH = getattr(
8 settings,
9 "CAPTCHA_FONT_PATH",
10 os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "fonts/Vera.ttf")),
11)
12CAPTCHA_FONT_SIZE = getattr(settings, "CAPTCHA_FONT_SIZE", 22)
13CAPTCHA_LETTER_ROTATION = getattr(settings, "CAPTCHA_LETTER_ROTATION", (-35, 35))
14CAPTCHA_BACKGROUND_COLOR = getattr(settings, "CAPTCHA_BACKGROUND_COLOR", "#ffffff")
15CAPTCHA_FOREGROUND_COLOR = getattr(settings, "CAPTCHA_FOREGROUND_COLOR", "#001100")
16CAPTCHA_LETTER_COLOR_FUNCT = getattr(settings, "CAPTCHA_LETTER_COLOR_FUNCT", None)
17CAPTCHA_CHALLENGE_FUNCT = getattr(
18 settings, "CAPTCHA_CHALLENGE_FUNCT", "captcha.helpers.random_char_challenge"
19)
20CAPTCHA_NOISE_FUNCTIONS = getattr(
21 settings,
22 "CAPTCHA_NOISE_FUNCTIONS",
23 ("captcha.helpers.noise_arcs", "captcha.helpers.noise_dots"),
24)
25CAPTCHA_FILTER_FUNCTIONS = getattr(
26 settings, "CAPTCHA_FILTER_FUNCTIONS", ("captcha.helpers.post_smooth",)
27)
28CAPTCHA_WORDS_DICTIONARY = getattr(
29 settings, "CAPTCHA_WORDS_DICTIONARY", "/usr/share/dict/words"
30)
31CAPTCHA_PUNCTUATION = getattr(settings, "CAPTCHA_PUNCTUATION", """_"',.;:-""")
32CAPTCHA_FLITE_PATH = getattr(settings, "CAPTCHA_FLITE_PATH", None)
33CAPTCHA_SOX_PATH = getattr(settings, "CAPTCHA_SOX_PATH", None)
34CAPTCHA_TIMEOUT = getattr(settings, "CAPTCHA_TIMEOUT", 5) # Minutes
35CAPTCHA_LENGTH = int(getattr(settings, "CAPTCHA_LENGTH", 4)) # Chars
36# CAPTCHA_IMAGE_BEFORE_FIELD = getattr(settings, 'CAPTCHA_IMAGE_BEFORE_FIELD', True)
37CAPTCHA_DICTIONARY_MIN_LENGTH = getattr(settings, "CAPTCHA_DICTIONARY_MIN_LENGTH", 0)
38CAPTCHA_DICTIONARY_MAX_LENGTH = getattr(settings, "CAPTCHA_DICTIONARY_MAX_LENGTH", 99)
39CAPTCHA_IMAGE_SIZE = getattr(settings, "CAPTCHA_IMAGE_SIZE", None)
41CAPTCHA_MATH_CHALLENGE_OPERATOR = getattr(
42 settings, "CAPTCHA_MATH_CHALLENGE_OPERATOR", "*"
43)
44CAPTCHA_GET_FROM_POOL = getattr(settings, "CAPTCHA_GET_FROM_POOL", False)
45CAPTCHA_GET_FROM_POOL_TIMEOUT = getattr(settings, "CAPTCHA_GET_FROM_POOL_TIMEOUT", 5)
47CAPTCHA_TEST_MODE = getattr(settings, "CAPTCHA_TEST_MODE", False)
49CAPTCHA_2X_IMAGE = getattr(settings, "CAPTCHA_2X_IMAGE", True)
51# Failsafe
52if CAPTCHA_DICTIONARY_MIN_LENGTH > CAPTCHA_DICTIONARY_MAX_LENGTH: 52 ↛ 53line 52 didn't jump to line 53 because the condition on line 52 was never true
53 CAPTCHA_DICTIONARY_MIN_LENGTH, CAPTCHA_DICTIONARY_MAX_LENGTH = (
54 CAPTCHA_DICTIONARY_MAX_LENGTH,
55 CAPTCHA_DICTIONARY_MIN_LENGTH,
56 )
59def _callable_from_string(string_or_callable):
60 if callable(string_or_callable):
61 return string_or_callable
62 elif isinstance(string_or_callable, str): 62 ↛ exitline 62 didn't return from function '_callable_from_string' because the condition on line 62 was always true
63 return import_string(string_or_callable)
66def get_challenge(generator=None):
67 return _callable_from_string(generator or CAPTCHA_CHALLENGE_FUNCT)
70def noise_functions():
71 if CAPTCHA_NOISE_FUNCTIONS: 71 ↛ 73line 71 didn't jump to line 73 because the condition on line 71 was always true
72 return map(_callable_from_string, CAPTCHA_NOISE_FUNCTIONS)
73 return []
76def filter_functions():
77 if CAPTCHA_FILTER_FUNCTIONS: 77 ↛ 79line 77 didn't jump to line 79 because the condition on line 77 was always true
78 return map(_callable_from_string, CAPTCHA_FILTER_FUNCTIONS)
79 return []
82def get_letter_color(index, challenge):
83 if CAPTCHA_LETTER_COLOR_FUNCT:
84 return _callable_from_string(CAPTCHA_LETTER_COLOR_FUNCT)(index, challenge)
85 return CAPTCHA_FOREGROUND_COLOR