Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
 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
Esempio n. 4
0
 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
Esempio n. 5
0
 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
Esempio n. 6
0
 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)
Esempio n. 9
0
    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