Memoises everything else that needs to be memoised.
This commit is contained in:
parent
3d635521eb
commit
efb73e7a68
5 changed files with 13 additions and 18 deletions
|
@ -107,16 +107,3 @@ class BatchController(object):
|
||||||
cache = {}
|
cache = {}
|
||||||
cache[cls._NESTING_KEY] = 0
|
cache[cls._NESTING_KEY] = 0
|
||||||
return cache
|
return cache
|
||||||
|
|
||||||
'''
|
|
||||||
TODO: memoise CartController.for_user
|
|
||||||
TODO: memoise user_remainders (Product, Category)
|
|
||||||
TODO: memoise _filtered_flags
|
|
||||||
TODO: memoise FlagCounter.count() (doesn't take user, but it'll do for now)
|
|
||||||
TODO: memoise _filtered_discounts
|
|
||||||
|
|
||||||
Tests:
|
|
||||||
- ``end_batch`` behaviour for CartController (use for_user *A LOT*)
|
|
||||||
- discounts not calculated until outermost batch point exits.
|
|
||||||
- Revision number shouldn't change until outermost batch point exits.
|
|
||||||
'''
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ from django.db.models import Sum
|
||||||
from django.db.models import When
|
from django.db.models import When
|
||||||
from django.db.models import Value
|
from django.db.models import Value
|
||||||
|
|
||||||
|
from .batch import BatchController
|
||||||
|
|
||||||
class AllProducts(object):
|
class AllProducts(object):
|
||||||
pass
|
pass
|
||||||
|
@ -39,6 +40,7 @@ class CategoryController(object):
|
||||||
return set(i.category for i in available)
|
return set(i.category for i in available)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@BatchController.memoise
|
||||||
def user_remainders(cls, user):
|
def user_remainders(cls, user):
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
from conditions import ConditionController
|
from .batch import BatchController
|
||||||
|
from .conditions import ConditionController
|
||||||
|
|
||||||
from registrasion.models import commerce
|
from registrasion.models import commerce
|
||||||
from registrasion.models import conditions
|
from registrasion.models import conditions
|
||||||
|
|
||||||
|
@ -10,7 +12,6 @@ from django.db.models import Sum
|
||||||
from django.db.models import Value
|
from django.db.models import Value
|
||||||
from django.db.models import When
|
from django.db.models import When
|
||||||
|
|
||||||
|
|
||||||
class DiscountAndQuantity(object):
|
class DiscountAndQuantity(object):
|
||||||
''' Represents a discount that can be applied to a product or category
|
''' Represents a discount that can be applied to a product or category
|
||||||
for a given user.
|
for a given user.
|
||||||
|
@ -99,6 +100,7 @@ class DiscountController(object):
|
||||||
return discounts
|
return discounts
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@BatchController.memoise
|
||||||
def _filtered_clauses(cls, user):
|
def _filtered_clauses(cls, user):
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ from collections import namedtuple
|
||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
|
||||||
|
from .batch import BatchController
|
||||||
from .conditions import ConditionController
|
from .conditions import ConditionController
|
||||||
|
|
||||||
from registrasion.models import conditions
|
from registrasion.models import conditions
|
||||||
|
@ -115,7 +116,7 @@ class FlagController(object):
|
||||||
if not met and product not in messages:
|
if not met and product not in messages:
|
||||||
messages[product] = message
|
messages[product] = message
|
||||||
|
|
||||||
total_flags = FlagCounter.count()
|
total_flags = FlagCounter.count(user)
|
||||||
|
|
||||||
valid = {}
|
valid = {}
|
||||||
|
|
||||||
|
@ -158,6 +159,7 @@ class FlagController(object):
|
||||||
return error_fields
|
return error_fields
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@BatchController.memoise
|
||||||
def _filtered_flags(cls, user):
|
def _filtered_flags(cls, user):
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
@ -209,11 +211,11 @@ _ConditionsCount = namedtuple(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# TODO: this should be cacheable.
|
|
||||||
class FlagCounter(_FlagCounter):
|
class FlagCounter(_FlagCounter):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def count(cls):
|
@BatchController.memoise
|
||||||
|
def count(cls, user):
|
||||||
# Get the count of how many conditions should exist per product
|
# Get the count of how many conditions should exist per product
|
||||||
flagbases = conditions.FlagBase.objects
|
flagbases = conditions.FlagBase.objects
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ from django.db.models import Value
|
||||||
from registrasion.models import commerce
|
from registrasion.models import commerce
|
||||||
from registrasion.models import inventory
|
from registrasion.models import inventory
|
||||||
|
|
||||||
|
from .batch import BatchController
|
||||||
from .category import CategoryController
|
from .category import CategoryController
|
||||||
from .flag import FlagController
|
from .flag import FlagController
|
||||||
|
|
||||||
|
@ -55,6 +56,7 @@ class ProductController(object):
|
||||||
return out
|
return out
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@BatchController.memoise
|
||||||
def user_remainders(cls, user):
|
def user_remainders(cls, user):
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue