settings.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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('account_activation', {
  38. 'none': 'none',
  39. 'user': 'user',
  40. 'admin': 'admin',
  41. 'block': 'closed',
  42. }),
  43. 'username_length_min': copy_value('username_length_min'),
  44. 'username_length_max': copy_value('username_length_max'),
  45. 'password_length': copy_value('password_length_min'),
  46. 'avatars_types': convert_allow_custom_avatars,
  47. 'default_avatar': copy_value('default_avatar'),
  48. 'upload_limit': copy_value('avatar_upload_limit'),
  49. 'subscribe_start': map_value('subscribe_start', {
  50. '0': 'no',
  51. '1': 'watch',
  52. '2': 'watch_email',
  53. }),
  54. 'subscribe_reply': map_value('subscribe_reply', {
  55. '0': 'no',
  56. '1': 'watch',
  57. '2': 'watch_email',
  58. }),
  59. 'bots_registration': map_value('captcha_type', {
  60. 'no': 'no',
  61. 'recaptcha': 're',
  62. 'qa': 'qa',
  63. }),
  64. 'recaptcha_public': copy_value('recaptcha_site_key'),
  65. 'recaptcha_private': copy_value('recaptcha_secret_key'),
  66. 'qa_test': copy_value('qa_question'),
  67. 'qa_test_help': copy_value('qa_help_text'),
  68. 'qa_test_answers': copy_value('qa_answers'),
  69. }
  70. def move_settings(stdout=None):
  71. for row in fetch_assoc('SELECT * FROM misago_setting'):
  72. setting_key = row['setting']
  73. if setting_key in SETTING_CONVERTER:
  74. convert_setting = SETTING_CONVERTER[setting_key]
  75. setting_obj = convert_setting(row['value'])
  76. stdout.write(setting_obj.name)
  77. db_settings.flush_cache()