models.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. # -*- coding: utf-8 -*-
  2. """
  3. flaskbb.pms.models
  4. ~~~~~~~~~~~~~~~~~~~~
  5. This module provides the appropriate models for the pm views.
  6. :copyright: (c) 2013 by the FlaskBB Team.
  7. :license: BSD, see LICENSE for more details.
  8. """
  9. from datetime import datetime
  10. from flaskbb.extensions import db
  11. class PrivateMessage(db.Model):
  12. __tablename__ = "privatemessages"
  13. id = db.Column(db.Integer, primary_key=True)
  14. user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
  15. from_user_id = db.Column(db.Integer, db.ForeignKey("users.id"))
  16. to_user_id = db.Column(db.Integer, db.ForeignKey("users.id"))
  17. subject = db.Column(db.String)
  18. message = db.Column(db.Text)
  19. date_created = db.Column(db.DateTime, default=datetime.utcnow())
  20. trash = db.Column(db.Boolean, nullable=False, default=False)
  21. draft = db.Column(db.Boolean, nullable=False, default=False)
  22. unread = db.Column(db.Boolean, nullable=False, default=True)
  23. user = db.relationship("User", backref="pms", lazy="joined",
  24. foreign_keys=[user_id])
  25. from_user = db.relationship("User", lazy="joined",
  26. foreign_keys=[from_user_id])
  27. to_user = db.relationship("User", lazy="joined", foreign_keys=[to_user_id])
  28. def save(self, from_user=None, to_user=None, user_id=None, draft=False):
  29. if self.id:
  30. db.session.add(self)
  31. db.session.commit()
  32. return self
  33. if draft:
  34. self.draft = True
  35. # Add the message to the user's pm box
  36. self.user_id = user_id
  37. self.from_user_id = from_user
  38. self.to_user_id = to_user
  39. db.session.add(self)
  40. db.session.commit()
  41. return self
  42. def delete(self):
  43. db.session.delete(self)
  44. db.session.commit()
  45. return self