Esempio n. 1
0
    def post(self, request):
        # 接收参数,并转换成字典
        data = request.POST.dict()

        # 字典保存用户
        data['user_id'] = request.session.get("ID")  # form自动转换功能

        # 验证参数
        form = AddressForm(data)
        if form.is_valid():
            form.instance.user = User.objects.get(pk=data['user_id'])
            form.save()
            return JsonResponse(json_msg(0, '添加成功'))
        else:
            return JsonResponse(json_msg(1, '添加失败', data=form.errors))
def create_property(request):
    if not request.user.userprofile.is_landlord:
        messages.error(request, "you cant do that")
        return redirect('rentals-home')
    else:
        if request.method == 'POST':
            form = PropertyForm(request.POST, request.FILES)
            address_form = AddressForm(request.POST)

            if form.is_valid() and address_form.is_valid():
                a = address_form.save()

                p = Property.objects.create(address=a,
                                            posted_by=request.user.userprofile,
                                            price_per_day=form.cleaned_data.get('price_per_day'),
                                            property_description=form.cleaned_data.get('property_description'),
                                            thumbnail=form.cleaned_data.get('thumbnail'),
                                            )


                print(f'created property: {p}')
                messages.success(request, f"{p}")
                return redirect('list-listings')

            else:
                messages.error(request, f" could not create property")
                print(f'there was a problem... af{address_form.is_valid()},   form:{form.is_valid()}')
                return redirect('prop-create')

        else:
            form = PropertyForm()
            address_form = AddressForm()

    context = {
        'form': form,
        'address_form': address_form
    }
    return render(request, 'rentals/create_property_posting.html', context=context)
Esempio n. 3
0
File: views.py Progetto: wooshe/Shop
def profile_view(request):
    user = request.user

    if not user.is_authenticated:
        return custom_redirect('anonymous_profile',
                               order_id=request.GET.get('order_id'),
                               success_pay=request.GET.get('success_pay'))

    if request.method == 'GET':

        if request.GET.get('method') == 'get_order':
            try:
                order = Order.objects.get(id=request.GET.get('order_id'))
                order_response = render_template('order_expand.html',
                                                 {'order': order}, request)
                return JsonResponse({
                    'order_response': order_response,
                    'result': 'success'
                })
            except:
                return JsonResponse({'result': 'error'})

        if request.GET.get('method') == 'order_confirm_delivery':
            try:
                order = Order.objects.get(id=request.GET.get('order_id'))
                order.send_confirm = True
                order.save()
                return JsonResponse({'result': 'success'})
            except:
                return JsonResponse({'result': 'error'})

        context = {}
        context['message_act'] = 'false'
        context['success_pay'] = 'False'

        order_id = request.GET.get('order_id')

        if str(order_id) != 'None' and str(
                request.GET.get('success_pay')) == 'None':

            context['order_id'] = order_id

            user_form = UserForm(instance=request.user)
            address_form = AddressForm(instance=request.user.profile)
            password_change_form = PasswordChangeForm()

            response = status_pay(order_id)

            url = reverse('profile')
            if response['ret_status'] != 'error':
                if response['status'] == 'authorized' or response[
                        'status'] == 'acknowledged':
                    url += '?success_pay=True&order_id=' + order_id
                    context['success_pay'] = 'True'

            context.update({
                'redirect_url': url,
                'user_form': user_form,
                'address_form': address_form,
                'with_save': "true",
                'password_change_form': password_change_form
            })

            getDataForNavBaR(context, request)
            return render(request, 'profile.html', context)

        elif str(order_id) != 'None' and str(
                request.GET.get('success_pay')) == 'True':
            pay_order = Order.objects.get(id=order_id)
            response = status_pay(pay_order.id)
            if response['ret_status'] != 'error':
                if pay_order.pay == False and (
                        response['status'] == 'authorized'
                        or response['status'] == 'acknowledged'
                ) and pay_order.status == 'registered':
                    pay_order.pay = True
                    pay_order.incr_buy_for_items()
                    pay_order.status = 'ready_to_send'
                    pay_order.save()
                    notify_admin(request, pay_order)
                    context['message_act'] = 'true'
                    context['message'] = message('Заказ совершен!', request)

        order_update(request)

        orders = Order.objects.filter(Q(user=user) & Q(pay=True))

        user_form = UserForm(instance=request.user)
        address_form = AddressForm(instance=request.user.profile)
        password_change_form = PasswordChangeForm()

        context.update({
            'orders': orders,
            'user_form': user_form,
            'address_form': address_form,
            'with_save': "true",
            'password_change_form': password_change_form
        })

        getDataForNavBaR(context, request)
        return render(request, 'profile.html', context)

    if request.method == 'POST':
        type_post = request.POST.get('type_post')

        if type_post == "user_form":

            user_form = UserForm(request.POST, instance=request.user)

            if user_form.is_valid():
                user_form.save()
                user_change_form_response = render_template(
                    'user_change.html', {'user_form': user_form}, request)
                return JsonResponse({
                    'user_change_form_response':
                    user_change_form_response,
                    'result':
                    'success',
                    'message':
                    message("Профиль изменен!", request)
                })
            else:
                user_change_form_response = render_template(
                    'user_change.html', {'user_form': user_form}, request)
                return JsonResponse({
                    'user_change_form_response': user_change_form_response,
                    'result': 'error'
                })

        else:

            address_form = AddressForm(request.POST,
                                       instance=request.user.profile)

            if address_form.is_valid():
                address_form.save()

                address_change_form_response = render_template(
                    'address_change.html', {
                        'address_form': address_form,
                        'with_save': "true"
                    }, request)
                return JsonResponse({
                    'address_change_form_response':
                    address_change_form_response,
                    'result':
                    'success',
                    'message':
                    message("Адрес изменен!", request)
                })
            else:
                address_change_form_response = render_template(
                    'address_change.html', {
                        'address_form': address_form,
                        'with_save': "true"
                    }, request)
                return JsonResponse({
                    'address_change_form_response':
                    address_change_form_response,
                    'result': 'error'
                })
