from django import template

register = template.Library()

@register.filter
def can_view_reg(user, reg):
    return (user.id == reg.user_id or
            (reg.invoice is not None and
             user.id == reg.invoice.user_id) or
            user.has_perm('attendeereg.change_registration'))

@register.filter
def can_view_invoice(user, inv):
    return inv is not None and (user.id == inv.user_id or
            user.has_perm('attendeereg.change_invoice'))

@register.filter
def can_admin_reg(user):
    return user.has_perm('attendeereg.change_registration')

@register.filter
def can_admin_invoice(user):
    return user.has_perm('attendeereg.change_invoice')

@register.filter
def indent(text):
    return '    ' + text.replace('\n', '\n    ')

@register.inclusion_tag("attendeereg/progressbar.html")
def progressbar(name):
    from django.conf import settings
    bHaveThanks = True if getattr(settings, 'ATTREG_THANKYOU_URL', False) else False
    return { name: True, 'bThankYouOption': bHaveThanks}

@register.inclusion_tag("attendeereg/tutorials_listing.html")
def registration_tutorial_listing():
    from pycon.attendeereg.models import Tutorial, SESSIONS
    sessions = []
    for session, session_label in SESSIONS:
        tuts = Tutorial.objects.filter(session=session)
        if tuts.count():
            sessions.append({'name': session_label, 'tutorials': tuts })
    return {'sessions': sessions}

@register.inclusion_tag("attendeereg/admin_issues_invtable.html")
def include_invoice_table(invoices):
    return {'invoices': invoices}

@register.filter
def split_on_paren(text):
    if '(' not in text: return [text, u'']
    ind = text.rfind('(')
    return [ text[:ind].strip(), text[ind:].strip() ]

@register.filter
def last(listortuple):
    return listortuple[-1]
