\r
\r
class NodeQuerySet(CachedQuerySet):\r
- def get(self, *args, **kwargs):\r
- node = super(NodeQuerySet, self).get(*args, **kwargs)\r
- cls = NodeMetaClass.types.get(node.node_type, None)\r
+ def obj_from_datadict(self, datadict):\r
+ cls = NodeMetaClass.types.get(datadict.get("node_type", ""), None)\r
+ if cls:\r
+ obj = cls()\r
+ obj.__dict__.update(datadict)\r
+ return obj\r
+ else:\r
+ return super(NodeQuerySet, self).obj_from_datadict(datadict)\r
\r
- if cls and (node.__class__ is not cls):\r
- return node.leaf\r
- return node\r
+ def get(self, *args, **kwargs):\r
+ return super(NodeQuerySet, self).get(*args, **kwargs).leaf\r
\r
\r
class NodeManager(CachedManager):\r
\r
@classmethod\r
def cache_key(cls, pk):\r
- return '%s.node:%s' % (settings.APP_URL, pk)\r
+ return '%s:node:%s' % (settings.APP_URL, pk)\r
\r
@classmethod\r
def get_type(cls):\r
if not 'tagnames' in dirty:\r
return None\r
else:\r
- if dirty['tagnames']:\r
- old_tags = set(name for name in dirty['tagnames'].split(u' '))\r
+ if self._original_state['tagnames']:\r
+ old_tags = set(name for name in self._original_state['tagnames'].split(u' '))\r
else:\r
old_tags = set()\r
new_tags = set(name for name in self.tagnames.split(u' ') if name)\r
tag.save()\r
\r
def save(self, *args, **kwargs):\r
+ tags_changed = self._process_changes_in_tags()\r
+ \r
if not self.id:\r
self.node_type = self.get_type()\r
super(BaseModel, self).save(*args, **kwargs)\r
if self.parent_id and not self.abs_parent_id:\r
self.abs_parent = self.parent.absolute_parent\r
\r
- tags_changed = self._process_changes_in_tags()\r
-\r
super(Node, self).save(*args, **kwargs)\r
if tags_changed: self.tags = list(Tag.objects.filter(name__in=self.tagname_list()))\r
\r