views.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2017 jianglin
  5. # File Name: views.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2017-03-13 13:29:37 (CST)
  9. # Last Update:星期三 2017-3-29 13:54:44 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from flask import request, current_app, flash, redirect, url_for
  14. from flask.views import MethodView
  15. from flask_login import login_required, current_user
  16. from forums.permission import confirm_permission
  17. def is_confirmed(func):
  18. def _is_confirmed(*args, **kwargs):
  19. if confirm_permission.can():
  20. ret = func(*args, **kwargs)
  21. return ret
  22. flash('请验证你的帐号', 'warning')
  23. return redirect(url_for('user.user', username=current_user.username))
  24. return _is_confirmed
  25. class BaseMethodView(MethodView):
  26. @property
  27. def page_info(self):
  28. page = request.args.get('page', 1, type=int)
  29. if hasattr(self, 'per_page'):
  30. per_page = getattr(self, 'per_page')
  31. else:
  32. per_page = current_app.config.setdefault('PER_PAGE', 20)
  33. number = request.args.get('number', per_page, type=int)
  34. if number > 100:
  35. number = per_page
  36. return page, number
  37. class IsAuthMethodView(BaseMethodView):
  38. decorators = [login_required]
  39. class IsConfirmedMethodView(BaseMethodView):
  40. decorators = [is_confirmed, login_required]