models.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. """Models"""
  2. from datetime import datetime
  3. from sqlalchemy.ext.hybrid import hybrid_property, hybrid_method
  4. from app import db
  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(db.String)
  11. name = db.Column(db.String)
  12. registration_at = db.Column(db.DateTime, default=datetime.utcnow)
  13. def __init__(self, id=None):
  14. self.id = id
  15. @hybrid_property
  16. def key_count(self):
  17. """Return amount of keys"""
  18. return self.keys.count()
  19. class Key(db.Model):
  20. """Model for Key """
  21. id = db.Column(db.Integer, primary_key=True)
  22. key = db.Column(db.String, nullable=True)
  23. created_at = db.Column(db.DateTime, default=datetime.utcnow)
  24. expire_at = db.Column(db.DateTime)
  25. active = db.Column(db.Boolean, default=False)
  26. used_at = db.Column(db.DateTime)
  27. uses = db.Column(db.Integer, default=0)
  28. user_id = db.Column(
  29. db.Integer,
  30. db.ForeignKey('user.id')
  31. )
  32. user = db.relationship(
  33. "User",
  34. back_populates="keys"
  35. )
  36. @hybrid_method
  37. def key_count(self):
  38. """increment use"""
  39. self.used_at = datetime.now()
  40. self.uses += 1
  41. return self.keys.count()
  42. class Request(db.Model):
  43. """Model for function"""
  44. id = db.Column(db.Integer, primary_key=True)
  45. name = db.Column(db.String)
  46. class Log(db.Model):
  47. """Model for Key """
  48. id = db.Column(db.Integer, primary_key=True)
  49. succes = db.Column(db.Boolean, default=False)
  50. date_time = db.Column(db.DateTime)
  51. key_id = db.Column(
  52. db.Integer,
  53. db.ForeignKey('key.id')
  54. )
  55. key = db.relationship(
  56. "Key",
  57. back_populates="logs"
  58. )
  59. request_id = db.Column(
  60. db.Integer,
  61. db.ForeignKey('request.id')
  62. )
  63. request = db.relationship(
  64. "Request",
  65. back_populates="logs"
  66. )