X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/58f020d4fab8251103edb89bfc4cf5d5d389d1ad..7fb8c8c21019faafda291a9c1df9b86c3d08b568:/forum/models/node.py diff --git a/forum/models/node.py b/forum/models/node.py index f2086fc..b0f5361 100644 --- a/forum/models/node.py +++ b/forum/models/node.py @@ -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):