settings.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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': copy_value('forum_name'),
  26. 'board_index_title': copy_value('forum_index_title'),
  27. 'board_index_meta': copy_value('forum_index_meta_description'),
  28. 'board_header': copy_value('forum_branding_text'),
  29. 'email_footnote_plain': copy_value('email_footer'),
  30. 'tos_title': copy_value('terms_of_service_title'),
  31. 'tos_url': copy_value('terms_of_service_link'),
  32. 'tos_content': copy_value('terms_of_service'),
  33. 'board_credits': copy_value('forum_footnote'),
  34. 'thread_name_min': copy_value('thread_title_length_min'),
  35. 'thread_name_max': copy_value('thread_title_length_max'),
  36. 'post_length_min': copy_value('post_length_min'),
  37. 'account_activation': map_value(
  38. 'account_activation', {
  39. 'none': 'none',
  40. 'user': 'user',
  41. 'admin': 'admin',
  42. 'block': 'closed',
  43. }
  44. ),
  45. 'username_length_min': copy_value('username_length_min'),
  46. 'username_length_max': copy_value('username_length_max'),
  47. 'password_length': copy_value('password_length_min'),
  48. 'avatars_types': convert_allow_custom_avatars,
  49. 'default_avatar': copy_value('default_avatar'),
  50. 'upload_limit': copy_value('avatar_upload_limit'),
  51. 'subscribe_start': map_value('subscribe_start', {
  52. '0': 'no',
  53. '1': 'watch',
  54. '2': 'watch_email',
  55. }),
  56. 'subscribe_reply': map_value('subscribe_reply', {
  57. '0': 'no',
  58. '1': 'watch',
  59. '2': 'watch_email',
  60. }),
  61. 'bots_registration': map_value('captcha_type', {
  62. 'no': 'no',
  63. 'recaptcha': 're',
  64. 'qa': 'qa',
  65. }),
  66. 'recaptcha_public': copy_value('recaptcha_site_key'),
  67. 'recaptcha_private': copy_value('recaptcha_secret_key'),
  68. 'qa_test': copy_value('qa_question'),
  69. 'qa_test_help': copy_value('qa_help_text'),
  70. 'qa_test_answers': copy_value('qa_answers'),
  71. }
  72. def move_settings(stdout=None):
  73. for row in fetch_assoc('SELECT * FROM misago_setting'):
  74. setting_key = row['setting']
  75. if setting_key in SETTING_CONVERTER:
  76. convert_setting = SETTING_CONVERTER[setting_key]
  77. setting_obj = convert_setting(row['value'])
  78. stdout.write(setting_obj.name)
  79. db_settings.flush_cache()