settings.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. from __future__ import unicode_literals
  2. from misago.conf import db_settings
  3. from misago.conf.models import Setting
  4. from . import fetch_assoc
  5. def copy_value(setting):
  6. def closure(old_value):
  7. setting_obj = Setting.objects.get(setting=setting)
  8. setting_obj.value = old_value
  9. setting_obj.save()
  10. return setting_obj
  11. return closure
  12. def map_value(setting, translation):
  13. def closure(old_value):
  14. setting_obj = Setting.objects.get(setting=setting)
  15. setting_obj.value = translation[old_value]
  16. setting_obj.save()
  17. return setting_obj
  18. return closure
  19. def convert_allow_custom_avatars(old_value):
  20. setting_obj = Setting.objects.get(setting='allow_custom_avatars')
  21. setting_obj.value = 'upload' in old_value.split(',')
  22. setting_obj.save()
  23. return setting_obj
  24. SETTING_CONVERTER = {
  25. 'board_name':
  26. copy_value('forum_name'),
  27. 'board_index_title':
  28. copy_value('forum_index_title'),
  29. 'board_index_meta':
  30. copy_value('forum_index_meta_description'),
  31. 'board_header':
  32. copy_value('forum_branding_text'),
  33. 'email_footnote_plain':
  34. copy_value('email_footer'),
  35. 'tos_title':
  36. copy_value('terms_of_service_title'),
  37. 'tos_url':
  38. copy_value('terms_of_service_link'),
  39. 'tos_content':
  40. copy_value('terms_of_service'),
  41. 'board_credits':
  42. copy_value('forum_footnote'),
  43. 'thread_name_min':
  44. copy_value('thread_title_length_min'),
  45. 'thread_name_max':
  46. copy_value('thread_title_length_max'),
  47. 'post_length_min':
  48. copy_value('post_length_min'),
  49. 'account_activation':
  50. map_value(
  51. 'account_activation', {
  52. 'none': 'none',
  53. 'user': 'user',
  54. 'admin': 'admin',
  55. 'block': 'closed',
  56. }
  57. ),
  58. 'username_length_min':
  59. copy_value('username_length_min'),
  60. 'username_length_max':
  61. copy_value('username_length_max'),
  62. 'password_length':
  63. copy_value('password_length_min'),
  64. 'avatars_types':
  65. convert_allow_custom_avatars,
  66. 'default_avatar':
  67. copy_value('default_avatar'),
  68. 'upload_limit':
  69. copy_value('avatar_upload_limit'),
  70. 'subscribe_start':
  71. map_value('subscribe_start', {
  72. '0': 'no',
  73. '1': 'watch',
  74. '2': 'watch_email',
  75. }),
  76. 'subscribe_reply':
  77. map_value('subscribe_reply', {
  78. '0': 'no',
  79. '1': 'watch',
  80. '2': 'watch_email',
  81. }),
  82. 'bots_registration':
  83. map_value('captcha_type', {
  84. 'no': 'no',
  85. 'recaptcha': 're',
  86. 'qa': 'qa',
  87. }),
  88. 'recaptcha_public':
  89. copy_value('recaptcha_site_key'),
  90. 'recaptcha_private':
  91. copy_value('recaptcha_secret_key'),
  92. 'qa_test':
  93. copy_value('qa_question'),
  94. 'qa_test_help':
  95. copy_value('qa_help_text'),
  96. 'qa_test_answers':
  97. copy_value('qa_answers'),
  98. }
  99. def move_settings(stdout=None):
  100. for row in fetch_assoc('SELECT * FROM misago_setting'):
  101. setting_key = row['setting']
  102. if setting_key in SETTING_CONVERTER:
  103. convert_setting = SETTING_CONVERTER[setting_key]
  104. setting_obj = convert_setting(row['value'])
  105. stdout.write(setting_obj.name)
  106. db_settings.flush_cache()