12345678910111213141516171819202122232425262728293031323334353637383940 |
- from django.db.models import F
- from misago.threads.posting import PostingMiddleware, START, REPLY, EDIT
- class UpdateStatsMiddleware(PostingMiddleware):
- def save(self, form):
- self.update_thread()
- self.update_forum()
- self.update_user()
- def update_forum(self):
- if self.mode == START:
- self.forum.threads = F('threads') + 1
- if self.mode != EDIT:
- self.forum.set_last_thread(self.thread)
- self.forum.posts = F('posts') + 1
- self.forum.update_all = True
- def update_thread(self):
- if self.mode == START:
- self.thread.set_first_post(self.post)
- if self.mode != EDIT:
- self.thread.set_last_post(self.post)
- if self.mode == REPLY:
- self.thread.replies = F('replies') + 1
- self.thread.update_all = True
- def update_user(self):
- if self.mode == START:
- self.user.threads = F('threads') + 1
- self.user.update_fields.append('threads')
- if self.mode != EDIT:
- self.user.posts = F('posts') + 1
- self.user.update_fields.append('posts')
|