views.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: views.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-12-20 22:16:04 (CST)
  9. # Last Update:星期六 2017-3-25 20:22:21 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from flask import render_template, redirect, url_for, flash, request
  14. from flask_login import current_user, logout_user
  15. from forums.api.setting.forms import (ProfileForm, PasswordForm, PrivacyForm,
  16. AvatarForm, BabelForm, error_callback)
  17. from forums.common.views import IsAuthMethodView as MethodView
  18. from flask_maple.auth.forms import form_validate
  19. class ProfileView(MethodView):
  20. def get(self):
  21. user = request.user
  22. form = ProfileForm()
  23. avatarform = AvatarForm()
  24. info = user.info
  25. form.introduce.data = info.introduce
  26. form.school.data = info.school
  27. form.word.data = info.word
  28. data = {'form': form, 'avatarform': avatarform}
  29. return render_template('setting/setting.html', **data)
  30. @form_validate(ProfileForm, error=error_callback('setting.setting'), f='')
  31. def post(self):
  32. form = ProfileForm()
  33. info = current_user.info
  34. info.introduce = form.introduce.data
  35. info.school = form.school.data
  36. info.word = form.word.data
  37. info.save()
  38. return redirect(url_for('setting.setting'))
  39. class PasswordView(MethodView):
  40. def get(self):
  41. form = PasswordForm()
  42. data = {'form': form}
  43. return render_template('setting/password.html', **data)
  44. @form_validate(
  45. PasswordForm, error=error_callback('setting.password'), f='')
  46. def post(self):
  47. user = request.user
  48. form = PasswordForm()
  49. if user.check_password(form.old_password.data):
  50. user.set_password(form.new_password.data)
  51. user.save()
  52. logout_user()
  53. return redirect(url_for('auth.login'))
  54. flash('原密码错误', 'warning')
  55. return redirect(url_for('setting.password'))
  56. class PrivacyView(MethodView):
  57. def get(self):
  58. user = request.user
  59. setting = user.setting
  60. form = PrivacyForm()
  61. form.online_status.data = setting.online_status
  62. form.topic_list.data = setting.topic_list
  63. form.rep_list.data = setting.rep_list
  64. form.ntb_list.data = setting.ntb_list
  65. form.collect_list.data = setting.collect_list
  66. return render_template('setting/privacy.html', form=form)
  67. @form_validate(PrivacyForm, error=error_callback('setting.privacy'), f='')
  68. def post(self):
  69. user = request.user
  70. form = PrivacyForm()
  71. setting = user.setting
  72. setting.online_status = form.online_status.data
  73. setting.topic_list = form.topic_list.data
  74. setting.rep_list = form.rep_list.data
  75. setting.ntb_list = form.ntb_list.data
  76. setting.collect_list = form.collect_list.data
  77. setting.save()
  78. return redirect(url_for('setting.privacy'))
  79. class BabelView(MethodView):
  80. def get(self):
  81. user = request.user
  82. setting = user.setting
  83. form = BabelForm()
  84. form.timezone.data = setting.timezone
  85. form.locale.data = setting.locale
  86. return render_template('setting/babel.html', form=form)
  87. @form_validate(BabelForm, error=error_callback('setting.babel'), f='')
  88. def post(self):
  89. user = request.user
  90. setting = user.setting
  91. form = BabelForm()
  92. setting.timezone = form.timezone.data
  93. setting.locale = form.locale.data
  94. setting.save()
  95. return redirect(url_for('setting.babel'))