示例#1
0
def handle_image(elem, context=None):
    # only handle resized images
    do_thumbnail = True
    style = parse_style(elem.attrib.get('style', ''))
    if 'width' not in style or 'height' not in style:
        do_thumbnail = False

    src = desanitize(elem.attrib.get('src', ''))
    if not src.startswith(_files_url):
        return

    if not context or 'page' not in context:
        return

    page = context['page']
    try:
        file = PageFile.objects.get(slug__exact=page.slug,
                                    name__exact=file_url_to_name(src),
                                    region=page.region)
    except PageFile.DoesNotExist:
        return

    if do_thumbnail:
        width = int(style['width'].replace('px', ''))
        height = int(style['height'].replace('px', ''))
        escaped_filename = escape_quotes(file.file.name)
        before = '{%% thumbnail "%s" "%dx%d" as im %%}' % (escaped_filename,
                                                           width, height)
        after = '{% endthumbnail %}'
        # HTML will want to encode {{ }} inside a src / srcset, and we don't
        # want that, so we will just rename it to src_thumb until just before
        # it's output.
        del elem.attrib['src']
        elem.attrib['src_thumb'] = '{{ im.url }}'
        elem.attrib['srcset_thumb'] = ('{{ im.url|resolution:"2x" }} 2x, '
                                       '{{ im.url|resolution:"1.5x" }} 1.5x')
        insert_text_before(before, elem)
        elem.tail = after + (elem.tail or '')
    else:
        elem.attrib['src'] = file.file.url
    info_url = reverse('pages:file-info',
                       kwargs={
                           'region': page.region.slug,
                           'slug': page.pretty_slug,
                           'file': file.name
                       })
    link = etree.Element('a')
    link.attrib['href'] = info_url
    elem.addprevious(link)
    elem.getparent().remove(elem)
    link.append(elem)
    return False
def handle_image(elem, context=None):
    # only handle resized images
    do_thumbnail = True
    style = parse_style(elem.attrib.get('style', ''))
    if 'width' not in style or 'height' not in style:
        do_thumbnail = False

    src = desanitize(elem.attrib.get('src', ''))
    if not src.startswith(_files_url):
        return

    if not context or 'page' not in context:
        return

    page = context['page']
    try:
        file = PageFile.objects.get(
            slug__exact=page.slug,
            name__exact=file_url_to_name(src),
            region=page.region
            )
    except PageFile.DoesNotExist:
        return

    if do_thumbnail:
        width = int(style['width'].replace('px', ''))
        height = int(style['height'].replace('px', ''))
        escaped_filename = escape_quotes(file.file.name)
        before = '{%% thumbnail "%s" "%dx%d" as im %%}' % (escaped_filename,
                                                           width, height)
        after = '{% endthumbnail %}'
        # HTML will want to encode {{ }} inside a src / srcset, and we don't
        # want that, so we will just rename it to src_thumb until just before
        # it's output.
        del elem.attrib['src']
        elem.attrib['src_thumb'] = '{{ im.url }}'
        elem.attrib['srcset_thumb'] = (
            '{{ im.url|resolution:"2x" }} 2x, '
            '{{ im.url|resolution:"1.5x" }} 1.5x')
        insert_text_before(before, elem)
        elem.tail = after + (elem.tail or '')
    else:
        elem.attrib['src'] = file.file.url
    info_url = reverse('pages:file-info',
        kwargs={'region': page.region.slug, 'slug': page.pretty_slug, 'file': file.name})
    link = etree.Element('a')
    link.attrib['href'] = info_url
    elem.addprevious(link)
    elem.getparent().remove(elem)
    link.append(elem)
    return False
示例#3
0
def include_content(elem, plugin_tag, context=None):
    href = elem.attrib["href"]
    args = []
    if "class" in elem.attrib:
        classes = elem.attrib["class"].split()
        args = [c[len("includepage_") :] for c in classes if c.startswith("includepage_")]
    args = ['"%s"' % escape_quotes(href)] + args
    container = etree.Element("div")
    container.attrib["class"] = "included_page_wrapper"
    align = [a for a in args if a in ["left", "right"]]
    if len(align):
        container.attrib["class"] += " includepage_" + align[0]
    style = parse_style(elem.attrib.get("style", ""))
    if "width" in style:
        container.attrib["style"] = "width: " + style["width"] + ";"
    tag_text = "{%% %s %s %%}" % (plugin_tag, " ".join(args))
    container.text = tag_text
    elem.addprevious(container)
    elem.getparent().remove(elem)
示例#4
0
def include_content(elem, plugin_tag, context=None):
    href = elem.attrib['href']
    args = []
    if 'class' in elem.attrib:
        classes = elem.attrib['class'].split()
        args = [c[len('includepage_'):] for c in classes
                    if c.startswith('includepage_')]
    args = ['"%s"' % escape_quotes(href)] + args
    container = etree.Element('div')
    align = [a for a in args if a in ['left', 'right']]
    if len(align):
        container.attrib['class'] = 'includepage_' + align[0]
    style = parse_style(elem.attrib.get('style', ''))
    if 'width' in style:
        container.attrib['style'] = 'width: ' + style['width'] + ';'
    tag_text = '{%% %s %s %%}' % (plugin_tag, ' '.join(args))
    container.text = tag_text
    elem.addprevious(container)
    elem.getparent().remove(elem)
