models.py 940 B

12345678910111213141516171819202122232425262728293031323334353637
  1. from sqlalchemy.ext.hybrid import hybrid_property
  2. from flask.ext.login import UserMixin
  3. from app import db, bcrypt
  4. class User(db.Model, UserMixin):
  5. ''' A user who has an account on the website. '''
  6. __tablename__ = 'users'
  7. first_name = db.Column(db.String)
  8. last_name = db.Column(db.String)
  9. phone = db.Column(db.String)
  10. email = db.Column(db.String, primary_key=True)
  11. confirmation = db.Column(db.Boolean)
  12. _password = db.Column(db.String)
  13. @property
  14. def full_name(self):
  15. return '{} {}'.format(self.first_name, self.last_name)
  16. @hybrid_property
  17. def password(self):
  18. return self._password
  19. @password.setter
  20. def _set_password(self, plaintext):
  21. self._password = bcrypt.generate_password_hash(plaintext)
  22. def check_password(self, plaintext):
  23. return bcrypt.check_password_hash(self.password, plaintext)
  24. def get_id(self):
  25. return self.email