Use old price information if update fails. Add "(!)" to show that price is out of date

This commit is contained in:
blitzmann
2015-07-03 02:37:52 -04:00
parent 6cc6fd9468
commit 874cf4ef0a
5 changed files with 12 additions and 16 deletions

View File

@@ -26,6 +26,7 @@ class Price(object):
def __init__(self, typeID):
self.typeID = typeID
self.time = 0
self.price = 0
self.failed = None
self.__item = None

View File

@@ -103,10 +103,7 @@ class PriceViewFull(StatsView):
shipPrice = prices[0].price
modPrice = sum(map(lambda p: p.price or 0, prices[1:]))
if shipPrice is not None:
self.labelEMStatus.SetLabel("")
else:
shipPrice = 0
self.labelEMStatus.SetLabel("")
if self._cachedShip != shipPrice:
self.labelPriceShip.SetLabel("%s ISK" % formatAmount(shipPrice, 3, 3, 9, currency=True))

View File

@@ -39,7 +39,7 @@ class Price(ViewColumn):
sMkt = service.Market.getInstance()
price = sMkt.getPriceNow(stuff.item.ID)
if not price or not price.price:
if not price or not price.price or not price.isValid:
return False
price = price.price # Set new price variable with what we need
@@ -52,9 +52,13 @@ class Price(ViewColumn):
def delayedText(self, mod, display, colItem):
sMkt = service.Market.getInstance()
def callback(item):
price = sMkt.getPriceNow(item.ID).price
colItem.SetText(formatAmount(price, 3, 3, 9, currency=True) if price else "")
display.SetItem(colItem)
price = sMkt.getPriceNow(item.ID)
text = formatAmount(price.price, 3, 3, 9, currency=True) if price.price else ""
if price.failed: text += " (!)"
colItem.SetText(text)
display.SetItem(colItem)
sMkt.waitForPrice(mod.item, callback)

View File

@@ -706,10 +706,6 @@ class Market():
self.priceCache[typeID] = price
if not price.isValid:
# if the price has expired
price.price = None
return price
def getPricesNow(self, typeIDs):

View File

@@ -71,7 +71,6 @@ class Price():
# Attempt to send request and process it
try:
len(priceMap)
network = service.Network.getInstance()
data = network.request(baseurl, network.PRICES, data)
xml = minidom.parse(data)
@@ -102,7 +101,7 @@ class Price():
for typeID in priceMap.keys():
priceobj = priceMap[typeID]
priceobj.time = time.time() + TIMEOUT
priceobj.failed = None
priceobj.failed = True
del priceMap[typeID]
except:
# all other errors will pass and continue onward to the REREQUEST delay
@@ -111,6 +110,5 @@ class Price():
# if we get to this point, then we've got an error. Set to REREQUEST delay
for typeID in priceMap.keys():
priceobj = priceMap[typeID]
priceobj.price = 0
priceobj.time = time.time() + REREQUEST
priceobj.failed = None
priceobj.failed = True