Esempio n. 4
0
File: views.py Progetto: wooshe/Shop
def to_order_view(request):
    if request.method == 'GET':
        method = request.GET.get('method')

        if method == "check_form":

            address_form = AddressForm(request.GET)

            if address_form.is_valid():
                info = address_form.cleaned_data
                normalize = pr_address_normalize(info['country'],
                                                 info['region'], info['area'],
                                                 info['city'], info['street'],
                                                 info['house'], info['room'],
                                                 info['index'])

                if normalize['ret_status'] == 'success':
                    delivery_total_ret = pr_pre_calc(
                        normalize['body']['index'])
                    delivery_total = delivery_total_ret['total_nds']
                    delivery_max_day = delivery_total_ret['max-days']
                    delivery_min_day = delivery_total_ret['min-days']

                    address_change_form_response = render_template(
                        'address_change.html', {
                            'address_form': address_form,
                            'with_save': "true"
                        }, request)

                    cart = getUserCart(request)

                    if cart.items.count() == 0:
                        return JsonResponse({'result': 'error'})

                    address_form.set_readonly()

                    sale_code = request.GET.get('sale_code')
                    sale_result = 0

                    try:
                        sale = ProductSale.objects.get(promo=sale_code)
                        val = cart.price_all * Decimal(sale.sale) / 100
                        delivery_and_cart_price = cart.price_all - val + delivery_total
                        sale_result = sale.sale
                    except:
                        delivery_and_cart_price = cart.price_all + delivery_total

                    order_body_response = render_template(
                        'order_body.html', {
                            'delivery_max_day': delivery_max_day,
                            'delivery_min_day': delivery_min_day,
                            "delivery_and_cart_price": delivery_and_cart_price,
                            'delivery_price': delivery_total,
                            'cart': cart,
                            'address_form': address_form,
                            'with_save': "false",
                            'sale': sale_result
                        }, request)

                    return JsonResponse({
                        'result':
                        'success',
                        'address_change_form_response':
                        address_change_form_response,
                        'order_body_response':
                        order_body_response
                    })
                else:
                    if request.user.is_authenticated:
                        with_save = "true"
                    else:
                        with_save = "false"

                    address_change_form_response = render_template(
                        'address_change.html', {
                            'address_form': address_form,
                            'with_save': with_save
                        }, request)
                    return JsonResponse({
                        'address_change_form_response':
                        address_change_form_response,
                        'result': 'error'
                    })

            else:

                if request.user.is_authenticated:
                    with_save = "true"
                else:
                    with_save = "false"

                address_change_form_response = render_template(
                    'address_change.html', {
                        'address_form': address_form,
                        'with_save': with_save
                    }, request)
                return JsonResponse({
                    'address_change_form_response':
                    address_change_form_response,
                    'result': 'error'
                })

        elif method == "order_confirm":
            address_form = AddressForm(request.GET)

            if address_form.is_valid():
                info = address_form.cleaned_data
                normalize = pr_address_normalize(info['country'],
                                                 info['region'], info['area'],
                                                 info['city'], info['street'],
                                                 info['house'], info['room'],
                                                 info['index'])

                if normalize['ret_status'] == 'success':
                    delivery_total_ret = pr_pre_calc(
                        normalize['body']['index'])
                    delivery_total = delivery_total_ret['total_nds']

                    cart = getUserCart(request)

                    if cart.items.count() == 0:
                        return JsonResponse({'result': 'error'})

                    order = Order()
                    order.save()

                    address_form = AddressForm(request.GET, instance=order)
                    if not address_form.is_valid():
                        return JsonResponse({'result': 'error'})

                    address_form.save()

                    order.order_from_cart(cart)

                    order.delivery_price = delivery_total

                    sale_code = request.GET.get('sale_code')

                    try:
                        sale = ProductSale.objects.get(promo=sale_code)
                        val = order.price_all * Decimal(sale.sale) / 100
                        order.delivery_cart_price = delivery_total + order.price_all - val

                        if sale.promo == 'delivery':
                            order.delivery_cart_price = order.price_all

                        order.sale = sale.sale
                        order.promo = sale.promo

                    except:
                        order.delivery_cart_price = delivery_total + order.price_all

                    order.save()

                    cart.remove_all_from_cart(delete=False)

                    if request.user.is_authenticated == False:
                        from_ = str(request.session.session_key)
                        order.sk = from_
                        order.save()
                        user_id = order.sk
                    else:
                        user_id = order.user.id
                        from_ = str(order.user.id)

                    responce = register_pay(request, order.id,
                                            order.delivery_cart_price, user_id,
                                            order.name, order.email,
                                            order.phone)

                    if responce['ret_status'] == 'success':

                        order.status = 'registered'
                        order.archive()
                        order.save()

                        return JsonResponse({
                            'result':
                            'success',
                            'url':
                            responce['redirect_url'] + "?session=" +
                            responce['session']
                        })
                    else:
                        cart.cart_from_order(order)
                        order.delete()
                        return JsonResponse({
                            'result':
                            'error',
                            'message_act':
                            'true',
                            'message':
                            message('Произошла ошибка, попробуйте еще раз!',
                                    request),
                        })
                else:
                    return JsonResponse({'result': 'error'})
            else:
                return JsonResponse({'result': 'error'})

        elif method == "calc":
            address_form = AddressForm(request.GET)
            info = address_form.data
            normalize = pr_address_normalize(info['country'], info['region'],
                                             info['area'], info['city'],
                                             info['street'], info['house'],
                                             info['room'], info['index'])

            if normalize['ret_status'] == 'success':

                delivery_total_ret = pr_pre_calc(normalize['body']['index'])

                delivery_total = delivery_total_ret['total_nds']

                return JsonResponse({
                    'result': 'success',
                    "delivery_total": delivery_total
                })
            else:
                return JsonResponse({'result': 'error', "delivery_total": "0"})

        elif method == "check_sale":
            sale_code = request.GET.get('sale_code')

            try:
                sale = ProductSale.objects.get(promo=sale_code)
                return JsonResponse({
                    'result': 'success',
                    "sale": str(sale.sale)
                })
            except:
                return JsonResponse({'result': 'error', "sale": "0"})