settings.py 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. # -*- coding: utf-8 -*-
  2. """
  3. flaskbb.fixtures.settings
  4. ~~~~~~~~~~~~~~~~~~~~~~~~~
  5. The fixtures module for our settings.
  6. :copyright: (c) 2014 by the FlaskBB Team.
  7. :license: BSD, see LICENSE for more details.
  8. """
  9. from flask_themes2 import get_themes_list
  10. from flaskbb.extensions import babel
  11. def available_themes():
  12. return [(theme.identifier, theme.name) for theme in get_themes_list()]
  13. def available_avatar_types():
  14. return [("image/png", "PNG"), ("image/jpeg", "JPG"), ("image/gif", "GIF")]
  15. def available_languages():
  16. return [(locale.language, locale.display_name)
  17. for locale in babel.list_translations()]
  18. fixture = (
  19. # Settings Group
  20. ('general', {
  21. 'name': "General Settings",
  22. 'description': "How many items per page are displayed.",
  23. 'settings': (
  24. ('project_title', {
  25. 'value': "FlaskBB",
  26. 'value_type': "string",
  27. 'name': "Project title",
  28. 'description': "The title of the project.",
  29. }),
  30. ('project_subtitle', {
  31. 'value': "A lightweight forum software in Flask",
  32. 'value_type': "string",
  33. 'name': "Project subtitle",
  34. 'description': "A short description of the project.",
  35. }),
  36. ('posts_per_page', {
  37. 'value': 10,
  38. 'value_type': "integer",
  39. 'extra': {'min': 5},
  40. 'name': "Posts per page",
  41. 'description': "Number of posts displayed per page.",
  42. }),
  43. ('topics_per_page', {
  44. 'value': 10,
  45. 'value_type': "integer",
  46. 'extra': {'min': 5},
  47. 'name': "Topics per page",
  48. 'description': "Number of topics displayed per page.",
  49. }),
  50. ('users_per_page', {
  51. 'value': 10,
  52. 'value_type': "integer",
  53. 'extra': {'min': 5},
  54. 'name': "Users per page",
  55. 'description': "Number of users displayed per page.",
  56. }),
  57. ),
  58. }),
  59. ('auth', {
  60. 'name': 'Authentication Settings',
  61. 'description': 'Configurations for the Login and Register process.',
  62. 'settings': (
  63. ('registration_enabled', {
  64. 'value': True,
  65. 'value_type': "boolean",
  66. 'name': "Enable Registration",
  67. 'description': "Enable or disable the registration",
  68. }),
  69. ('activate_account', {
  70. 'value': True,
  71. 'value_type': "boolean",
  72. 'name': "Enable Account Activation",
  73. 'description': "Enable to let the user activate their account by sending a email with an activation link."
  74. }),
  75. ('login_attempts', {
  76. 'value': 5,
  77. 'value_type': "integer",
  78. 'extra': {'min': 1},
  79. 'name': "Login Attempts",
  80. 'description': "Number of failed login attempts before the account will be suspended for a specified time.",
  81. }),
  82. ('login_timeout', {
  83. 'value': 15,
  84. 'value_type': "integer",
  85. 'extra': {'min': 0},
  86. 'name': "Login Timeout",
  87. 'description': "The time of how long a account will stay suspended until the user can try to login again (in minutes).",
  88. }),
  89. ('login_recaptcha', {
  90. 'value': 3,
  91. 'value_type': "integer",
  92. 'extra': {'min': 0},
  93. 'name': "Login reCAPTCHA",
  94. 'description': "Use a CAPTCHA after a specified amount of failed login attempts."
  95. }),
  96. ('recaptcha_enabled', {
  97. 'value': False,
  98. 'value_type': "boolean",
  99. 'name': "Enable reCAPTCHA",
  100. 'description': ("Helps to prevent bots from creating accounts. "
  101. "For more information visit this link: <a href=http://www.google.com/recaptcha>http://www.google.com/recaptcha</a>"),
  102. }),
  103. ('recaptcha_public_key', {
  104. 'value': "",
  105. 'value_type': "string",
  106. 'name': "reCAPTCHA Site Key",
  107. 'description': "Your public recaptcha key ('Site key').",
  108. }),
  109. ('recaptcha_private_key', {
  110. 'value': "",
  111. 'value_type': "string",
  112. 'name': "reCAPTCHA Secret Key",
  113. 'description': "The private key ('Secret key'). Keep this a secret!",
  114. }),
  115. ),
  116. }),
  117. ('misc', {
  118. 'name': "Misc Settings",
  119. 'description': "Miscellaneous settings.",
  120. 'settings': (
  121. ('message_quota', {
  122. 'value': 50,
  123. 'value_type': "integer",
  124. 'extra': {"min": 0},
  125. 'name': "Private Message Quota",
  126. 'description': "The amount of messages a user can have."
  127. }),
  128. ('online_last_minutes', {
  129. 'value': 15,
  130. 'value_type': "integer",
  131. 'extra': {'min': 0},
  132. 'name': "Online last minutes",
  133. 'description': "How long a user can be inactive before he is marked as offline. 0 to disable it.",
  134. }),
  135. ('title_length', {
  136. 'value': 15,
  137. 'value_type': "integer",
  138. 'extra': {'min': 0},
  139. 'name': "Topic title length",
  140. 'description': "The length of the topic title shown on the index."
  141. }),
  142. ('tracker_length', {
  143. 'value': 7,
  144. 'value_type': "integer",
  145. 'extra': {'min': 0},
  146. 'name': "Tracker length",
  147. 'description': "The days for how long the forum should deal with unread topics. 0 to disable it."
  148. }),
  149. ('avatar_height', {
  150. 'value': 150,
  151. 'value_type': "integer",
  152. 'extra': {'min': 0},
  153. 'name': "Avatar Height",
  154. 'description': "The allowed height of an avatar in pixels."
  155. }),
  156. ('avatar_width', {
  157. 'value': 150,
  158. 'value_type': "integer",
  159. 'extra': {'min': 0},
  160. 'name': "Avatar Width",
  161. 'description': "The allowed width of an avatar in pixels."
  162. }),
  163. ('avatar_size', {
  164. 'value': 200,
  165. 'value_type': "integer",
  166. 'extra': {'min': 0},
  167. 'name': "Avatar Size",
  168. 'description': "The allowed size of the avatar in kilobytes."
  169. }),
  170. ('avatar_types', {
  171. 'value': ["image/png", "image/jpeg", "image/gif"],
  172. 'value_type': "selectmultiple",
  173. 'extra': {"choices": available_avatar_types},
  174. 'name': "Avatar Types",
  175. 'description': "The allowed types of an avatar. Such as JPEG, GIF or PNG."
  176. }),
  177. ('signature_enabled', {
  178. 'value': True,
  179. 'value_type': "boolean",
  180. 'extra': {},
  181. 'name': "Enable Signatures",
  182. 'description': "Enable signatures in posts."
  183. })
  184. ),
  185. }),
  186. ('appearance', {
  187. 'name': "Appearance Settings",
  188. "description": "Change the theme and language for your forum.",
  189. "settings": (
  190. ('default_theme', {
  191. 'value': "aurora",
  192. 'value_type': "select",
  193. 'extra': {'choices': available_themes},
  194. 'name': "Default Theme",
  195. 'description': "Change the default theme for your forum."
  196. }),
  197. ('default_language', {
  198. 'value': "en",
  199. 'value_type': "select",
  200. 'extra': {'choices': available_languages},
  201. 'name': "Default Language",
  202. 'description': "Change the default language for your forum."
  203. }),
  204. ),
  205. }),
  206. )