Documents the template tags

This commit is contained in:
Christopher Neugebauer 2016-04-25 13:15:06 +10:00
parent 1b9f76823f
commit 9d25725514
2 changed files with 76 additions and 10 deletions

View file

@ -5,3 +5,12 @@ Here's all of the views that Registrasion exposes to the public.
.. automodule:: registrasion.views
:members:
Template tags
-------------
Registrasion makes template tags available:
.. automodule:: registrasion.templatetags.registrasion_tags
:members:

View file

@ -8,18 +8,42 @@ from django.db.models import Sum
register = template.Library()
ProductAndQuantity = namedtuple("ProductAndQuantity", ["product", "quantity"])
_ProductAndQuantity = namedtuple("ProductAndQuantity", ["product", "quantity"])
class ProductAndQuantity(_ProductAndQuantity):
''' Class that holds a product and a quantity.
Attributes:
product (models.inventory.Product)
quantity (int)
'''
pass
@register.assignment_tag(takes_context=True)
def available_categories(context):
''' Returns all of the available product categories '''
''' Gets all of the currently available products.
Returns:
[models.inventory.Category, ...]: A list of all of the categories that
have Products that the current user can reserve.
'''
return CategoryController.available_categories(context.request.user)
@register.assignment_tag(takes_context=True)
def available_credit(context):
''' Returns the amount of unclaimed credit available for this user. '''
''' Calculates the sum of unclaimed credit from this user's credit notes.
Returns:
Decimal: the sum of the values of unclaimed credit notes for the
current user.
'''
notes = commerce.CreditNote.unclaimed().filter(
invoice__user=context.request.user,
)
@ -29,14 +53,23 @@ def available_credit(context):
@register.assignment_tag(takes_context=True)
def invoices(context):
''' Returns all of the invoices that this user has. '''
return commerce.Invoice.objects.filter(cart__user=context.request.user)
'''
Returns:
[models.commerce.Invoice, ...]: All of the current user's invoices. '''
return commerce.Invoice.objects.filter(user=context.request.user)
@register.assignment_tag(takes_context=True)
def items_pending(context):
''' Returns all of the items that this user has in their current cart,
and is awaiting payment. '''
''' Gets all of the items that the user has reserved, but has not yet
paid for.
Returns:
[ProductAndQuantity, ...]: A list of product-quantity pairs for the
items that the user has not yet paid for.
'''
all_items = commerce.ProductItem.objects.filter(
cart__user=context.request.user,
@ -53,8 +86,17 @@ def items_pending(context):
@register.assignment_tag(takes_context=True)
def items_purchased(context, category=None):
''' Returns all of the items that this user has purchased, optionally
from the given category. '''
''' Aggregates the items that this user has purchased.
Arguments:
category (Optional[models.inventory.Category]): the category of items
to restrict to.
Returns:
[ProductAndQuantity, ...]: A list of product-quantity pairs,
aggregating like products from across multiple invoices.
'''
all_items = commerce.ProductItem.objects.filter(
cart__user=context.request.user,
@ -76,5 +118,20 @@ def items_purchased(context, category=None):
@register.filter
def multiply(value, arg):
''' Multiplies value by arg '''
''' Multiplies value by arg.
This is useful when displaying invoices, as it lets you multiply the
quantity by the unit value.
Arguments:
value (number)
arg (number)
Returns:
number: value * arg
'''
return value * arg