コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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'
#
#