def item_description(self, post): key = 'blog_feed:%d' % post.id summary = cache.get(key) if summary is None: summary = FeedMath.convert(markdown(post.summary or post.content, 'blog')) cache.set(key, summary, 86400) return summary
def item_description(self, comment): key = 'comment_feed:%d' % comment.id desc = cache.get(key) if desc is None: desc = FeedMath.convert(markdown(comment.body, 'comment')) cache.set(key, desc, 86400) return desc
def item_description(self, problem): key = 'problem_feed:%d' % problem.id desc = cache.get(key) if desc is None: desc = FeedMath.convert(markdown(problem.description, 'problem'))[:500] + '...' cache.set(key, desc, 86400) return desc
def item_description(self, problem): key = 'problem_feed:%d' % problem.id desc = cache.get(key) if desc is None: desc = unicode(FeedMath.convert(markdown(problem.description, 'problem'))[:500] + '...') cache.set(key, desc, 86400) return desc
def item_description(self, post): key = 'blog_feed:%d' % post.id summary = cache.get(key) if summary is None: summary = unicode(latex_math(FeedMath.convert(markdown(post.summary or post.content, 'blog')))) cache.set(key, summary, 86400) return summary
def render(self, context): value = self.nodelist.render(context) try: return mark_safe(markdown_trois.markdown(value, self.style)) except ImportError: if settings.DEBUG: raise template.TemplateSyntaxError("Error in `markdown` tag: " "The python-markdown2 library isn't installed.") return force_unicode(value)
def markdown_filter(value, style="default"): """Processes the given value as Markdown, optionally using a particular Markdown style/config Syntax:: {{ value|markdown }} {# uses the "default" style #} {{ value|markdown:"mystyle" }} Markdown "styles" are defined by the `MARKDOWN_TROIS_STYLES` setting. """ try: return mark_safe(markdown_trois.markdown(value, style)) except ImportError: if settings.DEBUG: raise template.TemplateSyntaxError("Error in `markdown` filter: " "The python-markdown2 library isn't installed.") return force_unicode(value)
def get_context_data(self, **kwargs): context = super(ContestDetail, self).get_context_data(**kwargs) if self.request.user.is_authenticated(): profile = self.request.user.profile in_contest = context['in_contest'] = ( profile.current_contest is not None and profile.current_contest.contest == self.object) if in_contest: context['participation'] = profile.current_contest context['participating'] = True else: try: context['participation'] = profile.contest_history.get( contest=self.object, virtual=0) except ContestParticipation.DoesNotExist: context['participating'] = False context['participation'] = None else: context['participating'] = True else: context['participating'] = False context['participation'] = None context['in_contest'] = False context['now'] = timezone.now() if not self.object.og_image or not self.object.summary: meta_key = 'generated-meta:%d' % self.object.id metadata = cache.get(meta_key) if metadata is None: description = None tree = HTMLTreeString( markdown(self.object.description, 'contest')).tree for p in tree.iterfind('p'): text = p.text_content().strip() if text: description = text break img = tree.xpath('.//img') metadata = description, img[0].get('src') if img else None cache.set(meta_key, metadata, 86400) context['meta_description'] = self.object.summary or metadata[0] context['og_image'] = self.object.og_image or metadata[1] return context