X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/076007f066cf39f55b375900c2e7d14692182932..d0a422f6749091582d3f4b94e7fda9869b9ed4e4:/forum/models/node.py?ds=sidebyside diff --git a/forum/models/node.py b/forum/models/node.py index 75b3933..6d8a483 100644 --- a/forum/models/node.py +++ b/forum/models/node.py @@ -25,7 +25,13 @@ class NodeContent(models.Model): @classmethod def _as_markdown(cls, content, *extensions): - return mark_safe(sanitize_html(markdown.markdown(content, extensions=extensions))) + try: + return mark_safe(sanitize_html(markdown.markdown(content, extensions=extensions))) + except Exception, e: + import traceback + logging.error("Caught exception %s in markdown parser rendering %s %s:\s %s" % ( + str(e), cls.__name__, str(e), traceback.format_exc())) + return '' def as_markdown(self, *extensions): return self._as_markdown(self.body, *extensions) @@ -106,6 +112,9 @@ class NodeQuerySet(CachedQuerySet): apply_bool = lambda q, b: b and q or ~q return self.filter(*[apply_bool(models.Q(state_string__contains="(%s)" % s), b) for s, b in kwargs.items()]) + def children_count(self, child_type): + return NodeMetaClass.types[child_type].objects.filter_state(deleted=False).filter(parent__in=self).count() + class NodeManager(CachedManager): use_for_related_fields = True