Source code for shoop.customer_group_pricing.module

# -*- coding: utf-8 -*-
# This file is part of Shoop.
#
# Copyright (c) 2012-2016, Shoop Ltd. All rights reserved.
#
# This source code is licensed under the AGPLv3 license found in the
# LICENSE file in the root directory of this source tree.
import six
from django.db.models import Q
from django.utils.translation import ugettext_lazy as _

from shoop.core.models import ShopProduct
from shoop.core.pricing import PriceInfo, PricingModule

from .models import CgpPrice


[docs]class CustomerGroupPricingModule(PricingModule): identifier = "customer_group_pricing" name = _("Customer Group Pricing")
[docs] def get_price_info(self, context, product, quantity=1): shop = context.shop if isinstance(product, six.integer_types): product_id = product shop_product = ShopProduct.objects.get(product_id=product_id, shop=shop) else: shop_product = product.get_shop_instance(shop) product_id = product.pk default_price = (shop_product.default_price_value or 0) filter = Q( product=product_id, shop=shop, price_value__gt=0, group__in=context.customer.groups.all()) result = ( CgpPrice.objects.filter(filter) .order_by("price_value")[:1] .values_list("price_value", flat=True) ) if result: price = result[0] if default_price > 0: price = min([default_price, price]) else: price = default_price return PriceInfo( price=shop.create_price(price * quantity), base_price=shop.create_price(price * quantity), quantity=quantity, )