diff --git a/gui/fitCommands/calc/fitAddCargo.py b/gui/fitCommands/calc/fitAddCargo.py index ed8775e4f..475c2e470 100644 --- a/gui/fitCommands/calc/fitAddCargo.py +++ b/gui/fitCommands/calc/fitAddCargo.py @@ -37,5 +37,4 @@ class FitAddCargoCommand(wx.Command): pyfalog.debug('Undoing addition of cargo {} to fit {}'.format(self.cargoInfo, self.fitID)) from .fitRemoveCargo import FitRemoveCargoCommand cmd = FitRemoveCargoCommand(fitID=self.fitID, cargoInfo=self.cargoInfo) - cmd.Do() - return True + return cmd.Do() diff --git a/gui/fitCommands/calc/fitAddCommand.py b/gui/fitCommands/calc/fitAddCommand.py index 607788b14..7c0bdc391 100644 --- a/gui/fitCommands/calc/fitAddCommand.py +++ b/gui/fitCommands/calc/fitAddCommand.py @@ -8,52 +8,52 @@ from service.fit import Fit pyfalog = Logger(__name__) -class FitAddCommandCommand(wx.Command): # well that's an unfrtunate name - """" - from sFit.addCommand - """ - def __init__(self, fitID, commandFitID, state): +class FitAddCommandCommand(wx.Command): + + def __init__(self, fitID, commandFitID, state=None): wx.Command.__init__(self, True) self.fitID = fitID self.commandFitID = commandFitID self.state = state def Do(self): - pyfalog.debug("Projecting command fit ({0}) onto: {1}".format(self.fitID, self.commandFitID)) + pyfalog.debug('Doing addition of command fit {} for fit {}'.format(self.commandFitID, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) commandFit = sFit.getFit(self.commandFitID) - if not commandFit: - # if redoing when the command fit has been deleted, simply fail this command + # Command fit could have been deleted if we were redoing + if commandFit is None: + pyfalog.debug('Command fit is not available') return False - + # Already commanding this ship if commandFit in fit.commandFits: + pyfalog.debug('Command fit had been applied already') return False fit.commandFitDict[commandFit.ID] = commandFit - # this bit is required -- see GH issue # 83 eos.db.saveddata_session.flush() eos.db.saveddata_session.refresh(commandFit) if self.state is not None: - commandInfo = commandFit.getCommandInfo(self.fitID) - if not commandInfo: + fitCommandInfo = commandFit.getCommandInfo(self.fitID) + if fitCommandInfo is None: + pyfalog.warning('Fit command info is not available') + self.Undo() return False - commandInfo.active = self.state + fitCommandInfo.active = self.state eos.db.commit() return True def Undo(self): - command = eos.db.getFit(self.commandFitID) - - if not command: - # can't find the command fit, it must have been deleted. Just skip this undo + pyfalog.debug('Undoing addition of command fit {} for fit {}'.format(self.commandFitID, self.fitID)) + # Can't find the command fit, it must have been deleted. Just skip, as deleted fit + # means that someone else just did exactly what we wanted to do + commandFit = Fit.getInstance().getFit(self.commandFitID) + if commandFit is None: return True - from .fitRemoveCommand import FitRemoveCommandCommand - cmd = FitRemoveCommandCommand(self.fitID, self.commandFitID) - cmd.Do() - return True + cmd = FitRemoveCommandCommand(fitID=self.fitID, commandFitID=self.commandFitID) + return cmd.Do() diff --git a/gui/fitCommands/calc/fitRemoveCommand.py b/gui/fitCommands/calc/fitRemoveCommand.py index 360ce9bba..58d540fe6 100644 --- a/gui/fitCommands/calc/fitRemoveCommand.py +++ b/gui/fitCommands/calc/fitRemoveCommand.py @@ -8,43 +8,40 @@ from service.fit import Fit pyfalog = Logger(__name__) -class FitRemoveCommandCommand(wx.Command): # well that's an unfortunate name - """" - from sFit.removeCommand - """ +class FitRemoveCommandCommand(wx.Command): + def __init__(self, fitID, commandFitID): wx.Command.__init__(self, True) self.fitID = fitID - self.savedCommandFitID = commandFitID + self.commandFitID = commandFitID self.savedState = None def Do(self): - pyfalog.debug("Removing command projection from fit ({0}) for: {1}".format(self.fitID, self.savedCommandFitID)) + pyfalog.debug('Doing removal of command fit {} for fit {}'.format(self.commandFitID, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) - commandFit = sFit.getFit(self.savedCommandFitID) - if not commandFit: - return False + commandFit = sFit.getFit(self.commandFitID) + # Can be removed by the time we're redoing it + if commandFit is None: + pyfalog.debug('Command fit is not available') + return False commandInfo = commandFit.getCommandInfo(self.fitID) - if not commandInfo: + if commandInfo is None: + pyfalog.warning('Fit command info is not available') return False self.savedState = commandInfo.active - del fit.commandFitDict[commandFit.ID] - eos.db.commit() return True def Undo(self): - command = eos.db.getFit(self.savedCommandFitID) - - if not command: - # can't find the command fit, it must have been deleted. Just skip this undo - return True - + pyfalog.debug('Undoing removal of command fit {} for fit {}'.format(self.commandFitID, self.fitID)) + # Can't find the command fit, it must have been deleted. Fail as there's no way to restore it + commandFit = Fit.getInstance().getFit(self.commandFitID) + if commandFit is None: + return False from .fitAddCommand import FitAddCommandCommand - cmd = FitAddCommandCommand(self.fitID, self.savedCommandFitID, self.savedState) - cmd.Do() - return True + cmd = FitAddCommandCommand(fitID=self.fitID, commandFitID=self.commandFitID, state=self.savedState) + return cmd.Do() diff --git a/gui/fitCommands/helpers.py b/gui/fitCommands/helpers.py index 70497f5ec..522c04b5d 100644 --- a/gui/fitCommands/helpers.py +++ b/gui/fitCommands/helpers.py @@ -144,8 +144,6 @@ class CargoInfo: return makeReprStr(self, ['itemID', 'amount']) - - def stateLimit(itemIdentity): item = Market.getInstance().getItem(itemIdentity) if {'moduleBonusAssaultDamageControl', 'moduleBonusIndustrialInvulnerability'}.intersection(item.effects):