]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/models/node.py
install new pg fts triggers after migrations
[osqa.git] / forum / models / node.py
index 530981beee4087d131de6d63255ae6724b1f1d34..552944e69a15e5db69dd89b49129831d5f5d6213 100644 (file)
@@ -83,6 +83,7 @@ class Node(BaseModel, NodeContent, DeletableContent):
 \r
     node_type            = models.CharField(max_length=16, default='node')\r
     parent               = models.ForeignKey('Node', related_name='children', null=True)\r
+    abs_parent           = models.ForeignKey('Node', related_name='all_children', null=True)\r
 \r
     added_at             = models.DateTimeField(default=datetime.datetime.now)\r
 \r
@@ -104,6 +105,13 @@ class Node(BaseModel, NodeContent, DeletableContent):
     def leaf(self):\r
         return NodeMetaClass.types[self.node_type].objects.get(id=self.id)\r
 \r
+    @property    \r
+    def absolute_parent(self):\r
+        if not self.abs_parent_id:\r
+            return self.leaf\r
+\r
+        return self.abs_parent.leaf\r
+\r
     @property\r
     def summary(self):\r
         return strip_tags(self.html)[:300]\r
@@ -179,6 +187,9 @@ class Node(BaseModel, NodeContent, DeletableContent):
     def save(self, *args, **kwargs):\r
         if not self.id:\r
             self.node_type = self.__class__.__name__.lower()\r
+\r
+        if self.parent_id and not self.abs_parent_id:\r
+            self.abs_parent = self.parent.absolute_parent\r
             \r
         tags = self.get_tag_list_if_changed()\r
         super(Node, self).save(*args, **kwargs)\r