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
评论列表
文章目录