MCPcopy Index your code
hub / github.com/pyfa-org/Pyfa / Do

Method Do

gui/fitCommands/calc/module/localReplace.py:26–65  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

24 self.unloadedCharge = None
25
26 def Do(self):
27 pyfalog.debug('Doing replacement of local module at position {} to {} on fit {}'.format(self.position, self.newModInfo, self.fitID))
28 self.unloadedCharge = False
29 sFit = Fit.getInstance()
30 fit = sFit.getFit(self.fitID)
31 oldMod = fit.modules[self.position]
32 if not oldMod.isEmpty:
33 self.oldModInfo = ModuleInfo.fromModule(oldMod)
34 if self.newModInfo == self.oldModInfo:
35 return False
36 newMod = self.newModInfo.toModule(fallbackState=activeStateLimit(self.newModInfo.itemID))
37 if newMod is None:
38 return False
39 if newMod.slot != oldMod.slot:
40 return False
41 # Dummy it out in case the next bit fails
42 fit.modules.replace(self.position, newMod)
43 if newMod not in fit.modules:
44 pyfalog.warning('Failed to replace in list')
45 self.Undo()
46 return False
47 if self.recalc:
48 # Need to flush because checkStates sometimes relies on module->fit
49 # relationship via .owner attribute, which is handled by SQLAlchemy
50 eos.db.flush()
51 sFit.recalc(fit)
52 self.savedStateCheckChanges = sFit.checkStates(fit, newMod)
53 if not self.ignoreRestrictions and not newMod.fits(fit):
54 pyfalog.warning('Module does not fit')
55 self.Undo()
56 return False
57 if not self.ignoreRestrictions and not newMod.isValidCharge(newMod.charge):
58 if self.unloadInvalidCharges:
59 newMod.charge = None
60 self.unloadedCharge = True
61 else:
62 pyfalog.warning('Invalid charge')
63 self.Undo()
64 return False
65 return True
66
67 def Undo(self):
68 pyfalog.debug('Undoing replacement of local module at position {} to {} on fit {}'.format(self.position, self.newModInfo, self.fitID))

Callers 2

UndoMethod · 0.95
UndoMethod · 0.95

Calls 12

UndoMethod · 0.95
activeStateLimitFunction · 0.90
getFitMethod · 0.80
fromModuleMethod · 0.80
toModuleMethod · 0.80
replaceMethod · 0.80
flushMethod · 0.80
recalcMethod · 0.80
checkStatesMethod · 0.80
isValidChargeMethod · 0.80
getInstanceMethod · 0.45
fitsMethod · 0.45

Tested by

no test coverage detected