(self)
| 24 | self.savedStateCheckChanges = None |
| 25 | |
| 26 | def Do(self): |
| 27 | pyfalog.debug('Doing addition of projected module {} onto: {}'.format(self.newModInfo, self.fitID)) |
| 28 | newMod = self.newModInfo.toModule(fallbackState=FittingModuleState.ACTIVE) |
| 29 | if newMod is None: |
| 30 | return False |
| 31 | |
| 32 | sFit = Fit.getInstance() |
| 33 | fit = sFit.getFit(self.fitID) |
| 34 | canHaveState = newMod.canHaveState(newMod.state, projectedOnto=fit) |
| 35 | if canHaveState is not True: |
| 36 | newMod.state = canHaveState |
| 37 | if not self.ignoreRestrictions and not newMod.isValidCharge(newMod.charge): |
| 38 | newMod.charge = None |
| 39 | self.oldPosition, self.oldModInfo = fit.projectedModules.makeRoom(newMod) |
| 40 | |
| 41 | if self.newPosition is not None: |
| 42 | fit.projectedModules.insert(self.newPosition, newMod) |
| 43 | if newMod not in fit.projectedModules: |
| 44 | return False |
| 45 | else: |
| 46 | fit.projectedModules.append(newMod) |
| 47 | if newMod not in fit.projectedModules: |
| 48 | return False |
| 49 | self.newPosition = fit.projectedModules.index(newMod) |
| 50 | |
| 51 | if self.recalc: |
| 52 | # Need to flush because checkStates sometimes relies on module->fit |
| 53 | # relationship via .owner attribute, which is handled by SQLAlchemy |
| 54 | eos.db.flush() |
| 55 | sFit.recalc(fit) |
| 56 | self.savedStateCheckChanges = sFit.checkStates(fit, newMod) |
| 57 | return True |
| 58 | |
| 59 | def Undo(self): |
| 60 | pyfalog.debug('Undoing addition of projected module {} onto: {}'.format(self.newModInfo, self.fitID)) |
no test coverage detected