]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/models/node.py
Some fixes in custom pages logic.
[osqa.git] / forum / models / node.py
index f2086fc03d1cf3e212eeba38b69d40e3023e3a34..b0f53612493f57952ba91fc9bfa653e3fd46f6ae 100644 (file)
@@ -7,6 +7,7 @@ from django.utils.translation import ugettext as _
 from django.utils.safestring import mark_safe
 from django.utils.html import strip_tags
 from forum.utils.html import sanitize_html
+from utils import PickledObjectField
 
 class NodeContent(models.Model):
     title      = models.CharField(max_length=300)
@@ -22,8 +23,12 @@ class NodeContent(models.Model):
     def html(self):
         return self.as_markdown()
 
+    @classmethod
+    def _as_markdown(cls, content, *extensions):
+        return mark_safe(sanitize_html(markdown.markdown(content, extensions=extensions)))
+
     def as_markdown(self, *extensions):
-        return mark_safe(sanitize_html(markdown.markdown(self.body, extensions=extensions)))
+        return self._as_markdown(self.body, *extensions)
 
     @property
     def headline(self):
@@ -186,6 +191,7 @@ class Node(BaseModel, NodeContent):
     tags                 = models.ManyToManyField('Tag', related_name='%(class)ss')
     active_revision       = models.OneToOneField('NodeRevision', related_name='active', null=True)
 
+    extra = PickledObjectField()
     extra_ref = models.ForeignKey('Node', null=True)
     extra_count = models.IntegerField(default=0)
 
@@ -202,8 +208,8 @@ class Node(BaseModel, NodeContent):
         return self.headline
 
     @classmethod
-    def cache_key(cls, pk):
-        return '%s:node:%s' % (settings.APP_URL, pk)
+    def _generate_cache_key(cls, key, group="node"):
+        return super(Node, cls)._generate_cache_key(key, group)
 
     @classmethod
     def get_type(cls):