1
0

settings.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import os
  2. import warnings
  3. from django.conf import settings
  4. CAPTCHA_FONT_PATH = getattr(
  5. settings,
  6. "CAPTCHA_FONT_PATH",
  7. os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "fonts/Vera.ttf")),
  8. )
  9. CAPTCHA_FONT_SIZE = getattr(settings, "CAPTCHA_FONT_SIZE", 22)
  10. CAPTCHA_LETTER_ROTATION = getattr(settings, "CAPTCHA_LETTER_ROTATION", (-35, 35))
  11. CAPTCHA_BACKGROUND_COLOR = getattr(settings, "CAPTCHA_BACKGROUND_COLOR", "#ffffff")
  12. CAPTCHA_FOREGROUND_COLOR = getattr(settings, "CAPTCHA_FOREGROUND_COLOR", "#001100")
  13. CAPTCHA_CHALLENGE_FUNCT = getattr(
  14. settings, "CAPTCHA_CHALLENGE_FUNCT", "captcha.helpers.random_char_challenge"
  15. )
  16. CAPTCHA_NOISE_FUNCTIONS = getattr(
  17. settings,
  18. "CAPTCHA_NOISE_FUNCTIONS",
  19. ("captcha.helpers.noise_arcs", "captcha.helpers.noise_dots"),
  20. )
  21. CAPTCHA_FILTER_FUNCTIONS = getattr(
  22. settings, "CAPTCHA_FILTER_FUNCTIONS", ("captcha.helpers.post_smooth",)
  23. )
  24. CAPTCHA_WORDS_DICTIONARY = getattr(
  25. settings, "CAPTCHA_WORDS_DICTIONARY", "/usr/share/dict/words"
  26. )
  27. CAPTCHA_PUNCTUATION = getattr(settings, "CAPTCHA_PUNCTUATION", """_"',.;:-""")
  28. CAPTCHA_FLITE_PATH = getattr(settings, "CAPTCHA_FLITE_PATH", None)
  29. CAPTCHA_SOX_PATH = getattr(settings, "CAPTCHA_SOX_PATH", None)
  30. CAPTCHA_TIMEOUT = getattr(settings, "CAPTCHA_TIMEOUT", 5) # Minutes
  31. CAPTCHA_LENGTH = int(getattr(settings, "CAPTCHA_LENGTH", 4)) # Chars
  32. # CAPTCHA_IMAGE_BEFORE_FIELD = getattr(settings, 'CAPTCHA_IMAGE_BEFORE_FIELD', True)
  33. CAPTCHA_DICTIONARY_MIN_LENGTH = getattr(settings, "CAPTCHA_DICTIONARY_MIN_LENGTH", 0)
  34. CAPTCHA_DICTIONARY_MAX_LENGTH = getattr(settings, "CAPTCHA_DICTIONARY_MAX_LENGTH", 99)
  35. CAPTCHA_IMAGE_SIZE = getattr(settings, "CAPTCHA_IMAGE_SIZE", None)
  36. CAPTCHA_IMAGE_TEMPLATE = getattr(
  37. settings, "CAPTCHA_IMAGE_TEMPLATE", "captcha/image.html"
  38. )
  39. CAPTCHA_HIDDEN_FIELD_TEMPLATE = getattr(
  40. settings, "CAPTCHA_HIDDEN_FIELD_TEMPLATE", "captcha/hidden_field.html"
  41. )
  42. CAPTCHA_TEXT_FIELD_TEMPLATE = getattr(
  43. settings, "CAPTCHA_TEXT_FIELD_TEMPLATE", "captcha/text_field.html"
  44. )
  45. if getattr(settings, "CAPTCHA_FIELD_TEMPLATE", None):
  46. msg = "CAPTCHA_FIELD_TEMPLATE setting is deprecated in favor of widget's template_name."
  47. warnings.warn(msg, DeprecationWarning)
  48. CAPTCHA_FIELD_TEMPLATE = getattr(settings, "CAPTCHA_FIELD_TEMPLATE", None)
  49. if getattr(settings, "CAPTCHA_OUTPUT_FORMAT", None):
  50. msg = "CAPTCHA_OUTPUT_FORMAT setting is deprecated in favor of widget's template_name."
  51. warnings.warn(msg, DeprecationWarning)
  52. CAPTCHA_OUTPUT_FORMAT = getattr(settings, "CAPTCHA_OUTPUT_FORMAT", None)
  53. CAPTCHA_MATH_CHALLENGE_OPERATOR = getattr(
  54. settings, "CAPTCHA_MATH_CHALLENGE_OPERATOR", "*"
  55. )
  56. CAPTCHA_GET_FROM_POOL = getattr(settings, "CAPTCHA_GET_FROM_POOL", False)
  57. CAPTCHA_GET_FROM_POOL_TIMEOUT = getattr(settings, "CAPTCHA_GET_FROM_POOL_TIMEOUT", 5)
  58. CAPTCHA_TEST_MODE = getattr(settings, "CAPTCHA_TEST_MODE", False)
  59. CAPTCHA_2X_IMAGE = getattr(settings, "CAPTCHA_2X_IMAGE", True)
  60. # Failsafe
  61. if CAPTCHA_DICTIONARY_MIN_LENGTH > CAPTCHA_DICTIONARY_MAX_LENGTH:
  62. CAPTCHA_DICTIONARY_MIN_LENGTH, CAPTCHA_DICTIONARY_MAX_LENGTH = (
  63. CAPTCHA_DICTIONARY_MAX_LENGTH,
  64. CAPTCHA_DICTIONARY_MIN_LENGTH,
  65. )
  66. def _callable_from_string(string_or_callable):
  67. if callable(string_or_callable):
  68. return string_or_callable
  69. else:
  70. return getattr(
  71. __import__(".".join(string_or_callable.split(".")[:-1]), {}, {}, [""]),
  72. string_or_callable.split(".")[-1],
  73. )
  74. def get_challenge(generator=None):
  75. return _callable_from_string(generator or CAPTCHA_CHALLENGE_FUNCT)
  76. def noise_functions():
  77. if CAPTCHA_NOISE_FUNCTIONS:
  78. return map(_callable_from_string, CAPTCHA_NOISE_FUNCTIONS)
  79. return []
  80. def filter_functions():
  81. if CAPTCHA_FILTER_FUNCTIONS:
  82. return map(_callable_from_string, CAPTCHA_FILTER_FUNCTIONS)
  83. return []