Part of CartController->BatchController memoisation

This commit is contained in:
Christopher Neugebauer 2016-05-01 12:44:07 +10:00
parent efb73e7a68
commit 3ab5ac32ca

View file

@ -5,9 +5,10 @@ from registrasion import util
from registrasion.models import commerce from registrasion.models import commerce
from registrasion.models import inventory from registrasion.models import inventory
from registrasion.models import people from registrasion.models import people
from registrasion.controllers.discount import DiscountController from registrasion.controllers.batch import BatchController
from registrasion.controllers.cart import CartController from registrasion.controllers.cart import CartController
from registrasion.controllers.credit_note import CreditNoteController from registrasion.controllers.credit_note import CreditNoteController
from registrasion.controllers.discount import DiscountController
from registrasion.controllers.invoice import InvoiceController from registrasion.controllers.invoice import InvoiceController
from registrasion.controllers.product import ProductController from registrasion.controllers.product import ProductController
from registrasion.exceptions import CartValidationError from registrasion.exceptions import CartValidationError
@ -170,18 +171,18 @@ def guided_registration(request):
category__in=cats, category__in=cats,
).select_related("category") ).select_related("category")
available_products = set(ProductController.available_products( with BatchController.batch(request.user):
request.user, available_products = set(ProductController.available_products(
products=all_products, request.user,
)) products=all_products,
))
if len(available_products) == 0: if len(available_products) == 0:
# We've filled in every category # We've filled in every category
attendee.completed_registration = True attendee.completed_registration = True
attendee.save() attendee.save()
return next_step return next_step
with CartController.operations_batch(request.user):
for category in cats: for category in cats:
products = [ products = [
i for i in available_products i for i in available_products
@ -345,20 +346,21 @@ def product_category(request, category_id):
category_id = int(category_id) # Routing is [0-9]+ category_id = int(category_id) # Routing is [0-9]+
category = inventory.Category.objects.get(pk=category_id) category = inventory.Category.objects.get(pk=category_id)
products = ProductController.available_products( with BatchController.batch(request.user):
request.user, products = ProductController.available_products(
category=category, request.user,
) category=category,
if not products:
messages.warning(
request,
"There are no products available from category: " + category.name,
) )
return redirect("dashboard")
p = _handle_products(request, category, products, PRODUCTS_FORM_PREFIX) if not products:
products_form, discounts, products_handled = p messages.warning(
request,
"There are no products available from category: " + category.name,
)
return redirect("dashboard")
p = _handle_products(request, category, products, PRODUCTS_FORM_PREFIX)
products_form, discounts, products_handled = p
if request.POST and not voucher_handled and not products_form.errors: if request.POST and not voucher_handled and not products_form.errors:
# Only return to the dashboard if we didn't add a voucher code # Only return to the dashboard if we didn't add a voucher code