def get(self, request): cart, cart_objects_count = get_users_cart(request) categories = Category.objects.all() products_on_sale = Product.objects.filter(on_sale=True)[:4] compare_list = request.session.get('comparison_list', 0) compare_list_count = len(compare_list) if compare_list else 0 seo = ShowRoomModel.objects.first() foto_showroom = seo.fotos.all() context = { 'categories': categories, 'products_on_sale': products_on_sale, 'watched_products': get_watched_products(request.session.get('watched_products', None)), 'comparison_list': compare_list_count, 'cart_items_count': cart_objects_count, 'seo': seo, 'foto_showroom': foto_showroom, } return render(request, 'showroom/showroom.html', context)
def delivery_view(request): cart, cart_objects_count = get_users_cart(request) categories = Category.objects.all() products_on_sale = Product.objects.filter(on_sale=True)[:4] compare_list = request.session.get('comparison_list', 0) compare_list_count = len(compare_list) if compare_list else 0 delivery_types = DeliveryType.objects.all() delivery_page = DeliveryPageSeo.objects.first() delivery_foto = delivery_page.fotosdelivery.all() context = { 'categories': categories, 'products_on_sale': products_on_sale, 'watched_products': get_watched_products(request.session.get('watched_products', None)), 'comparison_list': compare_list_count, 'cart_items_count': cart_objects_count, 'delivery_types': delivery_types, 'delivery_page': delivery_page, 'delivery_foto': delivery_foto, } return render(request, 'cart/delivery.html', context)
def get(self, request): cart, cart_objects_count = get_users_cart(request, was_item_added=True) post_dict = dict(request.POST) del post_dict['csrfmiddlewaretoken'] for key, value in post_dict.items(): complect_item = Product.objects.get(id=key) complect_item_count = int(value[0]) complect_item_clear = Sizes.objects.get(product=complect_item) cart.add_to_cart(complect_item_clear, default_count=complect_item_count) return JsonResponse({'total': len(cart.products.all())})
def get(self, request): cart, cart_objects_count = get_users_cart(request, was_item_added=True) product_id = request.POST.get('product_id') color_id = request.POST.get('color_id', None) if not color_id is None: color = ProductColorsSizes.objects.get(id=color_id) else: color = None product = Sizes.objects.get(id=product_id) cart.add_to_cart(product, color) return JsonResponse({'total': cart.products.count()})
def get(self, request, slug): cart, cart_objects_count = get_users_cart(request) categories = Category.objects.all() products_on_sale = Product.objects.filter(on_sale=True)[:4] current_news_item = News.objects.get(slug=slug) compare_list = request.session.get('comparison_list', 0) compare_list_count = len(compare_list) if compare_list else 0 context = { 'categories': categories, 'products_on_sale': products_on_sale, 'current_news_item': current_news_item, 'watched_products': get_watched_products(request.session.get('watched_products', None)), 'comparison_list': compare_list_count, 'cart_items_count': cart_objects_count, } return render(request, 'news/detail_news.html', context)
def profile_view(request): cart, cart_objects_count = get_users_cart(request) categories = Category.objects.all() current_user = ShopUser.objects.get(user=request.user) compare_list = request.session.get('comparison_list', 0) compare_list_count = len(compare_list) if compare_list else 0 context = { 'categories': categories, 'current_user': current_user, 'comparison_list': compare_list_count, 'personal_data_state': 'true', 'cart_state': 'false', 'compare_state': 'false', 'orders_state': 'false', 'cart_items_count': cart_objects_count, } return render(request, 'auth/profile.html', context)
def get(self, request): contact_form = ContactForm(request.POST or None) product_categories = Category.objects.all() products_on_sale = Product.objects.filter(on_sale=True) news = News.objects.all()[:3] compare_list = request.session.get('comparison_list', 0) compare_list_count = len(compare_list) if compare_list else 0 cart, cart_objects_count = get_users_cart(request) seo = SeoHomePage.objects.first() context = { 'categories': product_categories, 'products_on_sale': products_on_sale, 'news': news, 'contact_form': contact_form, 'comparison_list': compare_list_count, 'cart_items_count': cart_objects_count, 'seo': seo, } return render(request, 'home/index.html', context)
def get(self, request): if request.user.is_authenticated: current_user = ShopUser.objects.get(user=request.user) else: current_user = None compare_list = request.session.get('comparison_list', 0) compare_list_count = len(compare_list) if compare_list else 0 cart, cart_objects_count = get_users_cart(request) if not cart is None: price_with_discount = cart.total_price delivery_cost = 0 if price_with_discount >= 20000 else 500 standart_sale = StandartSale.objects.first( ).sale if price_with_discount >= 20000 else 0 personal_sale = 0 if not request.user.is_authenticated else current_user.discount price_with_standart_discount = int(price_with_discount * (1 - standart_sale / 100)) price_with_personal_discount = int(price_with_standart_discount * (1 - personal_sale / 100)) result_price = price_with_personal_discount + delivery_cost else: result_price = 0 standart_sale = 0 categories = Category.objects.all() seo = PageCartSeo.objects.first() context = { 'cart': cart, 'orders_state': 'false', 'personal_data_state': 'false', 'cart_state': 'true', 'compare_state': 'false', 'cart_items_count': cart_objects_count, 'comparison_list': compare_list_count, 'current_user': current_user, 'categories': categories, 'price_with_discount': result_price, 'standart_sale': standart_sale, 'seo': seo, } return render(request, 'cart/cart.html', context)
def orders_view(request): cart, cart_objects_count = get_users_cart(request) compare_list = request.session.get('comparison_list', 0) compare_list_count = len(compare_list) if compare_list else 0 current_user = ShopUser.objects.get(user=request.user) orders = Order.objects.filter(user=current_user) orders_info_dict = defaultdict() orders_info_count = {} for order in orders: products = OrderItems.objects.filter(order=order) orders_info_dict[order.id] = products orders_info_count[order.id] = products.count() context = { 'personal_data_state': 'false', 'cart_state': 'false', 'compare_state': 'false', 'orders_state': 'true', 'comparison_list': compare_list_count, 'cart_items_count': cart_objects_count, 'orders': orders, 'orders_info': orders_info_dict, 'orders_info_count': orders_info_count } return render(request, 'cart/orders.html', context)
def get(self, request): cart, cart_objects_count = get_users_cart(request) product_id = request.GET.get('cart-item') product = Sizes.objects.get(id=product_id) cart.remove_from_cart(product) return HttpResponseRedirect(reverse('cart:cart_view'))
def make_order_view(request): cart, cart_objects_count = get_users_cart(request) total_cart_price = request.POST.get('total-cart-price') first_name = request.POST.get('first-name') email = request.POST.get('email') delivery_type = request.POST.get('delivery-type-radios') full_names = [ request.POST.get('full-name-1'), request.POST.get('full-name-2'), request.POST.get('full-name-3'), request.POST.get('full-name-4') ] phones = [ request.POST.get('phone-1'), request.POST.get('phone-2'), request.POST.get('phone-3'), request.POST.get('phone-4') ] delivery_deadlines = [ request.POST.get('delivery-deadline-1'), request.POST.get('delivery-deadline-2') ] additional_informations = [ request.POST.get('additional-information-1'), request.POST.get('additional-information-2'), request.POST.get('additional-information-3'), request.POST.get('additional-information-4') ] region = request.POST.get('region') city = request.POST.get('city') street = request.POST.get('street') house_number = request.POST.get('house-number') padik = request.POST.get('padik') flat_number = request.POST.get('flat-number') payment_type = request.POST.get('payment-type') org_name = request.POST.get('org-name') inn = request.POST.get('inn') legal_address = request.POST.get('legal-address') full_name = [x for x in full_names if x != ''] phone = [x for x in phones if x != ''] deadline = [x for x in delivery_deadlines if x != ''] info = [x for x in additional_informations if x != ''] full_name = full_name[0] if len(full_name) > 0 else None phone = phone[0] if len(phone) > 0 else None deadline = deadline[0] if len(deadline) > 0 else None info = info[0] if len(info) > 0 else None if house_number == '': house_number = None if padik == '': padik = None if flat_number == '': flat_number = None if request.user.is_authenticated: user = ShopUser.objects.get(user=request.user) else: if User.objects.filter(email=email).exists(): founded_user = User.objects.get(email=email) user = ShopUser.objects.get(user=founded_user) else: password = User.objects.make_random_password() new_user = User.objects.create(first_name=first_name, email=email) new_user.set_password(password) username = '******'.format('unknown_user_', new_user.id) new_user.username = username new_user.save() user = ShopUser.objects.create(user=new_user) send_user_data(username, password, email) new_order = Order.objects.create(user=user, name=first_name, full_name=full_name, phone=phone, email=email, additional_information=info, delivery_type=delivery_type, delivery_region=region, delivery_city=city, delivery_street=street, delivery_house=house_number, delivery_padik=padik, delivery_flat=flat_number, total_price=total_cart_price, delivery_deadline=deadline, payment_type=payment_type, org_name=org_name, inn=inn, legal_address=legal_address) for cart_item in cart.products.all(): OrderItems.objects.create(order=new_order, product=cart_item.product, count=cart_item.count, color=cart_item.color, total_price=cart_item.total_price) return HttpResponseRedirect(reverse('home:home-page'))