def getTotalPurchaseInfo(purchaseItems): totalPrice = ITEM_PRICE_EMPTY numSelectedItems = 0 numApplyingItems = 0 isAtLeastOneItemFromInventory = False isAtLeastOneItemDismantled = False minPriceItem = Money() for purchaseItem in purchaseItems: if not purchaseItem.isDismantling: numApplyingItems += 1 else: isAtLeastOneItemDismantled = True if purchaseItem.selected and not purchaseItem.isDismantling: numSelectedItems += 1 if not purchaseItem.isFromInventory: totalPrice += purchaseItem.price if not minPriceItem.isDefined( ) or purchaseItem.price.price < minPriceItem: minPriceItem = purchaseItem.price.price else: isAtLeastOneItemFromInventory = True return CartInfo(totalPrice, numSelectedItems, numApplyingItems, len(purchaseItems), minPriceItem, isAtLeastOneItemFromInventory, isAtLeastOneItemDismantled)