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

1import os 

2 

3from django.conf import settings 

4from django.utils.module_loading import import_string 

5 

6 

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) 

40 

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) 

46 

47CAPTCHA_TEST_MODE = getattr(settings, "CAPTCHA_TEST_MODE", False) 

48 

49CAPTCHA_2X_IMAGE = getattr(settings, "CAPTCHA_2X_IMAGE", True) 

50 

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 ) 

57 

58 

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) 

64 

65 

66def get_challenge(generator=None): 

67 return _callable_from_string(generator or CAPTCHA_CHALLENGE_FUNCT) 

68 

69 

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 [] 

74 

75 

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 [] 

80 

81 

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