]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/actions/meta.py
Some improvements in cache.
[osqa.git] / forum / actions / meta.py
index c92d8992501abbde75bb58ce95fdf336e99987db..7c951101f8954885e1ed811b3561b65d47142d87 100644 (file)
@@ -2,7 +2,7 @@ from django.utils.translation import ugettext as _
 from django.db.models import F\r
 from forum.models.action import ActionProxy, DummyActionProxy\r
 from forum.models import Vote, Flag\r
-import settings\r
+from forum import settings\r
 \r
 class VoteAction(ActionProxy):\r
     def update_node_score(self, inc):\r
@@ -27,6 +27,14 @@ class VoteAction(ActionProxy):
         except:\r
             return None\r
 \r
+    @classmethod\r
+    def get_action_for(cls, user, node):\r
+        try:\r
+            vote = Vote.objects.get(user=user, node=node)\r
+            return vote.action\r
+        except:\r
+            return None\r
+\r
     def describe_vote(self, vote_desc, viewer=None):\r
         return _("%(user)s %(vote_desc)s %(post_desc)s") % {\r
             'user': self.hyperlink(self.user.get_profile_url(), self.friendly_username(viewer, self.user)),\r
@@ -171,23 +179,21 @@ class FavoriteAction(ActionProxy):
 \r
 class DeleteAction(ActionProxy):\r
     def process_action(self):\r
-        self.node.deleted = self\r
-        self.node.save()\r
+        self.node.mark_deleted(self)\r
         \r
         if self.node.node_type == "answer":\r
             self.node.question.reset_answer_count_cache()\r
 \r
     def cancel_action(self):\r
-        self.node.deleted = None\r
-        self.node.save()\r
+        self.node.mark_deleted(None)\r
 \r
         if self.node.node_type == "answer":\r
             self.node.question.reset_answer_count_cache()\r
 \r
     def describe(self, viewer=None):\r
-        return _("%(user)s deleted %(post_desc)s: %(reason)s") % {\r
+        return _("%(user)s deleted %(post_desc)s") % {\r
             'user': self.hyperlink(self.user.get_profile_url(), self.friendly_username(viewer, self.user)),\r
-            'post_desc': self.describe_node(viewer, self.node), 'reason': self.reason(),\r
+            'post_desc': self.describe_node(viewer, self.node)\r
         }\r
 \r
     def reason(self):\r
@@ -196,6 +202,9 @@ class DeleteAction(ActionProxy):
         else:\r
             return _("flagged by multiple users: ") + "; ".join([f.extra for f in FlagAction.objects.filter(node=self.node)])\r
 \r
+class UnknownAction(ActionProxy):\r
+    pass\r
+\r
 \r
 class QuestionViewAction(DummyActionProxy):\r
     def __init__(self, node, user, ip=None):\r