models.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. user = db.relationship("User", lazy="joined", foreign_keys=[user_id])
  23. from_user = db.relationship("User", lazy="joined", foreign_keys=[from_user_id])
  24. to_user = db.relationship("User", lazy="joined", foreign_keys=[to_user_id])
  25. def save(self, from_user=None, to_user=None, user_id=None, draft=False):
  26. if self.id:
  27. db.session.add(self)
  28. db.session.commit()
  29. return self
  30. if draft:
  31. self.draft = True
  32. # Add the message to the user's pm box
  33. self.user_id=user_id
  34. self.from_user_id=from_user
  35. self.to_user_id=to_user
  36. db.session.add(self)
  37. db.session.commit()
  38. return self
  39. def delete(self):
  40. db.session.delete(self)
  41. db.session.commit()
  42. return self