settings.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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. ('misc', {
  60. 'name': "Misc Settings",
  61. 'description': "Miscellaneous settings.",
  62. 'settings': (
  63. ('message_quota', {
  64. 'value': 50,
  65. 'value_type': "integer",
  66. 'extra': {"min": 0},
  67. 'name': "Private Message Quota",
  68. 'description': "The amount of messages a user can have."
  69. }),
  70. ('online_last_minutes', {
  71. 'value': 15,
  72. 'value_type': "integer",
  73. 'extra': {'min': 0},
  74. 'name': "Online last minutes",
  75. 'description': "How long a user can be inactive before he is marked as offline. 0 to disable it.",
  76. }),
  77. ('title_length', {
  78. 'value': 15,
  79. 'value_type': "integer",
  80. 'extra': {'min': 0},
  81. 'name': "Topic title length",
  82. 'description': "The length of the topic title shown on the index."
  83. }),
  84. ('tracker_length', {
  85. 'value': 7,
  86. 'value_type': "integer",
  87. 'extra': {'min': 0},
  88. 'name': "Tracker length",
  89. 'description': "The days for how long the forum should deal with unread topics. 0 to disable it."
  90. }),
  91. ('avatar_height', {
  92. 'value': 150,
  93. 'value_type': "integer",
  94. 'extra': {'min': 0},
  95. 'name': "Avatar Height",
  96. 'description': "The allowed height of an avatar in pixels."
  97. }),
  98. ('avatar_width', {
  99. 'value': 150,
  100. 'value_type': "integer",
  101. 'extra': {'min': 0},
  102. 'name': "Avatar Width",
  103. 'description': "The allowed width of an avatar in pixels."
  104. }),
  105. ('avatar_size', {
  106. 'value': 200,
  107. 'value_type': "integer",
  108. 'extra': {'min': 0},
  109. 'name': "Avatar Size",
  110. 'description': "The allowed size of the avatar in kilobytes."
  111. }),
  112. ('avatar_types', {
  113. 'value': ["image/png", "image/jpeg", "image/gif"],
  114. 'value_type': "selectmultiple",
  115. 'extra': {"choices": available_avatar_types},
  116. 'name': "Avatar Types",
  117. 'description': "The allowed types of an avatar. Such as JPEG, GIF or PNG."
  118. }),
  119. ('signature_enabled', {
  120. 'value': True,
  121. 'value_type': "boolean",
  122. 'extra': {},
  123. 'name': "Enable Signatures",
  124. 'description': "Enable signatures in posts."
  125. })
  126. ),
  127. }),
  128. ('appearance', {
  129. 'name': "Appearance Settings",
  130. "description": "Change the theme and language for your forum.",
  131. "settings": (
  132. ('default_theme', {
  133. 'value': "bootstrap3",
  134. 'value_type': "select",
  135. 'extra': {'choices': available_themes},
  136. 'name': "Default Theme",
  137. 'description': "Change the default theme for your forum."
  138. }),
  139. ('default_language', {
  140. 'value': "en",
  141. 'value_type': "select",
  142. 'extra': {'choices': available_languages},
  143. 'name': "Default Language",
  144. 'description': "Change the default language for your forum."
  145. }),
  146. ),
  147. }),
  148. )