From 1b49ab8986d59d038bc37285ac7dfb1282a326a8 Mon Sep 17 00:00:00 2001 From: Jonas Olson Date: Wed, 11 Sep 2019 18:17:41 +0200 Subject: [PATCH] =?UTF-8?q?Hantera=20varor=20med=20fler=20=C3=A4n=20ett=20?= =?UTF-8?q?pris.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit När fler än ett pris finns kommer dessa som en lista, annars som ett fristående värde. Detta ledde till en bugg som nu är fixad. Om olika lager har olika priser syns detta inte här, bara standardlagret. Jag vet inte ens hur man skulle vilja hantera det. Egentligen bör denna kod köras med Python 3.7, eftersom det är först då som en dictionary garanterar ordningen på sina element, vilket vi förlitar oss på nu. Att köra Python 3.7 ledde dock till problem med import av en Slack-modul, vilket måste redas ut först. --- eggberg.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/eggberg.py b/eggberg.py index b499969..41b2361 100755 --- a/eggberg.py +++ b/eggberg.py @@ -39,12 +39,13 @@ def unfurl(url): # inte borde göra så. Vi avkodar. title = html.unescape(ld['name']) image = ld['image'] - currency = ld['offers']['priceCurrency'] + offers = ld['offers'] + if not isinstance(offers, list): + offers = [offers] + currency = offers[0]['priceCurrency'] if currency == 'SEK': currency = 'kr' - # Formateringsinstruktionen "n" ger oss decimaltecken enligt aktuell - # locale. - price = f'{float(ld["offers"]["price"]):n}' + ' ' + currency + prices = [float(offer['price']) for offer in offers] return {'fallback': title + ' <' + url + '>', 'color': '#cf8e00', # ELAB-orange @@ -58,7 +59,9 @@ def unfurl(url): # innehåller något vettigt. # 'text': ld['description'], 'fields': [{'title': 'Pris', - 'value': price, + 'value': ' – '.join( + [f'{price:n} {currency}' for price in + list(dict.fromkeys([min(prices), max(prices)]))]), 'short': True}], # Visas som stor bild, vilket tar för mycket plats. # 'image_url': image,