Implements forced price refresh (resolves #196)

This commit is contained in:
blitzmann
2014-11-20 00:28:38 -05:00
parent 6f42e7c286
commit 76f1f217e1
5 changed files with 36 additions and 2 deletions

View File

@@ -65,7 +65,8 @@ from eos.db.saveddata.queries import getUser, getCharacter, getFit, getFitsWithS
getCharacterList, getPrice, getDamagePatternList, getDamagePattern, \
getFitList, getFleetList, getFleet, save, remove, commit, add, \
getCharactersForUser, getMiscData, getSquadsIDsWithFitID, getWing, \
getSquad, getBoosterFits, getProjectedFits, getTargetResistsList, getTargetResists
getSquad, getBoosterFits, getProjectedFits, getTargetResistsList, getTargetResists,\
clearPrices
#If using in memory saveddata, you'll want to reflect it so the data structure is good.
if config.saveddata_connectionstring == "sqlite:///:memory:":

View File

@@ -308,6 +308,12 @@ def getPrice(typeID):
raise TypeError("Need integer as argument")
return price
def clearPrices():
with sd_lock:
deleted_rows = saveddata_session.query(Price).delete()
commit()
return deleted_rows
def getMiscData(field):
if isinstance(field, basestring):
with sd_lock:

View File

@@ -14,5 +14,6 @@ __all__ = [
"whProjector",
"cargo",
"shipJump",
"targetResists"
"targetResists",
"priceClear"
]

View File

@@ -0,0 +1,22 @@
from gui.contextMenu import ContextMenu
import gui.mainFrame
import wx
import gui.globalEvents as GE
import service
class PriceClear(ContextMenu):
def __init__(self):
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
def display(self, srcContext, selection):
return "priceViewFull" in srcContext
def getText(self, itmContext, selection):
return "Reset Price Cache"
def activate(self, fullContext, selection, i):
sMkt = service.Market.getInstance()
sMkt.clearPriceCache()
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.mainFrame.getActiveFit()))
PriceClear.register()

View File

@@ -699,6 +699,10 @@ class Market():
self.priceWorkerThread.trigger(requests, cb)
def clearPriceCache(self):
self.priceCache.clear()
deleted_rows = eos.db.clearPrices()
def getSystemWideEffects(self):
"""
Get dictionary with system-wide effects