Fix fetching of prices of on-character implants

This commit is contained in:
DarkPhoenix
2019-04-16 16:25:44 +03:00
parent fd54d2c28c
commit e57fce39fe
7 changed files with 11 additions and 13 deletions

View File

@@ -156,7 +156,7 @@ class ImplantDisplay(d.Display):
event.Skip()
return
self.original = fit.implants if fit is not None else None
self.original = fit.appliedImplants if fit is not None else None
self.implants = fit.appliedImplants[:] if fit is not None else None
if self.implants is not None:
self.implants.sort(key=lambda implant: implant.slot or 0)

View File

@@ -120,8 +120,8 @@ class PriceViewFull(StatsView):
for booster in fit.boosters:
booster_price += booster.item.price.price
if fit.implants:
for implant in fit.implants:
if fit.appliedImplants:
for implant in fit.appliedImplants:
implant_price += implant.item.price.price
total_price = 0

View File

@@ -114,8 +114,8 @@ class PriceViewMinimal(StatsView):
for booster in fit.boosters:
booster_price += booster.item.price.price
if fit.implants:
for implant in fit.implants:
if fit.appliedImplants:
for implant in fit.appliedImplants:
implant_price += implant.item.price.price
fitting_price = module_price

View File

@@ -41,7 +41,6 @@ class CalcAddLocalModuleCommand(wx.Command):
if not newMod.fits(fit):
pyfalog.warning('Module does not fit')
return False
newMod.owner = fit
try:
fit.modules.append(newMod)

View File

@@ -658,7 +658,7 @@ class MainFrame(wx.Frame):
rebaseMap = {k.ID: v.ID for k, v in replacementsCheaper.items()}
self.command.Submit(cmd.GuiRebaseItemsCommand(fitID=fitID, rebaseMap=rebaseMap))
fitItems = {i for i in Fit.fitItemIter(fit) if i is not fit.ship.item}
fitItems = {i for i in Fit.fitItemIter(fit, forceFitImplants=True) if i is not fit.ship.item}
self.disablerAll = wx.WindowDisabler()
self.waitDialog = wx.BusyInfo("Please Wait...", parent=self)
Price.getInstance().findCheaperReplacements(fitItems, updateFitCb, fetchTimeout=10)

View File

@@ -485,20 +485,20 @@ class Fit(FitDeprecated):
return changedMods, changedProjMods, changedProjDrones
@classmethod
def fitObjectIter(cls, fit):
def fitObjectIter(cls, fit, forceFitImplants=False):
yield fit.ship
for mod in fit.modules:
if not mod.isEmpty:
yield mod
for container in (fit.drones, fit.fighters, fit.implants, fit.boosters, fit.cargo):
implants = fit.implants if forceFitImplants else fit.appliedImplants
for container in (fit.drones, fit.fighters, implants, fit.boosters, fit.cargo):
for obj in container:
yield obj
@classmethod
def fitItemIter(cls, fit):
for fitobj in cls.fitObjectIter(fit):
def fitItemIter(cls, fit, forceFitImplants=False):
for fitobj in cls.fitObjectIter(fit, forceFitImplants):
yield fitobj.item
charge = getattr(fitobj, 'charge', None)
if charge:

View File

@@ -165,7 +165,6 @@ class Price:
except Exception as e:
pyfalog.critical("Execution of callback from getPrices failed.")
pyfalog.critical(e)
db.commit()
if waitforthread: