def add_to_cart(request, product=None, int_product_pk=None, product_url=None, quantity=None, available_to_order=None, ): if not product: product = get_product(int_product_pk, product_url, ) """ Взятие корзины, или создание если её нету """ product_cart, created = get_cart_or_create(request, created=True, ) try: """ Присутсвие конкретного продукта в корзине """ product_in_cart = product_cart.cart.get(product=product, ) except models_cart.Product.DoesNotExist: """ Занесение продукта в корзину если его нету """ if not quantity: quantity = product.minimal_quantity if available_to_order is None: available_to_order = product.is_availability == 2 if available_to_order is True: price = product.price / 2 percentage_of_prepaid = 50 else: price = product.price percentage_of_prepaid = 100 """ Временная хрень. Так как потом возможно нужно будет перейти на количество с дробной частью. """ try: quantity = int(quantity, ) except ValueError: if '.' in quantity: quantity = quantity.split('.')[0] elif ',' in quantity: quantity = quantity.split(',')[0] else: quantity = 1 try: quantity = int(quantity, ) except ValueError: quantity = 1 product_in_cart = models_cart.Product.objects.create( key=product_cart, product=product, price=price, # True - Товар доступен под заказ. available_to_order=available_to_order, # 50% - предоплата. percentage_of_prepaid=percentage_of_prepaid, quantity=quantity, ) else: if not quantity: quantity = product.quantity_of_complete product_in_cart.summ_quantity(quantity, ) # quantity += exist_cart_option.quantity product_in_cart.update_price_per_piece() # finally: # product_in_cart.update_price_per_piece() return product_cart, product_in_cart
def add_to_cart(request, product=None, int_product_pk=None, product_url=None, quantity=None, available_to_order=None, ): # postdata = request.POST.copy() # get product slug from post data, return blank if empty # if not product_pk: # product_pk = int(postdata.get(u'product_pk', None, ), ) # if not product_url: # product_url = postdata.get(u'product_url', None, ) if not product: product = get_product(int_product_pk, product_url, ) # get quantity added, return 1 if empty # if not quantity: # quantity = int(postdata.get('quantity', 1, ), ) #get cart """ Взятие корзины, или создание если её нету """ from apps.cart.views import get_cart_or_create product_cart, created = get_cart_or_create(request, created=True, ) # print 'Cart created:', created from apps.cart.models import Product try: """ Присутсвие конкретного продукта в корзине """ product_in_cart = product_cart.cart.get(product=product, ) # change_exist_cart_option(cart_option=exist_cart_option, quantity=quantity, ) except Product.DoesNotExist: """ Занесение продукта в корзину если его нету """ if not quantity: quantity = product.minimal_quantity if available_to_order is True: price = product.price / 2 percentage_of_prepaid = 50 else: price = product.price percentage_of_prepaid = 100 product_in_cart = Product.objects.create(key=product_cart, product=product, price=price, # True - Товар доступен под заказ. available_to_order=available_to_order, # 50% - предоплата. percentage_of_prepaid=percentage_of_prepaid, quantity=quantity, ) else: if not quantity: quantity = product.quantity_of_complete product_in_cart.summ_quantity(quantity, ) # quantity += exist_cart_option.quantity product_in_cart.update_price_per_piece() # finally: # product_in_cart.update_price_per_piece() return product_cart, product_in_cart
def context(request): try: static_pages = Static.objects.all() except Static.DoesNotExist: static_pages = None try: currency = Currency.objects.all() except Currency.DoesNotExist: currency = None """ Проверяем session на наличие currency pk """ currency_pk = request.session.get(u'currency_pk', None, ) if currency_pk: try: currency_pk = int(currency_pk, ) except ValueError: request.session[u'currency_pk'] = 1 current_currency = currency.get(pk=1, ) else: try: current_currency = currency.get(pk=currency_pk, ) except Currency.DoesNotExist: current_currency = currency.get(pk=1, ) else: request.session[u'currency_pk'] = currency_pk else: request.session[u'currency_pk'] = 1 current_currency = currency.get(pk=1, ) try: slides = Slide.manager.visible() except Slide.DoesNotExist: slides = None try: categories_basement = Category.objects.basement() except Category.DoesNotExist: categories_basement = None if request.user.is_authenticated() and request.user.is_active: user_id_ = request.session.get(u'_auth_user_id', None, ) # from django.contrib.auth.models import User UserModel = get_user_model() try: user_id_ = int(user_id_, ) except ValueError: user_object = None else: user_object = UserModel.objects.get(pk=user_id_, ) else: user_object = None user_cart = get_cart_or_create(request, user_object=user_object, created=False, ) if user_cart: coupons = user_cart.Cart_child.all() """ Проверяем СПИСОК [] на пустоту """ if coupons: coupon = coupons[0] else: coupon = None else: coupon = None # sessionid_carts = Carts.objects.filter(user_obj=None, sessionid=SESSIONID_SESSION_, # order=None, account=None, package=None, ) #cartid=cartid, # except: # sessionid_carts = None # #viewed_count = viewed.count() product = None product_pk = None # from apps.product.models import Product # try: # product_count = Product.objects.count() # except Product.DoesNotExist: # pass # else: # if product_count > 0: # from random import randint # product_pk = randint(1, product_count, ) # try: # product = Product.objects.get(pk=product_pk, ) # except Product.DoesNotExist: # pass if not request.method == 'GET': print 'request.method', request.method else: if user_object: full_path = request.path """ Оказывается get_full_path() возвращает полный путь со строкой запроса в случае запроса типа GET и долбанный resolve не может её тогда обработать и вываливается с кодом 404. """ try: """ Вот где выскакивает эта ошибка """ # print 'HTTP_ACCEPT: ', request.META.get('HTTP_ACCEPT', None, ) # print 'HTTP_ACCEPT_ENCODING: ', request.META.get('HTTP_ACCEPT_ENCODING', None, ) # print 'HTTP_ACCEPT_LANGUAGE: ', request.META.get('HTTP_ACCEPT_LANGUAGE', None, ) # print 'LANG: ', request.META.get('LANG', None, ) # print 'LANGUAGE: ', request.META.get('LANGUAGE', None, ) # print 'PYTHONIOENCODING: ', request.META.get('PYTHONIOENCODING', None, ) # print 'REQUEST_METHOD: ', request.META.get('REQUEST_METHOD', None, ) print 'resolve:' view, args, kwargs = resolve(full_path, ) except UnicodeDecodeError: print 'Error: ' print full_path.encode('utf8', ) except Resolver404: try: print 'request.get_full_path(): ', request.get_full_path() except: pass try: print 'Error: Resolver404 - cp1252 [2]', full_path.split('/')[2].encode('cp1252', ) print 'Error: Resolver404 - cp1252', full_path.encode('cp1252', ) except: pass try: print 'Error: Resolver404 - utf8 - cp1252', full_path.encode('utf8').encode('cp1252', ) except: pass try: print 'Error: Resolver404 - utf8', full_path.encode('utf8', ) except: print 'Error: Resolver404 - utf8', 'print value: Error' # else: # try: # print 'resolve(full_path, ) : view = ', view, ' args = ', args, ' kwargs = ', kwargs # except: # pass # try: # print 'Not error: ', request.path # except UnicodeEncodeError: # print 'Not print Not error: UniceodeEncodeError' if 'view' in locals() and view == show_product: try: product_pk = int(kwargs[u'id'], ) except ValueError: pass else: print product_pk, kwargs[u'product_url'].encode('utf8') """ Убираем НАХРЕН проверку именования товара product_url """ # product = get_product(product_pk=product_pk, product_url=kwargs[u'product_url'], ) product = get_product(product_pk=product_pk, ) sessionid = request.COOKIES.get(u'sessionid', None, ) viewed = None viewed = get_or_create_Viewed(request, int_product_pk=product_pk, product=product, user_obj=user_object, sessionid=sessionid, ) return dict(static_pages_=static_pages, currency_=currency, current_currency_=current_currency, slides_=slides, categories_basement_=categories_basement, user_cart_=user_cart, coupon_=coupon, viewed_=viewed, ) # # print type(full_path, ) # value = None # if isinstance(full_path, unicode): # try: # value = full_path.encode('us-ascii', ) # except: # print 'Not US-ASCII' # try: # value = full_path.encode('utf8') # except: # pass # else: # try: # print 'utf8', type(value, ), value # except: # print 'utf8', type(value, ), 'print value: Error' # try: # value = full_path.decode('cp866').encode('utf8') # except: # pass # else: # try: # print 'cp866', type(value, ), value # except: # print 'cp866', type(value, ), 'print value: Error' # try: # value = full_path.decode('cp1251').encode('utf8') # except: # pass # else: # try: # print 'cp1251', type(value, ), value # except: # print 'cp1251', type(value, ), 'print value: Error' # try: # value = full_path.decode('cp1252').encode('utf8') # except: # pass # else: # try: # print 'cp1252 -1', type(value, ), value # except: # print 'cp1252 -1', type(value, ), 'print value: Error' # try: # value = full_path.encode('cp1252') # except: # pass # else: # try: # print 'cp1252 -2', type(value, ), value # except: # print 'cp1252 -2', type(value, ), 'print value: Error' # #try: # # value = full_path.encode('cp1252').decode('utf8') # #except: # # pass # #else: # # print 'cp1252 -3', type(value, ), value # try: # value = full_path.encode('cp1252').encode('utf8') # except: # pass # else: # try: # print 'cp1252 -4', type(value, ), value # except: # print 'cp1252 -4', type(value, ), 'print value: Error' # #try: # # value = full_path.encode('utf8').decode('cp1252').encode('utf8') # #except: # # pass # #else: # # print 'cp1252 -5', type(value, ), value # try: # value = full_path.encode('utf8').encode('cp1252') # except: # pass # else: # try: # print 'cp1252 -6', type(value, ), value # except: # print 'cp1252 -6', type(value, ), 'print value: Error' # try: # value = full_path.decode('koi8').encode('utf8') # except: # pass # else: # try: # print 'koi8', type(value, ), value # except: # print 'koi8', type(value, ), 'print value: Error' # else: # try: # print 'ascii', type(value, ), value # except: # print 'ascii', type(value, ), 'print value: Error' # #