Files @ d4b0b52253ae
Branch filter:

Location: symposion_app/pinaxcon/templatetags/lca2019_tags.py

Joel Addison
Registrasion updates

Show applied vouchers on attendee registration admin page.
Add head title and page title to more areas.
Update the dashboard to show warning for empty categories and have
button to open voucher page.
Fix exception on attendee page when user does not have attendee object.
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)