def addCargo(self, fitID, itemID, amount=1, replace=False): """ Adds cargo via typeID of item. If replace = True, we replace amount with given parameter, otherwise we increment """ if fitID is None: return False fit = getFit(fitID) item = getItem(itemID) cargo = None # adding from market for x in fit.cargo.find(item): if x is not None: # found item already in cargo, use previous value and remove old cargo = x fit.cargo.remove(x) break if cargo is None: # if we don't have the item already in cargo, use default values cargo = es_Cargo(item) fit.cargo.append(cargo) if replace: cargo.amount = amount else: cargo.amount += amount self.recalc(fit) eds_queries.commit() return True
def addCargo(self, fitID, itemID, amount=1, replace=False): """ Adds cargo via typeID of item. If replace = True, we replace amount with given parameter, otherwise we increment """ if fitID is None: return False fit = eos.db.getFit(fitID) item = eos.db.getItem(itemID) cargo = None # adding from market for x in fit.cargo.find(item): if x is not None: # found item already in cargo, use previous value and remove old cargo = x fit.cargo.remove(x) break if cargo is None: # if we don't have the item already in cargo, use default values cargo = es_Cargo(item) fit.cargo.append(cargo) if replace: cargo.amount = amount else: cargo.amount += amount self.recalc(fit) eos.db.commit() return True
def moveCargoToModule(self, fitID, moduleIdx, cargoIdx, copyMod=False): """ Moves cargo to fitting window. Can either do a copy, move, or swap with current module If we try to copy/move into a spot with a non-empty module, we swap instead. To avoid redundancy in converting Cargo item, this function does the sanity checks as opposed to the GUI View. This is different than how the normal .swapModules() does things, which is mostly a blind swap. """ pyfalog.debug("Moving cargo item to module for fit ID: {1}", fitID) fit = eos.db.getFit(fitID) module = fit.modules[moduleIdx] cargo = fit.cargo[cargoIdx] # Gather modules and convert Cargo item to Module, silently return if not a module try: cargoP = es_Module(cargo.item) cargoP.owner = fit if cargoP.isValidState(State.ACTIVE): cargoP.state = State.ACTIVE except: pyfalog.warning("Invalid item: {0}", cargo.item) return if cargoP.slot != module.slot: # can't swap modules to different racks return # remove module that we are trying to move cargo to fit.modules.remove(module) if not cargoP.fits(fit): # if cargo doesn't fit, rollback and return fit.modules.insert(moduleIdx, module) return fit.modules.insert(moduleIdx, cargoP) if not copyMod: # remove existing cargo if not cloning if cargo.amount == 1: fit.cargo.remove(cargo) else: cargo.amount -= 1 if not module.isEmpty: # if module is placeholder, we don't want to convert/add it for x in fit.cargo.find(module.item): x.amount += 1 break else: moduleP = es_Cargo(module.item) moduleP.amount = 1 fit.cargo.insert(cargoIdx, moduleP) eos.db.commit() self.recalc(fit)
def moveCargoToModule(self, fitID, moduleIdx, cargoIdx, copyMod=False): """ Moves cargo to fitting window. Can either do a copy, move, or swap with current module If we try to copy/move into a spot with a non-empty module, we swap instead. To avoid redundancy in converting Cargo item, this function does the sanity checks as opposed to the GUI View. This is different than how the normal .swapModules() does things, which is mostly a blind swap. """ fit = eos.db.getFit(fitID) module = fit.modules[moduleIdx] cargo = fit.cargo[cargoIdx] # Gather modules and convert Cargo item to Module, silently return if not a module try: cargoP = es_Module(cargo.item) cargoP.owner = fit if cargoP.isValidState(State.ACTIVE): cargoP.state = State.ACTIVE except: return if cargoP.slot != module.slot: # can't swap modules to different racks return # remove module that we are trying to move cargo to fit.modules.remove(module) if not cargoP.fits(fit): # if cargo doesn't fit, rollback and return fit.modules.insert(moduleIdx, module) return fit.modules.insert(moduleIdx, cargoP) if not copyMod: # remove existing cargo if not cloning if cargo.amount == 1: fit.cargo.remove(cargo) else: cargo.amount -= 1 if not module.isEmpty: # if module is placeholder, we don't want to convert/add it for x in fit.cargo.find(module.item): x.amount += 1 break else: moduleP = es_Cargo(module.item) moduleP.amount = 1 fit.cargo.insert(cargoIdx, moduleP) eos.db.commit() self.recalc(fit)
def moveCargoToModule(self, fitID, moduleIdx, cargoIdx, copyMod=False): """ Moves cargo to fitting window. Can either do a copy, move, or swap with current module If we try to copy/move into a spot with a non-empty module, we swap instead. To avoid redundancy in converting Cargo item, this function does the sanity checks as opposed to the GUI View. This is different than how the normal .swapModules() does things, which is mostly a blind swap. """ fit = eos.db.getFit(fitID) module = fit.modules[moduleIdx] cargo = fit.cargo[cargoIdx] # We're trying to move a charge from cargo to a slot - try to add charge to dst module. Don't do anything with # the charge in the cargo (don't respect move vs copy) if self.isAmmo(cargo.item.ID): if not module.isEmpty: self.setAmmo(fitID, cargo.item.ID, [module]) return pyfalog.debug("Moving cargo item to module for fit ID: {0}", fitID) # Gather modules and convert Cargo item to Module, silently return if not a module try: cargoP = es_Module(cargo.item) cargoP.owner = fit if cargoP.isValidState(FittingModuleState.ACTIVE): cargoP.state = FittingModuleState.ACTIVE except: pyfalog.warning("Invalid item: {0}", cargo.item) return if cargoP.slot != module.slot: # can't swap modules to different racks return # remove module that we are trying to move cargo to fit.modules.remove(module) if not cargoP.fits(fit): # if cargo doesn't fit, rollback and return fit.modules.insert(moduleIdx, module) return fit.modules.insert(moduleIdx, cargoP) if not copyMod: # remove existing cargo if not cloning if cargo.amount == 1: fit.cargo.remove(cargo) else: cargo.amount -= 1 if not module.isEmpty: # if module is placeholder, we don't want to convert/add it moduleItem = module.item if not module.item.isAbyssal else module.baseItem for x in fit.cargo.find(moduleItem): x.amount += 1 break else: moduleP = es_Cargo(moduleItem) moduleP.amount = 1 fit.cargo.insert(cargoIdx, moduleP) eos.db.commit() self.recalc(fit)