Privacy Policy
Snippets index

  filefield_link_display tag showing file size

import os
from django import template
from django.utils.safestring import mark_safe
from django.conf import settings
from django.template.defaultfilters import filesizeformat


register = template.Library()


@register.filter
def filefield_link_display(filefield, alert_size_threshold_in_KB=300):
    html = ''
    if filefield and bool(filefield):
        try:
            name = os.path.split(filefield.name)[-1]
            size = filefield.size
            extrastyle = ' style="color: red;"' if (size > alert_size_threshold_in_KB * 1024) else ''
            html = """
<div style="white-space:nowrap; text-align: right; width: 60px;">
    <a href="%s" title="%s" %s>
        <i class="icon-download""></i> %s
    </a>
</div>""" % (
                filefield.url,
                name,
                extrastyle,
                filesizeformat(size)
            )
        except:
            html = ''
    return mark_safe(html)