models.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #*************************************************************************
  2. # Copyright © 2015 JiangLin. All rights reserved.
  3. # File Name: articledb.py
  4. # Author:JiangLin
  5. # Mail:xiyang0807@gmail.com
  6. # Created Time: 2015-11-29 02:07:53
  7. #*************************************************************************
  8. #!/usr/bin/env python
  9. # -*- coding=UTF-8 -*-
  10. from maple import db
  11. from datetime import datetime
  12. from flask_login import current_user
  13. class UserGroup(db.Model):
  14. __tablename__ = 'usergroups'
  15. id = db.Column(db.Integer, primary_key=True)
  16. user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
  17. group_id = db.Column(db.Integer, db.ForeignKey('groups.id'))
  18. join_time = db.Column(db.DateTime, default=datetime.now(), nullable=False)
  19. @staticmethod
  20. def load_join_time(uid, gid):
  21. time = UserGroup.query.filter_by(user_id=uid,
  22. group_id=gid).first_or_404()
  23. return time
  24. class Group(db.Model):
  25. '''
  26. join_mode:
  27. 1:allow anybody
  28. 2:need validata
  29. 3:not allow anybody
  30. '''
  31. __tablename__ = 'groups'
  32. id = db.Column(db.Integer, primary_key=True)
  33. name = db.Column(db.String, nullable=False)
  34. kind = db.Column(db.String, nullable=False)
  35. join_mode = db.Column(db.Integer, nullable=False, default=2)
  36. create_time = db.Column(db.DateTime, nullable=False)
  37. create_author = db.Column(db.String, nullable=False)
  38. admin = db.Column(db.String, nullable=False)
  39. introduce = db.Column(db.Text, nullable=False)
  40. permission = db.Column(db.Integer,nullable=False,default=1)
  41. users = db.relationship('User',
  42. secondary='usergroups',
  43. backref=db.backref('groups',
  44. lazy='dynamic'))
  45. count_id = db.Column(db.Integer,
  46. db.ForeignKey('counts.id',
  47. ondelete="CASCADE"))
  48. count = db.relationship("Counts",
  49. backref="group",
  50. cascade='all,delete-orphan',
  51. single_parent=True,
  52. uselist=False)
  53. def __init__(self, kind, name, introduce):
  54. self.kind = kind
  55. self.name = name
  56. self.introduce = introduce
  57. self.create_time = datetime.now()
  58. self.create_author = current_user.name
  59. self.admin = self.create_author
  60. def __repr__(self):
  61. return "<Group %r>" % self.name
  62. @staticmethod
  63. def load_all():
  64. return Group.query.all()
  65. @staticmethod
  66. def load_by_id(uid):
  67. return Group.query.filter_by(id=uid).first_or_404()
  68. @staticmethod
  69. def load_by_kind(kind):
  70. return Group.query.filter_by(kind=kind).all()
  71. @staticmethod
  72. def load_by_name(name):
  73. return Group.query.filter_by(name=name).first_or_404()
  74. class Message(db.Model):
  75. '''消息提醒功能设计'''
  76. __tablename__ = 'messages'
  77. id = db.Column(db.Integer, primary_key=True)
  78. send_user = db.Column(db.String, nullable=False)
  79. rece_user = db.Column(db.String, nullable=False)
  80. kind = db.Column(db.String, nullable=False)
  81. content = db.Column(db.Text, nullable=True)
  82. reply_id = db.Column(db.Integer,
  83. db.ForeignKey('replies.id',
  84. ondelete="CASCADE"))
  85. reply = db.relationship("Replies",
  86. backref="message",
  87. cascade='all,delete-orphan',
  88. single_parent=True,
  89. uselist=False)
  90. question_id = db.Column(db.Integer,
  91. db.ForeignKey('questions.id',
  92. ondelete="CASCADE"))
  93. question = db.relationship("Questions",
  94. backref="message",
  95. cascade='all,delete-orphan',
  96. single_parent=True,
  97. uselist=False)
  98. create_time = db.Column(db.DateTime, nullable=False)
  99. is_read = db.Column(db.Boolean, nullable=False, default=False)
  100. count = db.Column(db.Integer, nullable=False, default=0)
  101. __mapper_args__ = {"order_by": create_time.desc()}
  102. def __init__(self, send_user, rece_user, content, kind):
  103. self.send_user = send_user
  104. self.rece_user = rece_user
  105. self.content = content
  106. self.kind = kind
  107. self.create_time = datetime.now()
  108. def __repr__(self):
  109. return "<Message %r>" % self.id
  110. class Counts(db.Model):
  111. __tablename__ = 'counts'
  112. id = db.Column(db.Integer, primary_key=True)
  113. topic = db.Column(db.Integer, nullable=False, default=0)
  114. all_topic = db.Column(db.Integer, nullable=False, default=0)