Пример #1
0
def save_order(request, step=1):
    """Save order with AJAX"""
    if request.method != "POST":
        result = {"result": "ERROR", "msg": "Wrong request method"}
        return http.HttpResponse(json.dumps(result),
                                 content_type="application/json")

    try:
        id = int(request.POST.get("id", 0))  # Если редактруем созданный заказ
    except (TypeError, ValueError):
        id = 0

    user = request.POST.get("user", None)
    phone = request.POST.get("phone", None)
    email = request.POST.get("email", None)
    maket = request.POST.get("maket", None)

    if id != 0:
        templ_id = Orders.objects.get(id=id).template.id

    else:
        templ_id = 0

    templ = get_object_or_None(OrderTemplate, pk=templ_id)  # Или получаем тело заказа или создаём новое (новый заказ)

    if templ is None:
        templ = OrderTemplate(name=(user if user else ''))  # Создаем тело заказа. Название - имя заказчика

    if int(step) > 10:
        # print request.POST
        templ.color_back = None  # Color(id=request.POST.get("color_back", None))
        templ.color_front = Color(id=(request.POST.get("colors", None)))

        templ.material = Material(id=(request.POST.get("materials", None)))
        templ.lamination = Lamination(id=request.POST.get("lamination", None))
        templ.chip = False  # request.POST.get("chip", False)
        templ.uv = False  # request.POST.get("uv", False)
        templ.magnet = (True if float(request.POST.get("magnet", False)) > 0 else False)
        templ.emboss = (True if float(request.POST.get("emboss", False)) > 0 else False)
        templ.scratch = (True if float(request.POST.get("scratch", False)) > 0 else False)
        templ.print_num = (True if float(request.POST.get("print_num", False)) > 0 else False)
        templ.sign = (True if float(request.POST.get("sign", False)) > 0 else False)
        templ.indent = (True if float(request.POST.get("indent", False)) > 0 else False)
        templ.barcode = (True if float(request.POST.get("barcode", False)) > 0 else False)
        templ.foil = (True if float(request.POST.get("foil", False)) > 0 else False)
    else:
        templ.color_back = Color(id=request.POST.get("color_back", None))
        templ.color_front = Color(id=request.POST.get("color_front", None))

        templ.material = Material(id=request.POST.get("materials", None))
        templ.lamination = Lamination(id=request.POST.get("lamination", None))
        templ.chip = (True if float(request.POST.get("chip", False)) > 0 else False)
        templ.uv = (True if float(request.POST.get("uv", False)) > 0 else False)
        templ.magnet = (True if float(request.POST.get("magnet", False)) > 0 else False)
        templ.emboss = (True if float(request.POST.get("emboss", False)) > 0 else False)
        templ.scratch = (True if float(request.POST.get("scratch", False)) > 0 else False)
        templ.print_num = (True if float(request.POST.get("print_num", False)) > 0 else False)
        templ.sign = (True if float(request.POST.get("sign", False)) > 0 else False)
        templ.indent = (True if float(request.POST.get("indent", False)) > 0 else False)
        templ.barcode = (True if float(request.POST.get("barcode", False)) > 0 else False)
        templ.foil = (True if float(request.POST.get("foil", False)) > 0 else False)

    draw = request.POST.get("count", None)  # количество в заказ
    if not draw:
        draw = 0

    templ.save()  # Сохраняем тело заказа для того, чтобы потом создать сам заказ
    if templ is None:  # Если тело заказа не сохранилось - возвращаем ошибку?
        result = {"result": "ERROR", "msg": "Please, correct the property type to get access to other tabs."}
        return http.HttpResponse(json.dumps(result),
                                 content_type="application/json")

    try:  # Проверяем, это новый заказ или редактируем созданный
        pk = int(request.POST.get("id", 0))
    except (TypeError, ValueError):
        pk = 0
    order = None
    if pk not in (None, 0):
        # Search existed objects
        order = get_object_or_None(Orders, pk=pk)
    if order is None:
        # Create new object
        order = Orders()

    order.template = OrderTemplate(id=templ.id)
    order.FIO = user
    order.draw = draw  # Количество
    order.cost = request.POST.get("sum", False)
    order.email = email
    order.phone = phone
    order.maket = maket

    order.save()

    if step == '1':
        result = {"result": "OK", "id": order.id,
                  "msg": "Changes are saved",
                  "url": reverse("edit-order", args=[order.id, 3])}
        return HttpResponse(json.dumps(result),
                                 content_type="application/json")
    elif step > 10:
        result = {"result": "OK", "id": order.id, "msg": "This case 'elif step > 10'",
                  "url": reverse("edit-easy", args=[order.id, step])}
        return HttpResponse(json.dumps(result),
                                 content_type="application/json")
    else:
        result = {"result": "OK", "id": order.id, "msg": "This case 'else'",
                  "url": reverse("edit-fast", args=[order.id, step])}
        return HttpResponse(json.dumps(result),
                                 content_type="application/json")