Files
@ 2ed0a47f15bd
Branch filter:
Location: symposion_app/registrasion/templatetags/registrasion_tags.py - annotation
2ed0a47f15bd
2.2 KiB
text/x-python
Adds attendance by field report
Fixes #93
Fixes #93
875f736d67c5 f7289c21019b 68aa9b067bdb c192fef491c4 c192fef491c4 36ecf7fd5489 c192fef491c4 c192fef491c4 c192fef491c4 db332da9584d c192fef491c4 c192fef491c4 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb f7289c21019b 36ecf7fd5489 db332da9584d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d faa25c9b3a7d 2c94e7538a6e 2c94e7538a6e 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb 875f736d67c5 2c94e7538a6e 2c94e7538a6e 2c94e7538a6e 2c94e7538a6e 2c94e7538a6e 2c94e7538a6e 36ecf7fd5489 36ecf7fd5489 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb 9d25725514cb 36ecf7fd5489 db332da9584d 36ecf7fd5489 36ecf7fd5489 68aa9b067bdb 68aa9b067bdb 36ecf7fd5489 db332da9584d 36ecf7fd5489 4021aa3c8ebc 68aa9b067bdb 9d25725514cb 68aa9b067bdb 68aa9b067bdb fd5cf50fabd8 | from registrasion.models import commerce
from registrasion.controllers.category import CategoryController
from registrasion.controllers.item import ItemController
from django import template
from django.db.models import Sum
register = template.Library()
@register.assignment_tag(takes_context=True)
def available_categories(context):
''' 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 missing_categories(context):
''' Adds the categories that the user does not currently have. '''
user = context.request.user
categories_available = set(CategoryController.available_categories(user))
items = ItemController(user).items_pending_or_purchased()
categories_held = set()
for product, quantity in items:
categories_held.add(product.category)
return categories_available - categories_held
@register.assignment_tag(takes_context=True)
def available_credit(context):
''' 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,
)
ret = notes.values("amount").aggregate(Sum("amount"))["amount__sum"] or 0
return 0 - ret
@register.assignment_tag(takes_context=True)
def invoices(context):
'''
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):
''' Gets all of the items that the user from this context has reserved.'''
return ItemController(context.request.user).items_pending()
@register.assignment_tag(takes_context=True)
def items_purchased(context, category=None):
''' Returns the items purchased for this user. '''
return ItemController(context.request.user).items_purchased(
category=category
)
|