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")