Init Django-SHOP
This commit is contained in:
52
weirdlittleempire/modifiers.py
Normal file
52
weirdlittleempire/modifiers.py
Normal file
@@ -0,0 +1,52 @@
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from shop.modifiers.pool import cart_modifiers_pool
|
||||
from shop.modifiers.defaults import DefaultCartModifier
|
||||
from shop.serializers.cart import ExtraCartRow
|
||||
from shop.money import Money
|
||||
from shop.shipping.modifiers import ShippingModifier
|
||||
from shop_stripe import modifiers
|
||||
|
||||
|
||||
class PrimaryCartModifier(DefaultCartModifier):
|
||||
"""
|
||||
Extended default cart modifier which handles the price for product variations
|
||||
"""
|
||||
|
||||
def process_cart_item(self, cart_item, request):
|
||||
variant = cart_item.product.get_product_variant(
|
||||
product_code=cart_item.product_code)
|
||||
cart_item.unit_price = variant.unit_price
|
||||
cart_item.line_total = cart_item.unit_price * cart_item.quantity
|
||||
# grandparent super
|
||||
return super(DefaultCartModifier, self).process_cart_item(cart_item, request)
|
||||
|
||||
|
||||
class PostalShippingModifier(ShippingModifier):
|
||||
"""
|
||||
This is just a demo on how to implement a shipping modifier, which when selected
|
||||
by the customer, adds an additional charge to the cart.
|
||||
"""
|
||||
identifier = 'postal-shipping'
|
||||
|
||||
def get_choice(self):
|
||||
return (self.identifier, _("Postal shipping"))
|
||||
|
||||
def add_extra_cart_row(self, cart, request):
|
||||
shipping_modifiers = cart_modifiers_pool.get_shipping_modifiers()
|
||||
if not self.is_active(cart.extra.get('shipping_modifier')) and len(shipping_modifiers) > 1:
|
||||
return
|
||||
# add a shipping flat fee
|
||||
amount = Money('5')
|
||||
instance = {'label': _("Shipping costs"), 'amount': amount}
|
||||
cart.extra_rows[self.identifier] = ExtraCartRow(instance)
|
||||
cart.total += amount
|
||||
|
||||
def ship_the_goods(self, delivery):
|
||||
if not delivery.shipping_id:
|
||||
raise ValidationError("Please provide a valid Shipping ID")
|
||||
super().ship_the_goods(delivery)
|
||||
|
||||
|
||||
class StripePaymentModifier(modifiers.StripePaymentModifier):
|
||||
commision_percentage = 3
|
||||
Reference in New Issue
Block a user