annotate core/mdexts/ssl_images.py @ 917:0365fdbb4d78

Fix app conflict with messages. Django's messages app label conflicts with our messages app. We can't easily rename our label as that will make us rename database tables. Since our app came first we'll just customize Django messages label. For Django 1.7.7 upgrade.
author Brian Neal <bgneal@gmail.com>
date Mon, 06 Apr 2015 20:02:25 -0500
parents f12751259f66
children
rev   line source
bgneal@883 1 """
bgneal@883 2 A python-markdown extension to turn <img> tags with http: source attributes into
bgneal@883 3 <a> tags.
bgneal@883 4 """
bgneal@883 5 from urlparse import urlparse
bgneal@883 6
bgneal@883 7 import markdown
bgneal@883 8
bgneal@883 9
bgneal@883 10 class SslImagesTreeprocessor(markdown.treeprocessors.Treeprocessor):
bgneal@883 11
bgneal@883 12 def run(self, root):
bgneal@883 13 for node in root.iter('img'):
bgneal@883 14 src = node.get('src')
bgneal@883 15 if src:
bgneal@883 16 url = urlparse(src)
bgneal@883 17 if url.scheme == 'http':
bgneal@883 18 node.clear()
bgneal@883 19 node.tag = 'a'
bgneal@883 20 node.text = 'Click for image'
bgneal@883 21 node.set('href', url.geturl())
bgneal@883 22
bgneal@883 23
bgneal@883 24 class SslImagesExtension(markdown.Extension):
bgneal@883 25
bgneal@883 26 def extendMarkdown(self, md, md_globals):
bgneal@883 27 tree_proc = SslImagesTreeprocessor()
bgneal@883 28 md.treeprocessors.add('ssl_images', tree_proc, '>inline')