示例#5
0
def include_content(elem, plugin_tag, context=None):
    href = elem.attrib['href']
    args = []
    if 'class' in elem.attrib:
        classes = elem.attrib['class'].split()
        args = [c[len('includepage_'):] for c in classes
                    if c.startswith('includepage_')]
    args = ['"%s"' % escape_quotes(href)] + args
    container = etree.Element('div')
    align = [a for a in args if a in ['left', 'right']]
    if len(align):
        container.attrib['class'] = 'includepage_' + align[0]
    style = parse_style(elem.attrib.get('style', ''))
    if 'width' in style:
        container.attrib['style'] = 'width: ' + style['width'] + ';'
    tag_text = '{%% %s %s %%}' % (plugin_tag, ' '.join(args))
    container.text = tag_text
    elem.addprevious(container)
    elem.getparent().remove(elem)
示例#6
0
def handle_image(elem, context=None):
    # only handle resized images
    do_thumbnail = True
    style = parse_style(elem.attrib.get('style', ''))
    if 'width' not in style or 'height' not in style:
        do_thumbnail = False

    src = desanitize(elem.attrib.get('src', ''))
    if not src.startswith(_files_url):
        return

    if not context or 'page' not in context:
        return

    page = context['page']
    try:
        file = PageFile.objects.get(slug__exact=page.slug,
                                     name__exact=file_url_to_name(src))
    except PageFile.DoesNotExist:
        return

    if do_thumbnail:
        width = int(style['width'].replace('px', ''))
        height = int(style['height'].replace('px', ''))
        escaped_filename = escape_quotes(file.file.name)
        before = '{%% thumbnail "%s" "%dx%d" as im %%}' % (escaped_filename,
                                                           width, height)
        after = '{% endthumbnail %}'
        elem.attrib['src'] = '{{ im.url }}'
        insert_text_before(before, elem)
        elem.tail = after + (elem.tail or '')
    else:
        elem.attrib['src'] = file.file.url
    info_url = reverse('pages:file-info', args=[page.pretty_slug,
                                                    file.name])
    link = etree.Element('a')
    link.attrib['href'] = info_url
    elem.addprevious(link)
    elem.getparent().remove(elem)
    link.append(elem)
    return False
示例#7
0
def handle_image(elem, context=None):
    # only handle resized images
    do_thumbnail = True
    style = parse_style(elem.attrib.get("style", ""))
    if "width" not in style or "height" not in style:
        do_thumbnail = False

    src = desanitize(elem.attrib.get("src", ""))
    if not src.startswith(_files_url):
        return

    if not context or "page" not in context:
        return

    page = context["page"]
    try:
        file = PageFile.objects.get(slug__exact=page.slug, name__exact=file_url_to_name(src))
    except PageFile.DoesNotExist:
        return

    if do_thumbnail:
        width = int(style["width"].replace("px", ""))
        height = int(style["height"].replace("px", ""))
        escaped_filename = escape_quotes(file.file.name)
        before = '{%% thumbnail "%s" "%dx%d" as im %%}' % (escaped_filename, width, height)
        after = "{% endthumbnail %}"
        # HTML will want to encode {{ }} inside a src, and we don't want that,
        # so we will just rename it to src_thumb until just before it's output
        del elem.attrib["src"]
        elem.attrib["src_thumb"] = "{{ im.url }}"
        insert_text_before(before, elem)
        elem.tail = after + (elem.tail or "")
    else:
        elem.attrib["src"] = file.file.url
    info_url = reverse("pages:file-info", args=[page.pretty_slug, file.name])
    link = etree.Element("a")
    link.attrib["href"] = info_url
    elem.addprevious(link)
    elem.getparent().remove(elem)
    link.append(elem)
    return False
示例#8
0
def handle_image(elem, context=None):
    # only handle resized images
    do_thumbnail = True
    style = parse_style(elem.attrib.get('style', ''))
    if 'width' not in style or 'height' not in style:
        do_thumbnail = False

    src = desanitize(elem.attrib.get('src', ''))
    if not src.startswith(_files_url):
        return

    if not context or 'page' not in context:
        return

    page = context['page']
    try:
        file = PageFile.objects.get(slug__exact=page.slug,
                                    name__exact=file_url_to_name(src))
    except PageFile.DoesNotExist:
        return

    if do_thumbnail:
        width = int(style['width'].replace('px', ''))
        height = int(style['height'].replace('px', ''))
        escaped_filename = escape_quotes(file.file.name)
        before = '{%% thumbnail "%s" "%dx%d" as im %%}' % (escaped_filename,
                                                           width, height)
        after = '{% endthumbnail %}'
        elem.attrib['src'] = '{{ im.url }}'
        insert_text_before(before, elem)
        elem.tail = after + (elem.tail or '')
    else:
        elem.attrib['src'] = file.file.url
    info_url = reverse('pages:file-info', args=[page.pretty_slug, file.name])
    link = etree.Element('a')
    link.attrib['href'] = info_url
    elem.addprevious(link)
    elem.getparent().remove(elem)
    link.append(elem)
    return False