return auto_user_link(self, self._as_markdown(content, *['auto_linker']))
@classmethod
- def _as_markdown(cls, content, *extensions):
+ def _as_markdown_raw(cls, content, *extensions):
try:
return mark_safe(sanitize_html(markdown.markdown(content, extensions=extensions)))
except Exception, e:
str(e), cls.__name__, str(e), traceback.format_exc()))
return ''
+ # Replace \ with \\ to preserve backslashes during markdown processing
+ @classmethod
+ def _as_markdown(cls, content, *extensions):
+ return cls._as_markdown_raw(content.replace('\\','\\\\'), *extensions)
+
def as_markdown(self, *extensions):
return self._as_markdown(self.body, *extensions)
def tagname_list(self):
if self.tagnames:
- return [name.strip() for name in self.tagnames.split(u' ') if name]
+ return [name.strip() for name in self.tagnames.split() if name]
else:
return []
self.body = self.rendered(revision.body)
self.active_revision = revision
- self.update_last_activity(user)
+
+ # Try getting the previous revision
+ try:
+ prev_revision = NodeRevision.objects.get(node=self, revision=revision.revision-1)
+
+ update_activity = True
+
+ # Do not update the activity if only the tags are changed
+ if prev_revision.title == revision.title and prev_revision.body == revision.body \
+ and prev_revision.tagnames != revision.tagnames and not settings.UPDATE_LATEST_ACTIVITY_ON_TAG_EDIT:
+ update_activity = False
+ except NodeRevision.DoesNotExist:
+ update_activity = True
+ finally:
+ if update_activity:
+ self.update_last_activity(user)
self.save()
super(Node, self).save(*args, **kwargs)
if tags_changed:
- self.tags = list(Tag.objects.filter(name__in=self.tagname_list()))
+ if self.tagnames.strip():
+ self.tags = list(Tag.objects.filter(name__in=self.tagname_list()))
+ else:
+ self.tags = []
class Meta:
app_label = 'forum'