comment.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from collections import namedtuple
  2. from datetime import datetime
  3. from sql.comment import read_comment_list, create_comment, get_user_comment_count, delete_comment, read_comment
  4. import object.user
  5. import object.blog
  6. def load_comment_list(blog_id: int):
  7. ret = []
  8. for i in read_comment_list(blog_id):
  9. ret.append(Comment(i))
  10. return ret
  11. class _Comment:
  12. comment_tuple = namedtuple("Comment", "blog email content update_time")
  13. @staticmethod
  14. def get_user_comment_count(auth: "object.user"):
  15. return get_user_comment_count(auth.id)
  16. @staticmethod
  17. def create(blog: "object.blog.BlogArticle", auth: "object.user.User", content):
  18. return create_comment(blog.id, auth.id, content)
  19. class Comment(_Comment):
  20. def __init__(self, comment_id):
  21. self.id = comment_id
  22. @property
  23. def info(self):
  24. return Comment.comment_tuple(*read_comment(self.id))
  25. @property
  26. def blog(self):
  27. return object.blog.BlogArticle(self.info.blog)
  28. @property
  29. def auth(self):
  30. return object.user.User(self.info.email)
  31. @property
  32. def content(self):
  33. return self.info.content
  34. @property
  35. def update_time(self):
  36. return datetime.utcfromtimestamp(datetime.timestamp(self.info.update_time))
  37. def is_delete(self):
  38. return not self.auth.is_authenticated and self.blog.is_delete and len(self.content) != 0
  39. def delete(self):
  40. return delete_comment(self.id)