]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/models/action.py
Hides that ugly text on answer form for the moment.
[osqa.git] / forum / models / action.py
index ca6b96e227203b8aa74d3fe4140e951a819a07de..c951a58038c51e97acb75ef7192dad2d55ae499a 100644 (file)
@@ -15,8 +15,13 @@ class ActionQuerySet(CachedQuerySet):
         else:
             return super(ActionQuerySet, self).obj_from_datadict(datadict)
 
         else:
             return super(ActionQuerySet, self).obj_from_datadict(datadict)
 
-    def get(self, *args, **kwargs):
-        return super(ActionQuerySet, self).get(*args, **kwargs).leaf()
+    def get(self, *args, **kwargs):            
+        action = super(ActionQuerySet, self).get(*args, **kwargs).leaf()
+
+        if not isinstance(action, self.model):
+            raise self.model.DoesNotExist()
+
+        return action
 
 class ActionManager(CachedManager):
     use_for_related_fields = True
 
 class ActionManager(CachedManager):
     use_for_related_fields = True
@@ -111,7 +116,7 @@ class Action(BaseModel):
     def get_type(cls):
         return re.sub(r'action$', '', cls.__name__.lower())
 
     def get_type(cls):
         return re.sub(r'action$', '', cls.__name__.lower())
 
-    def save(self, data=None, *args, **kwargs):
+    def save(self, data=None, threaded=True, *args, **kwargs):
         isnew = False
 
         if not self.id:
         isnew = False
 
         if not self.id:
@@ -127,7 +132,7 @@ class Action(BaseModel):
             if (self.node is None) or (not self.node.nis.wiki):
                 self.repute_users()
             self.process_action()
             if (self.node is None) or (not self.node.nis.wiki):
                 self.repute_users()
             self.process_action()
-            self.trigger_hooks(True)
+            self.trigger_hooks(threaded, True)
 
         return self
 
 
         return self
 
@@ -167,15 +172,18 @@ class Action(BaseModel):
 
         Action.hooks[cls].append(fn)
 
 
         Action.hooks[cls].append(fn)
 
-    def trigger_hooks(self, new=True):
-        thread = Thread(target=trigger_hooks_threaded, args=[self, Action.hooks, new])
-        thread.setDaemon(True)
-        thread.start()
+    def trigger_hooks(self, threaded, new=True):
+        if threaded:
+            thread = Thread(target=trigger_hooks, args=[self, Action.hooks, new])
+            thread.setDaemon(True)
+            thread.start()
+        else:
+            trigger_hooks(self, Action.hooks, new)
 
     class Meta:
         app_label = 'forum'
 
 
     class Meta:
         app_label = 'forum'
 
-def trigger_hooks_threaded(action, hooks, new):
+def trigger_hooks(action, hooks, new):
     for cls, hooklist in hooks.items():
         if isinstance(action, cls):
             for hook in hooklist:
     for cls, hooklist in hooks.items():
         if isinstance(action, cls):
             for hook in hooklist: