Files @ 6bd1ab9f8fd4
Branch filter:

Location: symposion_app/pinaxcon/templatetags/lca2019_tags.py

Joel Addison
Update conference references
from django import template
from django.forms import Form
import re


register = template.Library()


@register.filter
def has_required_fields(form):
    for field in form:
        if isinstance(field, Form):
            if has_required_fields(field):
                return True
        if field.field.required:
            return True
    return False


@register.filter
def has_price_fields(form):
    for field in form:
        if isinstance(field, Form):
            return has_price_fields(field)

        help_text = field.field.help_text or ''
        if '$' in help_text:
            return True

        label = field.field.label or ''
        if '$' in label:
            return True

        choices = getattr(field.field, 'choices', [])
        if choices:
            for choice_id, choice_text in choices:
                if '$' in choice_text:
                    return True

    return False


@register.filter
def any_is_void(invoices):
    for invoice in invoices:
        if invoice.is_void:
            return True
    return False


@register.filter
def contains_items_not_in(list1, list2):
    return len(set(list1).difference(list2)) > 0


@register.filter
def listlookup(lookup, target):
    try:
        return lookup[target]
    except IndexError:
        return None


@register.filter
def clean_text(txt):
    # Remove double/triple/+ spaces from `txt` and replace with single space
    return re.sub(r' {2,}' , ' ', txt)


@register.filter
def twitter_handle(txt):
    # Add @ to twitter handle if not present
    return txt if txt.startswith('@') else '@{}'.format(txt)