]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/models/node.py
fixed some unclosed <ul>s and <a>s
[osqa.git] / forum / models / node.py
index 6f4e12b0429823bb4abad4d6243e18356e882c33..4be2a00557c21fca3a83c0b3217c90a9f9b7dc29 100644 (file)
@@ -79,13 +79,17 @@ class NodeMetaClass(BaseMetaClass):
 \r
 \r
 class NodeQuerySet(CachedQuerySet):\r
 \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
 \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
 \r
 class NodeManager(CachedManager):\r
@@ -140,7 +144,7 @@ class Node(BaseModel, NodeContent):
 \r
     @classmethod\r
     def cache_key(cls, pk):\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
 \r
     @classmethod\r
     def get_type(cls):\r
@@ -209,8 +213,8 @@ class Node(BaseModel, NodeContent):
         if not 'tagnames' in dirty:\r
             return None\r
         else:\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
             else:\r
                 old_tags = set()\r
             new_tags = set(name for name in self.tagnames.split(u' ') if name)\r
@@ -269,6 +273,8 @@ class Node(BaseModel, NodeContent):
                 tag.save()\r
 \r
     def save(self, *args, **kwargs):\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 not self.id:\r
             self.node_type = self.get_type()\r
             super(BaseModel, self).save(*args, **kwargs)\r
@@ -278,8 +284,6 @@ class Node(BaseModel, NodeContent):
         if self.parent_id and not self.abs_parent_id:\r
             self.abs_parent = self.parent.absolute_parent\r
 \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
         super(Node, self).save(*args, **kwargs)\r
         if tags_changed: self.tags = list(Tag.objects.filter(name__in=self.tagname_list()))\r
 \r