Files
@ 139b9ea8d064
Branch filter:
Location: CopyleftConf/copyleftconf-website/pinaxcon/templatetags/nbpy_tags.py - annotation
139b9ea8d064
2.0 KiB
text/x-python
Use django email log
3053a9bfb232 3053a9bfb232 3053a9bfb232 a0422f0e8433 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 3053a9bfb232 e144ebf41d69 3053a9bfb232 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 a0422f0e8433 | from registrasion.models import commerce
from registrasion.controllers.category import CategoryController
from registrasion.controllers.item import ItemController
from registrasion.templatetags import registrasion_tags
from decimal import Decimal
from django import template
from django.conf import settings
from django.db.models import Sum
from urllib import urlencode # TODO: s/urllib/six.moves.urllib/
register = template.Library()
@register.simple_tag(takes_context=True)
def donation_income(context, invoice):
''' Calculates the donation income for a given invoice.
Returns:
the donation income.
'''
# 15% (FSA) goes to Conservancy; 85% is real goods
fsa_rate = Decimal("0.85")
rbi_full_ticket = Decimal("68.00")
rbi_early_bird_discount = Decimal("-21.35")
rbi = []
for line in invoice.lineitem_set.all():
if line.product.category.name == "Ticket":
if line.product.name.startswith("Unaffiliated Individual"):
# Includes full price & discounts
rbi.append(line.total_price * fsa_rate)
else:
if line.total_price > 0:
rbi.append(rbi_full_ticket)
elif line.total_price < 0:
rbi.append(rbi_early_bird_discount)
elif line.product.category.name == "T-Shirt":
rbi.append(line.total_price * fsa_rate)
donation = max(Decimal('0'), (invoice.value - sum(rbi)))
return donation.quantize(Decimal('.01'))
# TODO: include van/de/van der/de la/etc etc etc
@register.simple_tag
def name_split(name):
tokens = name.split()
even_split = int((len(tokens) + 1) / 2) # Round up.
return {
"first" : " ".join(tokens[:even_split]),
"last" : " ".join(tokens[even_split:]),
}
@register.simple_tag(takes_context=True)
def ticket_type(context):
items = registrasion_tags.items_purchased(context)
for item in items:
if item.product.category.name == "Ticket":
return item.product.name
|