models.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/usr/bin/env python
  2. # -*- coding=UTF-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: models.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-05-20 13:24:19 (CST)
  9. # Last Update:星期六 2016-7-23 20:58:12 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from maple import db
  14. from datetime import datetime
  15. from sqlalchemy.dialects.postgresql import JSON
  16. class Board(db.Model):
  17. __tablename__ = 'boards'
  18. id = db.Column(db.Integer, primary_key=True)
  19. rank = db.Column(db.Integer, default=1)
  20. board = db.Column(db.String(81), nullable=False)
  21. parent_board = db.Column(db.String(81), nullable=False)
  22. description = db.Column(db.Text(), nullable=False)
  23. count_id = db.Column(db.Integer,
  24. db.ForeignKey('counts.id',
  25. ondelete="CASCADE"))
  26. count = db.relationship('Count',
  27. backref="board",
  28. cascade='all,delete-orphan',
  29. single_parent=True,
  30. uselist=False)
  31. __mapper_args__ = {"order_by": rank.desc()}
  32. def __str__(self):
  33. return self.board
  34. def __repr__(self):
  35. return '<Board %r>' % self.board
  36. class Count(db.Model):
  37. __tablename__ = 'counts'
  38. id = db.Column(db.Integer, primary_key=True)
  39. drafts = db.Column(db.Integer, default=0)
  40. collects = db.Column(db.Integer, default=0)
  41. inviteds = db.Column(db.Integer, default=0)
  42. follows = db.Column(db.Integer, default=0)
  43. topics = db.Column(db.Integer, default=0)
  44. all_topics = db.Column(db.Integer, default=0)
  45. def __repr__(self):
  46. return '<Count %r>' % self.id
  47. class Notice(db.Model):
  48. __tablename__ = 'notices'
  49. id = db.Column(db.Integer, primary_key=True)
  50. publish = db.Column(db.DateTime, default=datetime.now())
  51. category = db.Column(db.String(81), nullable=False)
  52. content = db.Column(JSON)
  53. is_read = db.Column(db.Boolean, default=False)
  54. rece_id = db.Column(db.Integer, db.ForeignKey('users.id'))
  55. rece_user = db.relationship("User",
  56. backref="rece_user",
  57. foreign_keys='Notice.rece_id',
  58. uselist=False)
  59. send_id = db.Column(db.Integer, db.ForeignKey('users.id'))
  60. send_user = db.relationship("User",
  61. backref="send_user",
  62. foreign_keys='Notice.send_id',
  63. uselist=False)
  64. def __repr__(self):
  65. return '<Notice %r>' % self.id