\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
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
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