Esempio n. 1
0
def supply_good(request, id, categoryId):
    try:
        good = Good.objects.get(pk=id)
        supplies = Supply.objects.getByGoodPk(int(id))
        descriptions = good.description.split("\n")
        available = 0
        availableResides = -1

        for supply in supplies:
            for goodEntity in supply.listAvailableGoods():
                if goodEntity["good"].pk == good.pk:
                    if goodEntity["value"] > available:
                        available = goodEntity["value"]
                        if supply.status != Supply.NEW:
                            availableResides = available
        value_choices = []
        counter = 0
        while counter <= available:
            value_choices.append(counter)
            counter += good.step
        return render_to_response(
            "supply_good.html",
            {
                "good": good,
                "descriptions": descriptions,
                "availableResides": availableResides,
                "value_choices": value_choices,
            },
            RequestContext(request),
        )
    except Good.DoesNotExist:
        raise Http404
    except Supply.DoesNotExist:
        raise Http404
Esempio n. 2
0
def recipe(request, id):
    recipe = None
    paragraphs = []
    ingridients = []
    try:
        recipe = Recipe.objects.get(pk=id)
        paragraphs = filter(lambda x: x != "", recipe.coockingMethod.split("\n"))
        ingredients = recipe.ingredients.all()
    except Recipe.DoesNotExist:
        pass
    return render_to_response(
        "recipe.html", {"recipe": recipe, "paragraphs": paragraphs, "ingredients": ingredients}, RequestContext(request)
    )
Esempio n. 3
0
def supply_good_category(request, id):
    goods = []
    supplies = Supply.objects.exclude(status=Supply.WRITTEN_OFF).order_by("supplyDate")
    for supply in supplies:
        availableGoods = supply.listAvailableGoods()
        for availableGoodEntity in availableGoods:
            if availableGoodEntity["good"].category.pk != int(id):
                continue
            shouldAppend = True
            for good in goods:
                if good.pk == availableGoodEntity["good"].pk:
                    shouldAppend = False
                    break
            if shouldAppend:
                goods.append(availableGoodEntity["good"])
    return render_to_response("supply_list.html", {"goods": goods, "categoryId": id}, RequestContext(request))
Esempio n. 4
0
def reside_good(request, id, from_supplies=False):
    id = int(id)
    good = filter(lambda x: x[0].pk == id, SupplyItem.objects.getHotGoods())[0]
    recipes = []
    descriptions = []
    value_choices = []

    recipes = good[0].recipes.all()
    descriptions = good[0].description.split("\n")
    counter = 0
    while counter <= good[1]:
        value_choices.append(counter)
        counter += good[0].step
    return render_to_response(
        "reside_good.html",
        {"good": good[0], "recipes": recipes, "descriptions": descriptions, "value_choices": value_choices},
        RequestContext(request),
    )
Esempio n. 5
0
def resides(request):
    goods = map(lambda x: {"good": x[0], "value": x[1]}, SupplyItem.objects.getHotGoods())
    return render_to_response("reside_list.html", {"goods": goods}, RequestContext(request))
Esempio n. 6
0
def recipe_category(request, category_id):
    recipes = Recipe.objects.filter(category__pk=category_id)
    return render_to_response("recipe_category.html", {"recipes": recipes}, RequestContext(request))
Esempio n. 7
0
def recipes(request):
    recipes = RecipeCategory.objects.all()
    return render_to_response("recipe_category_list.html", {"recipes": recipes}, RequestContext(request))
Esempio n. 8
0
def delivery(request):
    texts = filter(lambda x: x != "", TextModel.objects.get(name=TextModel.DELIVERY_PAGE).text.split("\n"))
    image = ImageModel.objects.get(imgType=ImageModel.MAP).image
    return render_to_response("delivery.html", {"texts": texts, "image": image}, RequestContext(request))
Esempio n. 9
0
def main(request):
    main_text = filter(lambda x: x != "", TextModel.objects.get(name=TextModel.MAIN_PAGE).text.split("\n"))
    images = map(lambda x: x.image, ImageModel.objects.filter(imgType=ImageModel.PROMO_BANNER))
    return render_to_response("main.html", {"main_text": main_text, "image_urls": images}, RequestContext(request))
