updatestats.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django.db.models import F
  2. from misago.threads.posting import PostingMiddleware, START, REPLY, EDIT
  3. class UpdateStatsMiddleware(PostingMiddleware):
  4. def save(self, form):
  5. self.update_thread()
  6. self.update_forum()
  7. self.update_user()
  8. def update_forum(self):
  9. if self.mode == START:
  10. self.forum.threads += F('threads') + 1
  11. if self.mode != EDIT:
  12. self.forum.set_last_thread(self.thread)
  13. self.forum.posts += F('posts') + 1
  14. self.forum.update_all = True
  15. def update_thread(self):
  16. if self.mode == START:
  17. self.thread.set_first_post(self.post)
  18. if self.mode != EDIT:
  19. self.thread.set_last_post(self.post)
  20. if self.mode == REPLY:
  21. self.thread.replies += F('replies') + 1
  22. self.thread.update_all = True
  23. def update_user(self):
  24. if self.mode == START:
  25. self.user.threads = F('threads') + 1
  26. self.user.update_fields.append('threads')
  27. if self.mode != EDIT:
  28. self.user.posts = F('posts') + 1
  29. self.user.update_fields.append('posts')