events.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/usr/bin/env python
  2. # -*- coding=UTF-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: events.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-07-24 16:05:57 (CST)
  9. # Last Update:星期日 2016-7-24 16:41:29 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from maple import db
  14. from sqlalchemy import event
  15. from .models import User, Role
  16. __all__ = ['add_role_after_confirm', 'add_role_after_super']
  17. @event.listens_for(User.is_confirmed, 'set')
  18. def add_role_after_confirm(target, value, oldvalue, initiator):
  19. role = Role.query.filter_by(name='confirmed').first()
  20. if not role:
  21. role = Role()
  22. role.name = 'confirmed'
  23. role.description = 'confirmed'
  24. db.session.add(role)
  25. db.session.commit()
  26. if value and role not in target.roles:
  27. target.roles.append(role)
  28. if not value and role in target.roles:
  29. target.roles.remove(role)
  30. @event.listens_for(User.is_superuser, 'set')
  31. def add_role_after_super(target, value, oldvalue, initiator):
  32. role = Role.query.filter_by(name='super').first()
  33. if not role:
  34. role = Role()
  35. role.name = 'super'
  36. role.description = 'super'
  37. db.session.add(role)
  38. db.session.commit()
  39. if value and role not in target.roles:
  40. target.roles.append(role)
  41. if not value and role in target.roles:
  42. target.roles.remove(role)