Esempio n. 10
0
def supply_order(request):
    order = urllib2.unquote(request.POST.get("order", ""))
    phone = request.POST.get("phone", None)
    email = request.POST.get("email", None)
    name = request.POST.get("name", None)
    address = request.POST.get("address", None)
    deliveryCloseHour = IntModel.objects.filter(intType=IntModel.HOUR_DELIVERYCLOSE)[0].value
    freeDeliveryMinPrice = IntModel.objects.filter(intType=IntModel.FREE_DELIVERY_MIN_PRICE)[0].value
    deliveryPrice = IntModel.objects.filter(intType=IntModel.DELIVERY_PRICE)[0].value
    deliveryInterval = IntModel.objects.filter(intType=IntModel.MAX_DELIVERY_INTERVAL)[0].value

    if order == "":
        return HttpResponseRedirect(reverse("url_main"))
    order = json.loads(order)
    supplyGroups = []
    supplies = Supply.objects.all().order_by("supplyDate")
    for orderItem in order:
        found = False
        for supply in supplies:
            supplyDate = supply.supplyDate
            if supplyDate < date.today():
                if datetime.now().hour < deliveryCloseHour:
                    supplyDate = date.today()
                else:
                    supplyDate = date.today() + timedelta(1)
            availableGoods = supply.listAvailableGoods()
            for availableGood in availableGoods:
                if availableGood["good"].pk == int(orderItem["id"]) and float(availableGood["value"]) >= float(
                    orderItem["value"]
                ):
                    found = True
                    orderItem["name"] = availableGood["good"].name
                    if availableGood["supplyItem"].supply.status != Supply.NEW:
                        orderItem["price"] = availableGood["good"].price
                    else:
                        orderItem["price"] = availableGood["good"].priceFut
                    orderItem["total"] = orderItem["value"] * float(orderItem["price"])
                    createNewGroup = True
                    orderItem["supply"] = supply
                    orderItem["modelGood"] = availableGood["good"]
                    orderItem["supplyItem"] = availableGood["supplyItem"]
                    orderItem["isPartnerGood"] = availableGood["isPartnerGood"]
                    for supplyGroup in supplyGroups:
                        if (supplyDate - supplyGroup["minDate"]).days < deliveryInterval and (
                            supplyGroup["maxDate"] - supplyDate
                        ).days < deliveryInterval:
                            createNewGroup = False
                            supplyGroup["goods"].append(orderItem)
                            if supplyDate < supplyGroup["minDate"]:
                                supplyGroup["minDate"] = supplyDate
                            elif supplyGroup["maxDate"] < supplyDate:
                                supplyGroup["maxDate"] = supplyDate
                            supplyGroup["totalPrice"] += orderItem["total"]
                            if orderItem["cut"]:
                                supplyGroup["totalPrice"] += 100
                            break
                    if createNewGroup:
                        supplyGroups.append(
                            {
                                "goods": [orderItem],
                                "minDate": supplyDate,
                                "maxDate": supplyDate,
                                "totalPrice": orderItem["total"] + 100 * orderItem["cut"],
                                "delivery": False,
                            }
                        )
                    break
            if found:
                break

    if phone is None or email is None:
        for supplyGroup in supplyGroups:
            for good in supplyGroup["goods"]:
                good["modelGood"] = None
                good["supplyItem"] = None
                good["supply"] = None
            if supplyGroup["totalPrice"] < freeDeliveryMinPrice:
                supplyGroup["totalPrice"] += deliveryPrice
                supplyGroup["delivery"] = True

        if "application/json" in map(lambda x: x.strip(), request.META.get("HTTP_ACCEPT").lower().split(",")):
            return HttpResponse(
                json.dumps({"supplyGroups": supplyGroups, "deliveryPrice": deliveryPrice}, cls=DjangoJSONEncoder),
                content_type="application/json",
            )

        return render_to_response(
            "card.html", {"supplyGroups": supplyGroups, "deliveryPrice": deliveryPrice}, RequestContext(request)
        )
    else:
        order = Order(phone=phone, email=email, name=name, address=address)
        order.save()
        for supplyGroup in supplyGroups:
            for good in supplyGroup["goods"]:
                if good["isPartnerGood"]:
                    resides = good["supplyItem"].getResides(good["modelGood"])
                    if resides < good["value"]:
                        difference = good["value"] - resides
                        good["supplyItem"].value += difference
                        good["supplyItem"].save()
                SupplyOrderItem(
                    good=good["modelGood"], order=order, supply=good["supply"], value=good["value"], cut=False
                ).save()
            # logoName = ImageModel.objects.get(imgType=ImageModel.LOGO_BW)
            # logo = ''
            # with open(os.path.join(MEDIA_ROOT, logoName.image), 'rb') as image_file:
            #  logo = base64.b64encode(image_file.read())
            messageVars = {"name": name, "orderNumber": order.pk, "sumPrice": supplyGroup["totalPrice"]}
            message = TextModel.objects.get(name=TextModel.NEW_ORDER_MAIL).text.format(**messageVars)

            # message = u'''Здравствуйте, %s!
            # Ваш заказ №%d принят и ожидает обработки!
            #
            # Огромное спасибо!
            # Искренне ваши, мясо-яйца-молоко!''' % (name, order.pk,)
            # send_mail(u'Заказ #%d' % order.pk, message, u'[email protected]', (order.email,))
            messageVars["logo"] = ""
            messageVars["items"] = map(
                lambda x: {"object": x[0], "id": x[1]},
                [(supplyGroup["goods"][index], index + 1) for index in xrange(len(supplyGroup["goods"]))],
            )
            messageVars["deliveryPrice"] = deliveryPrice
            messageVars["messageText"] = message.split("\n")
            send(u"Заказ №%d" % order.pk, message, "order.html", messageVars, order.email)
        resp = HttpResponseRedirect(reverse("url_main"))
        resp.set_cookie("card", "", 3600)
        resp.set_cookie("lastCard", request.COOKIES["card"], 31536000)
        return resp