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)