models.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. """Models"""
  2. from datetime import datetime
  3. from sqlalchemy.ext.hybrid import hybrid_property, hybrid_method
  4. from app import db, login_manager, argon2
  5. from flask_login import UserMixin
  6. class User(db.Model, UserMixin):
  7. """Model for User"""
  8. id = db.Column(db.Integer, primary_key=True)
  9. email = db.Column(db.String)
  10. _password = db.Column("password", db.String)
  11. name = db.Column(db.String)
  12. registration_at = db.Column(db.DateTime, default=datetime.utcnow)
  13. @login_manager.user_loader
  14. def load_user(user_id):
  15. return User.query.get(user_id)
  16. @property
  17. def password(self):
  18. """Return the password"""
  19. return self._password
  20. @password.setter
  21. def password(self, password):
  22. """Hash password"""
  23. self._password = argon2.generate_password_hash(password)
  24. def check_password(self, password):
  25. """Check if password is correct"""
  26. return argon2.check_password_hash(self.password, password)
  27. class Key(db.Model):
  28. """Model for Key"""
  29. id = db.Column(db.Integer, primary_key=True)
  30. key = db.Column(db.String, nullable=True)
  31. created_at = db.Column(db.DateTime, default=datetime.utcnow)
  32. expire_at = db.Column(db.DateTime)
  33. active = db.Column(db.Boolean, default=False)
  34. used_at = db.Column(db.DateTime)
  35. uses = db.Column(db.Integer, default=0)
  36. user_id = db.Column(
  37. db.Integer,
  38. db.ForeignKey('user.id')
  39. )
  40. user = db.relationship(
  41. "User",
  42. backref=db.backref("users", lazy="dynamic")
  43. )
  44. class Request(db.Model):
  45. """Model for function"""
  46. id = db.Column(db.Integer, primary_key=True)
  47. name = db.Column(db.String)
  48. class Log(db.Model):
  49. """Model for Log"""
  50. id = db.Column(db.Integer, primary_key=True)
  51. succes = db.Column(db.Boolean, default=False)
  52. date_time = db.Column(db.DateTime)
  53. key_id = db.Column(
  54. db.Integer,
  55. db.ForeignKey('key.id')
  56. )
  57. key = db.relationship(
  58. "Key",
  59. backref=db.backref("logs", lazy="dynamic")
  60. )
  61. request_id = db.Column(
  62. db.Integer,
  63. db.ForeignKey('request.id')
  64. )
  65. request = db.relationship(
  66. "Request",
  67. backref=db.backref("logs", lazy="dynamic")
  68. )