models.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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-6-30 21:28:54 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from maple import db
  14. from datetime import datetime
  15. from sqlalchemy.dialects.postgresql import JSON
  16. # from sqlalchemy.types import JSON
  17. class Board(db.Model):
  18. __tablename__ = 'boards'
  19. id = db.Column(db.Integer, primary_key=True)
  20. rank = db.Column(db.Integer, default=1)
  21. board = db.Column(db.String(81), nullable=False)
  22. parent_board = db.Column(db.String(81), nullable=False)
  23. description = db.Column(db.Text(), nullable=False)
  24. count_id = db.Column(db.Integer,
  25. db.ForeignKey('counts.id',
  26. ondelete="CASCADE"))
  27. count = db.relationship('Count',
  28. backref="board",
  29. cascade='all,delete-orphan',
  30. single_parent=True,
  31. uselist=False)
  32. __mapper_args__ = {"order_by": rank.desc()}
  33. def __str__(self):
  34. return self.board
  35. def __repr__(self):
  36. return '<Board %r>' % self.board
  37. class Count(db.Model):
  38. __tablename__ = 'counts'
  39. id = db.Column(db.Integer, primary_key=True)
  40. # author_id = db.Column(db.Integer,
  41. # db.ForeignKey('users.id',
  42. # ondelete="CASCADE"))
  43. # author = db.relationship("User",
  44. # backref="counts",
  45. # cascade='all,delete-orphan',
  46. # single_parent=True,
  47. # uselist=False)
  48. drafts = db.Column(db.Integer, default=0)
  49. collects = db.Column(db.Integer, default=0)
  50. inviteds = db.Column(db.Integer, default=0)
  51. follows = db.Column(db.Integer, default=0)
  52. topics = db.Column(db.Integer, default=0)
  53. all_topics = db.Column(db.Integer, default=0)
  54. # board_id = db.Column(db.Integer,
  55. # db.ForeignKey(Board.id,
  56. # ondelete="CASCADE"))
  57. # board = db.relationship(Board,
  58. # backref=db.backref("count", lazy="dynamic"),
  59. # cascade='all,delete-orphan',
  60. # single_parent=True,
  61. # uselist=False)
  62. def __repr__(self):
  63. return '<Count %r>' % self.id
  64. class Notice(db.Model):
  65. __tablename__ = 'notices'
  66. id = db.Column(db.Integer, primary_key=True)
  67. publish = db.Column(db.DateTime, default=datetime.now())
  68. category = db.Column(db.String(81), nullable=False)
  69. content = db.Column(JSON)
  70. is_read = db.Column(db.Boolean, default=False)
  71. rece_id = db.Column(db.Integer, db.ForeignKey('users.id'))
  72. rece_user = db.relationship("User",
  73. backref="rece_user",
  74. foreign_keys='Notice.rece_id',
  75. uselist=False)
  76. send_id = db.Column(db.Integer, db.ForeignKey('users.id'))
  77. send_user = db.relationship("User",
  78. backref="send_user",
  79. foreign_keys='Notice.send_id',
  80. uselist=False)
  81. def __repr__(self):
  82. return '<Notice %r>' % self.id