You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

66 lines
1.7 KiB

from decimal import Decimal
from django.conf import settings
from django.contrib import auth
from cart.models import Offer
from products.models import Product
# from discount.models import Discount
class Cart(object):
def __init__(self, request):
self.store = request.session
cart = self.store.get(settings.CART_SESSION_ID)
if not cart:
cart = self.store[settings.CART_SESSION_ID] = {}
self.cart = cart
def add(self, offer_id, quantity=1):
offer_id = str(offer_id)
if offer_id in self.cart:
self.cart[offer_id]['quantity'] += int(quantity)
else:
self.cart[offer_id] = {'quantity': quantity}
self.save()
def save(self):
self.store[settings.CART_SESSION_ID] = self.cart
self.store.modified = True
def remove(self, offer_id):
offer_id = str(offer_id)
if offer_id in self.cart:
del self.cart[offer_id]
self.save()
def clear(self):
del self.store[settings.CART_SESSION_ID]
self.store.modified = True
def keys(self):
return self.cart.keys()
def __iter__(self):
return iter(self.cart.keys())
def __setitem__(self, key, value):
try:
self.cart[str(key)] = value
except KeyError:
return setattr(self, key, value)
def __getitem__(self, key):
try:
return self.cart[str(key)]
except KeyError:
return getattr(self, key)
def __contains__(self, item):
return str(item) in self.cart
def __next__(self):
return self.cart.__next__()
def __len__(self):
return self.cart.__len__()