Changeset - b40505117f4c
[Not reviewed]
0 7 0
Christopher Neugebauer - 8 years ago 2016-04-29 01:22:56
chrisjrn@gmail.com
Fixes flake8 errors arising from rebase
7 files changed with 6 insertions and 23 deletions:
0 comments (0 inline, 0 general)
registrasion/controllers/cart.py
Show inline comments
...
 
@@ -14,13 +14,12 @@ from django.utils import timezone
 
from registrasion.exceptions import CartValidationError
 
from registrasion.models import commerce
 
from registrasion.models import conditions
 
from registrasion.models import inventory
 

	
 
from .category import CategoryController
 
from .conditions import ConditionController
 
from .discount import DiscountController
 
from .flag import FlagController
 
from .product import ProductController
 

	
 

	
 
def _modifies_cart(func):
...
 
@@ -62,13 +61,12 @@ class CartController(object):
 
                user=user,
 
                time_last_updated=timezone.now(),
 
                reservation_duration=datetime.timedelta(),
 
            )
 
        return cls(existing)
 

	
 

	
 
    # Marks the carts that are currently in batches
 
    _FOR_USER = {}
 
    _BATCH_COUNT = collections.defaultdict(int)
 
    _MODIFIED_CARTS = set()
 

	
 
    class _ModificationMarker(object):
...
 
@@ -153,13 +151,12 @@ class CartController(object):
 
        You need to call this after you've finished modifying the user's cart.
 
        This is normally done by wrapping a block of code using
 
        ``operations_batch``.
 

	
 
        '''
 

	
 

	
 
        self.cart.refresh_from_db()
 

	
 
        self._recalculate_discounts()
 

	
 
        self._autoextend_reservation()
 
        self.cart.revision += 1
...
 
@@ -247,14 +244,12 @@ class CartController(object):
 
        # Pre-annotate categories
 
        r = CategoryController.attach_user_remainders(self.cart.user, by_cat)
 
        with_remainders = dict((cat, cat) for cat in r)
 

	
 
        # Test each category limit here
 
        for category in by_cat:
 
            #ctrl = CategoryController(category)
 
            #limit = ctrl.user_quantity_remaining(self.cart.user)
 
            limit = with_remainders[category].remainder
 

	
 
            # Get the amount so far in the cart
 
            to_add = sum(i[1] for i in by_cat[category])
 

	
 
            if to_add > limit:
registrasion/controllers/category.py
Show inline comments
...
 
@@ -35,13 +35,12 @@ class CategoryController(object):
 
            user,
 
            products=products,
 
        )
 

	
 
        return set(i.category for i in available)
 

	
 

	
 
    @classmethod
 
    def attach_user_remainders(cls, user, categories):
 
        '''
 

	
 
        Return:
 
            queryset(inventory.Product): A queryset containing items from
registrasion/controllers/conditions.py
Show inline comments
 
import itertools
 

	
 
from django.db.models import Case
 
from django.db.models import F, Q
 
from django.db.models import Sum
 
from django.db.models import Value
 
from django.db.models import When
 
from django.utils import timezone
 

	
 
from registrasion.models import commerce
 
from registrasion.models import conditions
 
from registrasion.models import inventory
 

	
 

	
 

	
 
_BIG_QUANTITY = 99999999  # A big quantity
 

	
 

	
 
class ConditionController(object):
...
 
@@ -131,14 +127,12 @@ class RemainderSetByFilter(object):
 
        '''
 

	
 
        if filtered:
 
            if hasattr(self.condition, "remainder"):
 
                return self.condition.remainder
 

	
 

	
 

	
 
        # Mark self.condition with a remainder
 
        qs = type(self.condition).objects.filter(pk=self.condition.id)
 
        qs = self.pre_filter(qs, user)
 

	
 
        if len(qs) > 0:
 
            return qs[0].remainder
...
 
@@ -185,15 +179,15 @@ class ProductConditionController(IsMetByFilter, ConditionController):
 
        queryset = queryset.exclude(in_released_carts)
 

	
 
        return queryset
 

	
 

	
 
class TimeOrStockLimitConditionController(
 
        RemainderSetByFilter,
 
        ConditionController,
 
    ):
 
            RemainderSetByFilter,
 
            ConditionController,
 
        ):
 
    ''' Common condition tests for TimeOrStockLimit Flag and
 
    Discount.'''
 

	
 
    @classmethod
 
    def pre_filter(self, queryset, user):
 
        ''' Returns all of the items from queryset where the date falls into
registrasion/controllers/discount.py
Show inline comments
...
 
@@ -47,13 +47,12 @@ class DiscountController(object):
 
    @classmethod
 
    def available_discounts(cls, user, categories, products):
 
        ''' Returns all discounts available to this user for the given
 
        categories and products. The discounts also list the available quantity
 
        for this user, not including products that are pending purchase. '''
 

	
 

	
 
        filtered_clauses = cls._filtered_discounts(user, categories, products)
 

	
 
        discounts = []
 

	
 
        # Markers so that we don't need to evaluate given conditions
 
        # more than once
registrasion/controllers/product.py
Show inline comments
...
 
@@ -33,16 +33,16 @@ class ProductController(object):
 

	
 
        if products is not None:
 
            all_products = set(itertools.chain(all_products, products))
 

	
 
        categories = set(product.category for product in all_products)
 
        r = CategoryController.attach_user_remainders(user, categories)
 
        cat_quants = dict((c,c) for c in r)
 
        cat_quants = dict((c, c) for c in r)
 

	
 
        r = ProductController.attach_user_remainders(user, all_products)
 
        prod_quants = dict((p,p) for p in r)
 
        prod_quants = dict((p, p) for p in r)
 

	
 
        passed_limits = set(
 
            product
 
            for product in all_products
 
            if cat_quants[product.category].remainder > 0
 
            if prod_quants[product].remainder > 0
...
 
@@ -55,13 +55,12 @@ class ProductController(object):
 

	
 
        out = list(passed_limits - failed_conditions)
 
        out.sort(key=lambda product: product.order)
 

	
 
        return out
 

	
 

	
 
    @classmethod
 
    def attach_user_remainders(cls, user, products):
 
        '''
 

	
 
        Return:
 
            queryset(inventory.Product): A queryset containing items from
registrasion/templatetags/registrasion_tags.py
Show inline comments
...
 
@@ -100,13 +100,13 @@ def items_purchased(context, category=None):
 
    Returns:
 
        [ProductAndQuantity, ...]: A list of product-quantity pairs,
 
            aggregating like products from across multiple invoices.
 

	
 
    '''
 

	
 
    in_cart=(
 
    in_cart = (
 
        Q(productitem__cart__user=context.request.user) &
 
        Q(productitem__cart__status=commerce.Cart.STATUS_PAID)
 
    )
 

	
 
    quantities_in_cart = When(
 
        in_cart,
registrasion/views.py
Show inline comments
...
 
@@ -448,15 +448,12 @@ def _set_quantities_from_products_form(products_form, current_cart):
 
    id_to_quantity = dict(i[:2] for i in quantities)
 
    pks = [i[0] for i in quantities]
 
    products = inventory.Product.objects.filter(
 
        id__in=pks,
 
    ).select_related("category")
 

	
 

	
 

	
 
    # TODO: This is fundamentally dumb
 
    product_quantities = [
 
        (product, id_to_quantity[product.id]) for product in products
 
    ]
 
    field_names = dict(
 
        (i[0][0], i[1][2]) for i in zip(product_quantities, quantities)
 
    )
0 comments (0 inline, 0 general)