diff --git a/eos/db/__init__.py b/eos/db/__init__.py index a66d0fc40..9113c9121 100644 --- a/eos/db/__init__.py +++ b/eos/db/__init__.py @@ -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:": diff --git a/eos/db/saveddata/queries.py b/eos/db/saveddata/queries.py index e939bb65f..9fee22561 100644 --- a/eos/db/saveddata/queries.py +++ b/eos/db/saveddata/queries.py @@ -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: diff --git a/gui/builtinContextMenus/__init__.py b/gui/builtinContextMenus/__init__.py index b262176ed..da6d02c28 100644 --- a/gui/builtinContextMenus/__init__.py +++ b/gui/builtinContextMenus/__init__.py @@ -14,5 +14,6 @@ __all__ = [ "whProjector", "cargo", "shipJump", - "targetResists" + "targetResists", + "priceClear" ] diff --git a/gui/builtinContextMenus/priceClear.py b/gui/builtinContextMenus/priceClear.py new file mode 100644 index 000000000..1b0cd0dc4 --- /dev/null +++ b/gui/builtinContextMenus/priceClear.py @@ -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() diff --git a/service/market.py b/service/market.py index 257d0d477..b70866c5b 100644 --- a/service/market.py +++ b/service/market.py @@ -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