Browse Source

Expose parsing results to other middlewares

Rafał Pitoń 11 years ago
parent
commit
a07e4c6d39
2 changed files with 17 additions and 1 deletions
  1. 4 1
      misago/threads/forms/posting.py
  2. 13 0
      misago/threads/forms/reply.py

+ 4 - 1
misago/threads/forms/posting.py

@@ -49,7 +49,10 @@ class EditorFormset(object):
 
     def _load_middlewares(self):
         kwargs = self.kwargs.copy()
-        kwargs['datetime'] = self.datetime
+        kwargs.update({
+            'datetime': self.datetime,
+            'parsing_result': {},
+        })
 
         for middleware in settings.MISAGO_POSTING_MIDDLEWARE:
             module_name = '.'.join(middleware.split('.')[:-1])

+ 13 - 0
misago/threads/forms/reply.py

@@ -1,3 +1,4 @@
+from django.db.models import F
 from django.utils.translation import ugettext_lazy as _, ungettext
 
 from misago.conf import settings
@@ -139,6 +140,9 @@ class ReplyFormMiddleware(EditorFormsetMiddleware):
         form.post_editor = Editor(form['post'])
         return form
 
+    def pre_save(self, form):
+        self.parsing_result.update(form.parsing_result)
+
     def save(self, form):
         if self.mode == START:
             self.thread.set_title(form.cleaned_data['title'])
@@ -175,7 +179,16 @@ class ReplyFormMiddleware(EditorFormsetMiddleware):
             self.thread.replies += 1
         self.thread.save()
 
+        # update forum
         if self.mode != EDIT:
             self.forum.set_last_thread(self.thread)
             self.forum.posts += 1
             self.forum.save()
+
+        # update poster
+        if self.mode == START:
+            self.user.threads = F('threads') + 1
+
+        if self.mode != EDIT:
+            self.user.posts = F('posts') + 1
+        user.user.save(update_fields=['threads', 'posts'])