]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/actions/node.py
#OSQA-581, resetting the answer count cache after the comment has been converted...
[osqa.git] / forum / actions / node.py
index 530c649299809992a20249661e40a8e06b1df228..53699e967d1e91f83673274d9e28502667bdb5d7 100644 (file)
@@ -189,6 +189,8 @@ class CommentToAnswerAction(ActionProxy):
         self.node.last_edited = self\r
         self.node.update_last_activity(self.user, save=True)\r
 \r
+        # Now updated the cached data\r
+        question.reset_answer_count_cache()\r
 \r
     def describe(self, viewer=None):\r
         return _("%(user)s converted comment on %(question)s into an answer") % {\r
@@ -196,21 +198,29 @@ class CommentToAnswerAction(ActionProxy):
             'question': self.describe_node(viewer, self.node.abs_parent),\r
         }\r
 \r
-class AnswerToQuestionAction(ActionProxy):\r
+class AnswerToQuestionAction(NodeEditAction):\r
     verb = _("converted to question")\r
 \r
-    def process_data(self, title):\r
+    def process_data(self,  **data):\r
+        revision_data = self.create_revision_data(**data)\r
+        revision = self.node.create_revision(self.user, **revision_data)\r
+\r
+        original_question = self.node.question\r
+\r
+        self.extra = {\r
+            'covert_revision': revision.revision,\r
+            'original_question': original_question\r
+        }\r
+\r
         self.node.node_type = "question"\r
-        self.node.title = title\r
-        self.node.active_revision.title = title\r
-        self.node.active_revision.save()\r
-        self.node.last_edited = self\r
-        self.node.update_last_activity(self.user, save=True)\r
+        self.node.parent = None\r
+        self.node.abs_parent = None\r
 \r
-        try:\r
-            self.node.abs_parent.reset_answer_count_cache()\r
-        except AttributeError:\r
-            pass\r
+        original_question.reset_answer_count_cache()\r
+\r
+    def process_action(self):\r
+        self.node.last_edited = self\r
+        self.node.save()\r
 \r
 \r
     def describe(self, viewer=None):\r