def get_object(self, *args, **kwargs): self.request.session.set_expiry(0) cart_id = self.request.session.get("cart_id") if cart_id is not None: cart = Cart.objects.get(id=cart_id) if self.request.user.is_authenticated(): cart.user = self.request.user cart.save() return cart if not self.request.user.is_authenticated(): cart = Cart(subtotal=0.00) cart.save() cart_id = cart.id self.request.session["cart_id"] = cart_id else: cart = Cart.objects.filter(user=self.request.user) if cart.count() >= 1: cart = cart.first() else: cart = Cart(subtotal=0.00, user=self.request.user) cart.save() cart_id = cart.id self.request.session["cart_id"] = cart_id cart.save() return cart
def get_delivery(self, obj): request = self.context.get("request") cart = Cart(user=request.user) seller_delivery_cart_item = CartItem( product=obj, quantity=1, delivery_option_id=DeliveryOption.SELLER, cart=cart) options = { "seller": seller_delivery_cart_item.seller_delivery_fee.netto, "pickup": Decimal("0.0"), } region_settings = get_setting(request.region.id) if region_settings.central_logistics_company: central_logistics_cart_item = CartItem( product=obj, quantity=1, delivery_option_id=DeliveryOption.CENTRAL_LOGISTICS, cart=cart, ) options[ "logistics"] = central_logistics_cart_item.central_logistic_delivery_fee.netto return options
def update_cart(request, product_id): request.session.set_expiry(120000) print(request.session.__dict__) try: the_id = request.session['cart_id'] except: new_cart = Cart() new_cart.save() request.session['cart_id'] = new_cart.id the_id = new_cart.id cart = get_object_or_404(Cart, id=the_id) product = get_object_or_404(Product, id=product_id) product.amount = 1 product.save() cart_item, created = CartItem.objects.get_or_create(product=product) if not cart_item in cart.items.all(): cart_item.amount = 1 cart_item.save() cart.items.add(cart_item) else: cart.items.remove(cart_item) new_total = 0.00 for item in cart.items.all(): new_total += float(item.get_full_price()) request.session['items_total'] = cart.items.count() if not request.session['items_total']: return redirect('to_home_url') cart.total = new_total cart.save() return redirect('view_cart_url')
def post(self, req): d = req.data username = d.get('username') email = d.get('email') pwd = d.get('password') user = User.objects.filter(email=email) if user: return Response({'error': 'An account with that email already exists.'}, status=409) user = User.objects.filter(username=username) if user: return Response({'error': 'An account with that username already exists.'}, status=409) if len(pwd) < settings.MIN_PASSWORD_LENGTH: return Response({'error': 'Password must be at least {} characters long' .format(settings.MIN_PASSWORD_LENGTH)}, status=411) user = User.objects.create_user(username=username, email=email, password=pwd) if user is None: return Response({'error': 'There was an error creating the user.'}, status=500) cart = Cart(user=user) cart.save() url = req.build_absolute_uri('/auth/confirm-email') uid = user.id * settings.EMAIL_CONFIRM_HASH_NUM token = account_activation_token.make_token(user) url += '?token={}&uid={}'.format(token, uid) send_acct_confirm_email.delay(user.id, url) return Response({'user': user.to_json()})
def prepare_new_user(self, data): email = data.get('email', None) if not self.email_is_used(email): new_user = self.create_new_user(data) Cart().create_cart_to_new_user(new_user) user = authenticate(username=data.get('username'), password=data.get('password')) self.get_token(user) return new_user raise serializers.ValidationError( {'email_used': _('This email is already used.')})
def get_object(self, *args, **kwargs): self.request.session.set_expiry(0) cart_id = self.request.session.get("cart_id") if cart_id == None: cart = Cart() cart.subtotal = 0 cart.save() cart_id = cart.id self.request.session["cart_id"] = cart_id cart = Cart.objects.get(id=cart_id) return cart
def retrived_cart(request): try: the_id = request.session['cart_id'] except: new_cart = Cart() new_cart.save() request.session['cart_id'] = new_cart.id the_id = new_cart.id cart = Cart.objects.get(id=the_id) return cart
def get_cart(self): data, cart_obj, response_status = self.get_cart_from_token() if cart_obj == None or not cart_obj.active: cart = Cart() cart.tax_percentage = 0.075 if self.request.user.is_authenticated(): cart.user = self.request.user cart.save() data = {"cart_id": str(cart.id)} self.create_token(data) cart_obj = cart return cart_obj
def get_object(self, *args, **kwargs): self.request.session.set_expiry(0) cart_id = self.request.session.get("cart_id") if cart_id == None: cart = Cart() cart.save() cart_id = cart.id self.request.session["cart_id"] = cart.id cart = Cart.objects.get(id=cart_id) if self.request.user.is_authenticated(): cart.user = self.request.user cart.save() return cart
def get_cart(self, *args, **kwargs): cart_id = self.request.session.get('cart_id') if cart_id is None: cart = Cart() cart.save() cart_id = cart.id self.request.session['cart_id'] = cart_id cart = Cart.objects.get(id=cart_id) if self.request.user.is_authenticated(): # Login user # if the cart is not belong to the current login user, # start a new cart if cart.user is not None and cart.user != self.request.user: cart = Cart() cart.save() self.request.session['cart_id'] = cart.id cart.user = self.request.user cart.save() else: # Guest user if cart.user: pass # Required Login or remind user to start a new session return cart
def get_object(self, *args, **kwargs): self.request.session.set_expiry(0) #5 minutes cart_id = self.request.session.get("cart_id") if cart_id == None: print("cart is none...") cart = Cart() cart.tax_percentage = 0.075 cart.save() cart_id = cart.id self.request.session["cart_id"] = cart_id cart = Cart.objects.get(id=cart_id) if self.request.user.is_authenticated: cart.user = self.request.user cart.save() return cart
def get_object(self, *args, **kwargs): self.request.session.set_expiry(0) # until the browser closes cart_id = self.request.session.get('cart_id', None) if not cart_id: # Create cart cart = Cart() cart.save() cart_id = cart.id self.request.session['cart_id'] = cart_id cart = Cart.objects.get(id=cart_id) if self.request.user.is_authenticated(): cart.user = self.request.user cart.save() return cart
def get_object(self, *args, **kwargs): # Expire the session after 5 mins - put 300 # To expire once the browser is closed use 0 self.request.session.set_expiry(0) cart_id = self.request.session.get("cart_id") if cart_id is None: cart = Cart() cart.save() cart_id = cart.id self.request.session["cart_id"] = cart_id cart = Cart.objects.get(id=cart_id) if self.request.user.is_authenticated(): cart.user = self.request.user cart.save() return cart
def get_object(self, *args, **kwargs): self.request.session.set_expiry( 0) # close the session when browser close cart_id = self.request.session.get('cart_id') if cart_id is None: cart = Cart() cart.save() cart_id = cart.id self.request.session['cart_id'] = cart_id cart = Cart.objects.get(id=cart_id) if self.request.user.is_authenticated(): cart.user = self.request.user cart.save() return cart
def get_object(self, *args, **kwargs): self.request.session.set_expiry(0) # 1800 seconds = 1800. cart_id = self.request.session.get("cart_id") # if session doesn't have Cart, create the Cart AND set the session [ "cart_id" ] if cart_id == None: new_cart = Cart() new_cart.save() cart_id = new_cart.id # = Cart.objects.create() self.request.session["cart_id"] = new_cart.id # Get the Cart. new Cart or existing Cart cart = Cart.objects.get(id=cart_id) # if user authenticated, set the user of the cart if self.request.user.is_authenticated(): # cart = Cart.objects.get(id=cart_id, user=request.user) cart.user = self.request.user cart.save() return cart
def register_user(self, seed, is_staff=False, with_cart=False, email_verified=False): """ Helper to create a user object. :param seed: int """ username = '******'.format(seed) email = '{}@example.com'.format(username) user = User(username=username, email=email) user.set_password('pass') if is_staff: user.is_staff = True if email_verified: user.email_verified = True user.save() if with_cart: cart = Cart(user=user) cart.save() return user
def get_object(self, *args, **kwargs): self.request.session.set_expiry(0) #session expires on window close or 300 -> 5 min cart_id = self.request.session.get("cart_id") if cart_id == None: cart = Cart() cart.save() cart_id = cart.id self.request.session["cart_id"] = cart_id cart = Cart.objects.get(id=cart_id) if self.request.user.is_authenticated(): cart.user = self.request.user cart.save() citems = CartItem.objects.filter(cart=cart) for citem in citems: if citem.item.available_quantity <= 0: citem.out_of_stock = True citem.line_item_total = 0.0 else: citem.out_of_stock = False citem.save() cart.update_subtotal() return cart
def add_to_cart(request, slug): #Session is set to expire in 5 mins = 3000 request.session.set_expiry(3000) # PRODUCT QUANTITY try: the_id = request.session['cart_id'] except: new_cart = Cart() new_cart.save() request.session['cart_id'] = new_cart.id the_id = new_cart.id cart = Cart.objects.get(id=the_id) #ITEMS IN CART try: product = Product.objects.get(slug=slug) except Product.DoesNotExist: pass except: pass product_var = [] #product_var if request.method == "POST": qty = request.POST['qty'] for item in request.POST: key = item val = request.POST[key] cart_item = CartItem.objects.create(cart=cart, product=product) print(cart_item) cart_item.quantity = qty # saving notes in a dictionary cart_item.save() # success message return redirect(reverse("cart")) #error message return redirect(reverse("cart"))
def edit(request, pizza_id): if request.method == "POST": try: the_id = request.session['cart_id'] except: new_cart = Cart() new_cart.save() request.session['totalprice'] = 0 request.session['cart_id'] = new_cart.id the_id = new_cart.id cart = Cart.objects.get(id=the_id) pizza = Pizzas.objects.get(id=pizza_id) changed_pizza = { 'crust': request.POST['crust'], 'toppings': sorted(request.POST.getlist('toppings')), 'sauceBase': request.POST['sauceBase'], 'diameter': request.POST['diameter'] } ingr = literal_eval(pizza.ingredients) ingr['toppings'] = sorted(ingr['toppings']) if ingr == changed_pizza: cart_item, created = CartItem.objects.get_or_create(cart=cart, pizzas=pizza) cart_item.line_total = pizza.price else: cart_item, created = CartItem.objects.get_or_create( cart=cart, pizzas=pizza, changes=str(changed_pizza)) price = 5 for topping in changed_pizza['toppings']: if topping[:3] == 'TME': elem = Meat.objects.get(id=topping).price elif topping[:3] == 'TMU': elem = Mushrooms.objects.get(id=topping).price elif topping[:3] == 'TFR': elem = Fruits.objects.get(id=topping).price elif topping[:3] == 'TFI': elem = Fish.objects.get(id=topping).price elif topping[:2] == 'TV': elem = Vegetables.objects.get(id=topping).price elif topping[:2] == 'TS': elem = Sauce.objects.get(id=topping).price else: elem = Cheese.objects.get(id=topping).price price += elem price += Diameter.objects.get(id=changed_pizza['diameter']).price cart_item.price_changed = round(price, 2) cart_item.line_total = cart_item.price_changed cart_item.quantity += 1 request.session['totalprice'] += cart_item.line_total cart_item.save() return HttpResponseRedirect(reverse("home")) else: pizza = Pizzas.objects.get(id=pizza_id) initial_toppings = literal_eval(pizza.ingredients)['toppings'] initial_crust = literal_eval(pizza.ingredients)['crust'] initial_sauceBase = literal_eval(pizza.ingredients)['sauceBase'] initial_diameter = literal_eval(pizza.ingredients)['diameter'] cheeses = Cheese.objects.all() crusts = Crust.objects.all() diameters = Diameter.objects.all() fish = Fish.objects.all() fruits = Fruits.objects.all() meats = Meat.objects.all() mushrooms = Mushrooms.objects.all() sauces = Sauce.objects.all() sauceBases = Saucebase.objects.all() vegetables = Vegetables.objects.all() new_toppings = list( itertools.zip_longest(cheeses, fish, fruits, meats, mushrooms, sauces, vegetables)) context = { 'pizza_id': pizza_id, 'toppings': new_toppings, 'crusts': crusts, 'diameters': diameters, 'sauceBases': sauceBases, 'initial_toppings': initial_toppings, 'initial_crust': initial_crust, 'initial_sauceBase': initial_sauceBase, 'initial_diameter': initial_diameter, } template = 'pizzaApp/edit.html' return render(request, template, context)
def add_to_cart(request, slug): request.session.set_expiry(120000) try: the_id = request.session['cart_id'] except: new_cart = Cart() new_cart.save() request.session['cart_id'] = new_cart.id the_id = new_cart.id cart = Cart.objects.get(id=the_id) try: product = Product.objects.get(slug=slug) except Product.DoesNotExist: pass except: pass product_var = [] #product variation if request.method == 'POST': qty = request.POST['qty'] for item in request.POST: key = item val = request.POST[key] try: v = Variation.objects.get(product=product, category__iexact=key, title__iexact=val) product_var.append(v) print(v) except: pass cart_item = CartItem.objects.create(cart=cart, product=product) if len(product_var) > 0: cart_item.variations.add(*product_var) cart_item.quantity = qty cart_item.save() new_total = 0.00 for item in cart.cartitem_set.all(): line_total = float(item.product.price) * item.quantity new_total += line_total request.session['items_total'] = cart.cartitem_set.count() print(cart.cartitem_set.count()) cart_item.line_total = line_total print(cart_item.line_total) cart_item.save() try: the_id = request.session['cart_id'] if the_id: cart = Cart.objects.get(id=the_id) print(cart) print('now it works') except: the_id = None return redirect(reverse('cart')) try: new_order = Order.objects.get(cart=cart) except Order.DoesNotExist: new_order = Order() new_order.cart = cart new_order.user = request.user new_order.order_id = id_generator() new_order.save() except: #work on some error message message.warning(request, 'You do not have an active order.') return redirect(reverse('cart')) #assign address #run credit card if new_order.status == 'Finished': del request.session['cart_id'] del request.session['items_total'] return redirect(reverse('cart')) return redirect(reverse('cart')) return redirect(reverse('cart'))