def update_cart(request): pending = '' qerror = '' from django.middleware.csrf import get_token csrf_token = get_token(request) reload = 'location.reload(true);' if request.method == 'POST': postdata = request.POST.copy() page_title = postdata['page_title'] if postdata['submit'] == 'Remove': if pending_checker(request) == 0: pending = 'You have a pending transaction on this cart' else: cart.remove_from_cart(request) if postdata['submit'] == 'Update': if pending_checker(request) == 0: pending = 'You have a pending transaction on this cart' else: try: int(postdata['quantity']) cart.update_cart(request) except: if cart.cart_distinct_item_count(request) > 0: qerror = 'Invalid Quantity Value' paid = '' subtotal = cart.cart_subtotal(request) cart_items = cart.get_cart_items(request) cart_item_count = cart.cart_distinct_item_count(request) # Put this in here so that it cuts across all pages and it is related to cart. See function def for comments if bgprocess(request) == 0: paid = "(Paid)" cart_template = "tags/cart_box.html" cart_html = render_to_string(cart_template, locals()) if len(pending) == 0 and len(qerror) == 0: cart_items = cart.get_cart_items(request) cart_subtotal = cart.cart_subtotal(request) template = "cart/cart_preview.html" html = render_to_string(template, locals()) print(html) response = simplejson.dumps({ 'success': 'True', 'html': html, 'cart_html': cart_html }) else: html = '<p class="errorlist">{{ qerror }}</p>' response = simplejson.dumps({'success': 'False', 'html': html}) return HttpResponse(response, content_type='application/javascript; charset=utf-8')
def cart_box(request): """Tag for shopping cart box """ cart_item_count = cart.cart_distinct_item_count(request) return { 'cart_item_count': cart_item_count }
def change_info(request, template_name="change-success.html"): success = "Не удалось сменить данные!" categories = Category.objects.filter(is_active=True) brands = Brand.objects.filter(is_active=True) cart_distinct = cart.cart_distinct_item_count(request) if (request.method=='POST'): phone = request.POST['username'] username = "" num = ['0','1','2','3','4','5','6','7','8','9'] for c in phone: if c in num: username+=c username = str(username) name = request.POST['first_name'] address = request.POST['email'] u = auth.models.User.objects.get(username=request.user.username) u.first_name = name u.email = address u.username = username try: u.save() success = "Данные изменены успешно!" except: success = "Такой номер телефона уже использует другой человек!" return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def product_add_to_cart(request, template_name = "catalog/subcategory.html"): cart.add_to_cart(request) cart_items = serializers.serialize("json", cart.get_cart_items(request)) cart_item_count = cart.cart_distinct_item_count(request) result = {'cart_items' : cart_items ,'cart_item_count' : cart_item_count} print(result) return HttpResponse(json.dumps(result),content_type='application/javascript; charset=utf-8')
def cart_item_change(request,template_name): print('cart_item_change') print(request.POST) cart.update_cart(request) print('updated') cart_items_list = [] cart_items = cart.get_cart_items(request) # serializers.serialize("json", ) cart_item_count = cart.cart_distinct_item_count(request) # result = {'cart_items' : cart_items ,'cart_item_count' : cart_item_count} print(cart_item_count) for c in cart_items: # print(c) item = {} item.setdefault('image',c.image()) item.setdefault('name',c.name()) item.setdefault('quantity',c.quantity) price = str(c.price()) item.setdefault('unit_price',price) total = str(c.total()) item.setdefault('total_price',total) item.setdefault('id',c.id) # print(item) cart_items_list.append(item) # print(cart_items_list) # cart_items = serializers.serialize("json", cart_items_list) # print(cart_items) result = {'cart_items' : cart_items_list ,'cart_item_count' : cart_item_count} print(json.dumps(result)) print('++++++++++++++++++++++++++++++') return HttpResponse(json.dumps(result),content_type='application/javascript; charset=utf-8')
def get_cart_data(request, context={}): from cart import cart # expand : boolean; if true then the cart items will returned in dictionary along with values, else direct browsed objects will be returned cart_items = cart.get_cart_items(request) item_ids = [] res = {'cart_items': {}} for item in cart_items: item_ids.append(item.product.id) res['cart_items'].update(get_item_deails(item)) result_quantities = get_products_availability(item_ids) final_items_list = [] for item in cart_items: available_qty = result_quantities.get(str(item.product_id), {'virtual_available': 0}) res['cart_items'][item.id].update({'qty': available_qty}) if canbe_checkedout(res['cart_items'][item.id]): final_items_list.append(item) cart_total = cart.get_cart_total(final_items_list) discount = cart.get_cart_discount(final_items_list, request) discount_percentage = cart.get_discount_percentage(cart_total, discount) net_total = round(cart.get_net_total(discount_percentage, cart_total), 2) cart_item_count = cart.cart_distinct_item_count(final_items_list) res.update({ 'cart_item_count': cart_item_count, 'discount_percentage': discount_percentage, 'discount': discount, 'net_total': net_total, 'cart_total': cart_total, 'checkout_cart_items': final_items_list, 'actual_cart_items': cart_items }) return res
def cart_box_menu(request): """Tag for shopping cart box in menu bar """ cart_item_count = cart.cart_distinct_item_count(request) cart_items = cart.get_cart_items(request) return { 'cart_item_count': cart_item_count, 'cart_items': cart_items }
def ecomstore(request): return { 'site_name': settings.SITE_NAME, 'meta_keywords': settings.META_KEYWORDS, 'meta_description': settings.META_DESCRIPTION, 'MEDIA_URL': settings.MEDIA_URL, 'request': request, 'cart_item_count': cart_distinct_item_count(request), 'pending': pending_checker(request) }
def del_item(request, template_name="catalog/subcategory.html"): cart.remove_from_cart(request) cart_item_count = cart.cart_distinct_item_count(request) cart_subtotal = cart.cart_subtotal(request) result = { 'cart_item_count': cart_item_count, 'cart_subtotal': str(cart_subtotal) } print(result) return HttpResponse(json.dumps(result), content_type='application/javascript; charset=utf-8')
def profile(request, template_name='profile.html'): user = auth.get_user(request) categories = Category.objects.filter(is_active=True) brands = Brand.objects.filter(is_active=True) cart_distinct = cart.cart_distinct_item_count(request) username = user.username u = auth.models.User.objects.get(username=username) first_name = u.first_name email = u.email return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def showForm(request, template_name='checkout.html'): if request.user.is_authenticated: try: u = auth.get_user(request) phone = u.username address = u.email name = u.first_name except: pass cart_distinct = cart.cart_distinct_item_count(request) categories = Category.objects.filter(is_active=True) brands = Brand.objects.filter(is_active=True) return HttpResponse(render_to_response(template_name, locals(), context_instance=RequestContext(request)))
def cart_box(request): paid = '' subtotal = cart.cart_subtotal(request) cart_items = cart.get_cart_items(request) cart_item_count = cart.cart_distinct_item_count(request) # Put this in here so that it cuts across all pages and it is related to cart. See function def for comments if bgprocess(request) == 0: paid = "(Paid)" return { 'cart_item_count': cart_item_count, 'paid': paid, 'cart_items': cart_items, 'subtotal': subtotal }
def show_cart(request, template_name="cart/cart.html"): if request.method == 'POST': post_data = request.POST.copy() if post_data['submit'] == 'Remove': cart.remove_from_cart(request) if post_data['submit'] == 'Update': cart.update_cart(request) if post_data['submit'] == 'Checkout': url = urlresolvers.reverse('show_checkout') return HttpResponseRedirect(url) cart_items = cart.get_cart_items(request) cart_item_count = cart.cart_distinct_item_count(request) cart_subtotal = cart.cart_subtotal(request) page_title = 'Shopping Cart' return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def cart_box(request): currency_symbol = request.session.get('currency_symbol', '$') currency_rate = request.session.get('currency_rate', 1) cart_item_count = cart.cart_distinct_item_count(request) # return {'cart_item_count' : cart_item_count } cart_items = cart.get_cart_items(request) print('++++++++++++++++++++++++') for c_item in cart_items: c_item.price = math.floor( c_item.price() / decimal.Decimal(currency_rate) * 100) / 100 cart_subtotal = cart.cart_subtotal(request) print(cart_subtotal) return { 'cart_items': cart_items, 'cart_item_count': cart_item_count, 'cart_subtotal': cart_subtotal, 'currency_symbol': currency_symbol }
def product(request, product_slug, template_name="product-details.html"): product = get_object_or_404(Product, slug=product_slug) categories = Category.objects.filter(is_active=True) page_title = product.name brands = Brand.objects.filter(is_active=True) cart_distinct = cart.cart_distinct_item_count(request) if request.method == 'POST': postdata = request.POST.copy() form = ProductAddToCartForm(request, postdata) if True: # form.is_valid(): cart.add_to_cart(request) if request.session.test_cookie_worked(): request.session.delete_test_cookie() return HttpResponseRedirect('/cart/') else: form = ProductAddToCartForm(request=request, label_suffix=':') form.fields['product_slug'].widget.attrs['value'] = product_slug return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def change_password(request, template_name="change-success.html"): success = "Пароль сменить не удалось" categories = Category.objects.filter(is_active=True) brands = Brand.objects.filter(is_active=True) cart_distinct = cart.cart_distinct_item_count(request) if (request.method=='POST'): oldpassword = request.POST['oldpassword'] newpassword = request.POST['newpassword'] username = request.user.username user = auth.authenticate(username=username, password=oldpassword) if user is not None and user.is_active: u = auth.models.User.objects.get(username=username) u.set_password(newpassword) u.save() success = "Пароль успешно изменен!" else: success = "Неверно введен текущий пароль!" return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def show_cart(request, template_name="cart/cart.html"): request.session.set_test_cookie() next1 = '' recent_views = stats.recommended_from_views(request) if request.method == 'POST': print(request.session['cart_id']) postdata = request.POST.copy() if postdata['submit'] == 'Remove': if pending_checker(request) == 0: url = reverse('show_checkout', args=['Lipa']) return HttpResponseRedirect(url) cart.remove_from_cart(request) next1 = request.GET.get('next', '') if len(next1) > 0: url = reverse('show_checkout', args=[next1]) return HttpResponseRedirect(url) if postdata['submit'] == 'Update': if pending_checker(request) == 0: url = reverse('show_checkout', args=['Lipa']) return HttpResponseRedirect(url) try: int(postdata['quantity']) cart.update_cart(request) next1 = request.GET.get('next', '') if len(next1) > 0: url = reverse('show_checkout', args=[next1]) return HttpResponseRedirect(url) except: if cart.cart_distinct_item_count(request) > 0: qerror = 'Invalid Quantity Value' if postdata['submit'] == 'Card Checkout': checkout_url = checkout.get_checkout_url(request) return HttpResponseRedirect(checkout_url) if postdata['submit'] == 'Mpesa Checkout': checkout_url = checkout.get_checkout_url(request) return HttpResponseRedirect(checkout_url) if len(next1) > 0: url = reverse('show_checkout', args=[next1]) return HttpResponseRedirect(url) cart_items = cart.get_cart_items(request) page_title = 'Shopping Cart' cart_subtotal = cart.cart_subtotal(request) return render(request, template_name, locals(), RequestContext(request))
def show_cart(request, template_name="cart/cart.html"): if request.method == 'POST': postdata = request.POST.copy() if postdata['submit'] == 'Remove': cart.remove_from_cart(request) if postdata['submit'] == 'Update': try: int(postdata['quantity']) cart.update_cart(request) except: if cart.cart_distinct_item_count(request) > 0: qerror = 'Invalid Quantity Value' if postdata['submit'] == 'Card Checkout': checkout_url = checkout.get_checkout_url(request) return HttpResponseRedirect(checkout_url) if postdata['submit'] == 'Mpesa Checkout': checkout_url = checkout.get_checkout_url(request) return HttpResponseRedirect(checkout_url) cart_items = cart.get_cart_items(request) page_title = 'Shopping Cart' cart_subtotal = cart.cart_subtotal(request) return render(request, template_name, locals(), RequestContext(request))
def home(request, page_number=1, template_name="shop.html"): categories = Category.objects.filter(is_active=True) brands = Brand.objects.filter(is_active=True) items = Product.objects.filter(is_active=True) current_page = Paginator(items, 12) cart_distinct = cart.cart_distinct_item_count(request) login = request.user.is_authenticated() if request.method == 'POST': postdata = request.POST.copy() form = ProductAddToCartForm(request, postdata) if True: # form.is_valid() cart.add_to_cart(request) if request.session.test_cookie_worked(): request.session.delete_test_cookie() return HttpResponseRedirect('/cart/') else: form = ProductAddToCartForm(request=request, label_suffix=':') items = current_page.page(page_number) return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def category(request, cat, page_number=1): categories = Category.objects.filter(is_active=True) brands = Brand.objects.filter(is_active=True) category = Category.objects.get(slug=cat) items = Product.objects.filter(categories=category).filter(is_active=True) # maxPrice = str(Product.objects.all().aggregate(Max('price'))['price__max']) # minPrice = str(Product.objects.all().aggregate(Min('price'))['price__min']) current_page = Paginator(items, 12) cart_distinct = cart.cart_distinct_item_count(request) context = { 'categories': categories, 'brands': brands, # 'minPrice': minPrice, # 'maxPrice': maxPrice, 'items': current_page.page(page_number), 'category': cat, 'cart_distinct': cart_distinct, } return HttpResponse(render_to_string('shop-category.html', context))
def cart_box(request): cart_item_count = cart.cart_distinct_item_count(request) return {'cart_item_count': cart_item_count}
def cart_box(request): cart_item_count = cart.cart_distinct_item_count(request) return {'cart_item_count': cart_item_count }
def cart_box(request): cart_subtotal=cart.cart_subtotal(request) cart_item_count = cart.cart_distinct_item_count(request) return locals()
def cart_box(request): box_count = cart.cart_distinct_item_count(request) return { 'box_count': box_count, }
def loginpage(request,template_name='login.html'): categories = Category.objects.filter(is_active=True) brands = Brand.objects.filter(is_active=True) cart_distinct = cart.cart_distinct_item_count(request) return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def getOrder(request, type): categories = Category.objects.filter(is_active=True) brands = Brand.objects.filter(is_active=True) if request.method == 'POST': postdata = request.POST.copy() try: address = postdata.get('address') except: address = ' ' name = postdata.get('namefield') phone = postdata.get('phone') delivery = postdata.get('delivery') payment = postdata.get('payment') # post form sends a string value if delivery == 'True': delivery = True else: delivery = False if payment == 'True': payment = True else: payment = False p = 0 if int(type) == 0: total = cart.cart_subtotal(request) else: p = Product.objects.get(id=type) p.quantity -= 1 p.save() total = p.price newOrder = Order(name=name, phone=phone, address=address, total=total, is_card_payment=payment, is_delivery=delivery) newOrder.save() if int(type) == 0: oCart = cart.get_cart_items(request) for ci in oCart: oi = OrderItem(product=ci.product, order=newOrder, quantity=ci.quantity) oi.save() ci.product.quantity -= ci.quantity ci.product.save() cart.empty_cart(request) else: oi = OrderItem(product=p, order=newOrder, quantity=1) oi.save() context = { 'id': newOrder.id, 'opened': newOrder.opened_at, 'success': True, 'cart_distinct': 0, 'categories': categories, 'brands': brands, } else: cart_distinct = cart.cart_distinct_item_count(request) context = { 'success': False, 'cart_distinct': cart_distinct, 'categories': categories, 'brands': brands, } return HttpResponse(render_to_response('checkout-success.html', context, context_instance=RequestContext(request)))
def login_error(request,template_name="login_error.html"): user = auth.get_user(request) categories = Category.objects.filter(is_active=True) brands = Brand.objects.filter(is_active=True) cart_distinct = cart.cart_distinct_item_count(request) return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def add_model(request,model,template_name=""): # show_model(request,model,template_name) # print(); result = ""; if request.method == 'POST': print('add') if request.POST.get('mode')=='add_cart_item': cart.add_to_cart(request) cart_items_list = [] cart_items = cart.get_cart_items(request) # serializers.serialize("json", ) cart_item_count = cart.cart_distinct_item_count(request) # result = {'cart_items' : cart_items ,'cart_item_count' : cart_item_count} # print(cart_item_count) for c in cart_items: # print(c) item = {} item.setdefault('image',c.image()) item.setdefault('name',c.name()) item.setdefault('quantity',c.quantity) price = str(c.price()) item.setdefault('unit_price',price) total = str(c.total()) item.setdefault('total_price',total) item.setdefault('id',c.id) # print(item) cart_items_list.append(item) # print(cart_items_list) # cart_items = serializers.serialize("json", cart_items_list) # print(cart_items) result = {'cart_items' : cart_items_list ,'cart_item_count' : cart_item_count} # print(json.dumps(result)) print('++++++++++++++++++++++++++++++') return HttpResponse(json.dumps(result),content_type='application/javascript; charset=utf-8') else: if model == 'people': name = request.POST.get('name') islug = slug(name) category = Category() category.name = name category.description = request.POST.get('description') is_active = request.POST.get('is_active') if is_active=="on": category.is_active = True else: category.is_active = False category.slug = islug category.updated_at = datetime.datetime.now().strftime("%m/%d/%Y") category.created_at = datetime.datetime.now().strftime("%m/%d/%Y") category.save() result = "saved" print('add people') elif model == 'subcategory': subcategory = SubCategory() subcategory.name = request.POST.get('name') subcategory.description = request.POST.get('description') subcategory.slug = slug(subcategory.name) is_active = request.POST.get('is_active') subcategory.updated_at = datetime.datetime.now().strftime("%m/%d/%Y") subcategory.created_at = datetime.datetime.now().strftime("%m/%d/%Y") if is_active=="on": subcategory.is_active = True else: subcategory.is_active = False subcategory.save() selected_c = json.loads(request.POST.get('selected_categories')) for s_c in selected_c: c = get_object_or_404(Category, slug=s_c) subcategory.categories.add(c) subcategory.save() print('add subcategory') elif model == 'product': p = Product() postdata = request.POST.copy() p.name = postdata.get('name','a') product_name = postdata.get('name','a') p.brand = postdata.get('brand') p.sku = postdata.get('sku') p.price = postdata.get('price') p.old_price = postdata.get('old_price') p.quantity = postdata.get('quantity') p.description = postdata.get('description') # print(postdata.get('user')) user = get_object_or_404(MyUser, username=postdata.get('user')) p.user = user p.slug = slug(p.name) is_active = request.POST.get('is_active') if is_active=="on": p.is_active = True else: p.is_active = False p.updated_at = datetime.datetime.now().strftime("%m/%d/%Y") p.created_at = datetime.datetime.now().strftime("%m/%d/%Y") if request.FILES: print('image_exist') p_main_file=request.FILES['img'] file_extention = os.path.splitext(str(request.FILES['img']))[1] # print(file_extention) # file_name = str(request.FILES['img']).split('.') # file_extention = file_name[len(file_name)-1] image_name = str(user)+'_'+p.name+file_extention p_thumbnail_file=request.FILES['img'] with open(MEDIA_ROOT+'images/products/thumbnails/'+image_name, 'wb+') as destination: if p_thumbnail_file.multiple_chunks(): for chunk in p_thumbnail_file.chunks(): destination.write(chunk) else: destination.write(p_thumbnail_file.read()) with open(MEDIA_ROOT+'images/products/thumbnails/'+image_name, 'rb+') as destination: image_file = destination.read() with open(MEDIA_ROOT+'images/products/main/'+image_name, 'wb+') as destination: destination.write(image_file) p.image=image_name else: print('image_empty') p.image='default' p.save() selected_subc = json.loads(request.POST.get('selected_subcategories')) for p_subc in selected_subc: subc = get_object_or_404(SubCategory, slug=p_subc) p.subcategories.add(subc) p.save() print('add product') elif model == 'myuser': user = MyUser() postdata = request.POST.copy() user.username = postdata.get('name') user.first_name = postdata.get('first_name') user.last_name = postdata.get('last_name') ##########change date format###########YYYY-MM-DD # date_of_birth = postdata.get('date_of_birth') # date_list = date_of_birth.split('/') # join_str = '-' # user.date_of_birth = join_str.join(date_list) user.date_of_birth = postdata.get('date_of_birth') ######################################## user.address = postdata.get('address','a') user.telephone = postdata.get('telephone') user.password = make_password(postdata.get('password')) user.is_active = True user.is_staff = True user.save() print('add myuser') elif model == 'order': order = Order() postdata = request.POST.copy() myuser = get_object_or_404(MyUser, username=postdata.get('user')) print(postdata) order.address = myuser.address order.phone = myuser.telephone order_status = get_object_or_404(OrderStatus, id=postdata.get('status')) print(order_status.name) order.status = order_status order.ip_address = postdata.get('ip_address') # user = get_object_or_404(MyUser, username=postdata.get('user')) order.user = myuser order.transaction_id = postdata.get('transaction_id') order.last_updated = datetime.datetime.now().strftime("%m/%d/%Y") order.save() print(order.id); cart_items = cart.get_cart_items(request) for c in cart_items: orderitem = OrderItem() orderitem.product = c.product orderitem.price = c.price() orderitem.quantity = c.quantity orderitem.order = order orderitem.save() print('add order') elif model == 'orderitem': orderitem = OrderItem() postdata = request.POST.copy() product = get_object_or_404(Product, slug=postdata.get('product')) orderitem.product = product orderitem.price = product.price orderitem.quantity = postdata.get('quantity') order = get_object_or_404(Order, id=postdata.get('order')) orderitem.order = order orderitem.save() print('add orderitem') # return show_model(request,model,'') url = urlresolvers.reverse('model',kwargs = {'model':model}) return HttpResponseRedirect(url) else: app_list = permission_app(request) # print('_________________addpermission_________________') if check_permission(request,'add',model): if model == 'people': print('category') elif model == 'subcategory': category = Category.objects.all() print('subcategory') elif model == 'product': user_list = MyUser.objects.all() subcategory = SubCategory.objects.all() print('product') print(subcategory) elif model == 'myuser': print('myuser') elif model == 'order': cart.clean(request) user_list = MyUser.objects.all() product = Product.objects.all() order_status = OrderStatus.objects.all() # print(request.GET) # print('-------------------------------') # cart.add_to_cart(request) # cart_items = serializers.serialize("json", cart.get_cart_items(request)) # cart_item_count = cart.cart_distinct_item_count(request) # result = {'cart_items' : cart_items ,'cart_item_count' : cart_item_count} # print(result) # print('++++++++++++++++++++++++++++++=') # return HttpResponse(json.dumps(result),content_type='application/javascript; charset=utf-8') print('order') elif model == 'orderitem': product = Product.objects.all() order_list = Order.objects.all() print('orderitem') # subcategories = SubCategory.objects.all() template_name = 'myadmin/add/'+model+'.html' return render_to_response(template_name, locals(),context_instance=RequestContext(request)) else: template_name = 'myadmin/err.html' return render_to_response(template_name, locals(),context_instance=RequestContext(request))
def cart_box(request): cart_item_count = cart_distinct_item_count(request) return {"cart_item_count": cart_item_count}