models.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:newco-legacy 作者: blaze33 项目源码 文件源码
def _decathlon_init(aff_item, decathlon_item):
    MATCHING_TABLE = {
        "Url": "url",
        "EAN": "ean",
        "Id produit": "object_id",
        "Url image petite": "img_small",
        "Url image moyenne": "img_medium",
        "Url image grande": "img_large"
    }

    CURRENCY_TABLE = {u"€": CURRENCIES.euro, u"$": CURRENCIES.dollar,
                      u"£": CURRENCIES.pound}

    DECATHLON_AVAILABILITY_PATTERN = "(?P<days>\d*)\s?jours"
    EXACT_PATTERN = AVAILABILITY_PATTERNS["exact"]

    ROUND = decimal.Decimal(".01")

    for key, value in decathlon_item.items():
        val = unicode(value, "utf-8")
        if key in ["Prix", "Prix barré", "Frais de port"]:
            parsed_price = parse_decimal(val, locale="fr")
            decimal_price = decimal.Decimal(parsed_price).quantize(ROUND)
            if key == "Prix":
                price = decimal_price
            elif key == "Prix barré":
                price_2 = decimal_price
            elif key == "Frais de port":
                aff_item._shipping_price = decimal_price
        elif key == "Monnaie":
            aff_item.currency = CURRENCY_TABLE.get(val, CURRENCIES.euro)
        elif key == "Nom":
            aff_item.name = truncatechars(val, NAME_MAX_LENGTH)
        elif key == "Disponibilité":
            match = re.match(DECATHLON_AVAILABILITY_PATTERN, val)
            if match is not None:
                days = match.groups("days")[0]
                if days:
                    availability = EXACT_PATTERN.format(
                        value=days, unit="D")
                else:
                    availability = "in stock"
                aff_item._availability = availability
        elif key in MATCHING_TABLE:
            setattr(aff_item, MATCHING_TABLE[key], val)

    aff_item.price = price if price and price < price_2 else price_2

    return aff_item
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号