views.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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-1-25 20:25:8 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from flask import render_template, redirect, url_for, flash
  14. from flask.views import MethodView
  15. from flask_login import current_user, logout_user
  16. from api.setting.forms import (ProfileForm, PasswordForm, PrivacyForm,
  17. AvatarForm, BabelForm, error_callback)
  18. from flask_maple.auth.forms import form_validate
  19. class ProfileView(MethodView):
  20. def get(self):
  21. form = ProfileForm()
  22. avatarform = AvatarForm()
  23. info = current_user.info
  24. form.introduce.data = info.introduce
  25. form.school.data = info.school
  26. form.word.data = info.word
  27. data = {'form': form, 'avatarform': avatarform}
  28. return render_template('setting/setting.html', **data)
  29. @form_validate(ProfileForm, error=error_callback('setting.setting'), f='')
  30. def post(self):
  31. form = ProfileForm()
  32. info = current_user.info
  33. info.introduce = form.introduce.data
  34. info.school = form.school.data
  35. info.word = form.word.data
  36. info.save()
  37. return redirect(url_for('setting.setting'))
  38. class PasswordView(MethodView):
  39. def get(self):
  40. form = PasswordForm()
  41. data = {'form': form}
  42. return render_template('setting/password.html', **data)
  43. @form_validate(
  44. PasswordForm, error=error_callback('setting.password'), f='')
  45. def post(self):
  46. form = PasswordForm()
  47. if not current_user.check_password(form.old_password.data):
  48. flash('原密码错误', 'warning')
  49. else:
  50. current_user.set_password(form.new_password.data)
  51. current_user.save()
  52. logout_user()
  53. return redirect(url_for('setting.password'))
  54. class PrivacyView(MethodView):
  55. def get(self):
  56. form = PrivacyForm()
  57. setting = current_user.setting
  58. form.online_status.data = setting.online_status
  59. form.topic_list.data = setting.topic_list
  60. form.rep_list.data = setting.rep_list
  61. form.ntb_list.data = setting.ntb_list
  62. form.collect_list.data = setting.collect_list
  63. return render_template('setting/privacy.html', form=form)
  64. @form_validate(PrivacyForm, error=error_callback('setting.privacy'), f='')
  65. def post(self):
  66. form = PrivacyForm()
  67. setting = current_user.setting
  68. setting.online_status = form.online_status.data
  69. setting.topic_list = form.topic_list.data
  70. setting.rep_list = form.rep_list.data
  71. setting.ntb_list = form.ntb_list.data
  72. setting.collect_list = form.collect_list.data
  73. setting.save()
  74. return redirect(url_for('setting.privacy'))
  75. class BabelView(MethodView):
  76. def get(self):
  77. form = BabelForm()
  78. setting = current_user.setting
  79. form.timezone.data = setting.timezone
  80. form.locale.data = setting.locale
  81. return render_template('setting/babel.html', form=form)
  82. @form_validate(BabelForm, error=error_callback('setting.babel'), f='')
  83. def post(self):
  84. form = BabelForm()
  85. setting = current_user.setting
  86. setting.timezone = form.timezone.data
  87. setting.locale = form.locale.data
  88. setting.save()
  89. return redirect(url_for('setting.babel'))