Make use of batch variation processing

This commit is contained in:
DarkPhoenix
2011-10-18 00:12:04 +04:00
parent 6edbc274e2
commit c8a5bf3ade
2 changed files with 32 additions and 22 deletions

2
eos

Submodule eos updated: 86b257c6ff...e86db41e46

View File

@@ -442,22 +442,30 @@ class Market():
parent = None parent = None
return parent return parent
def getVariationsByItem(self, item, alreadyparent=False): def getVariationsByItems(self, items, alreadyparent=False):
"""Get item variations by item, its ID or name""" """Get item variations by item, its ID or name"""
# Get parent item # Set for IDs of parent items
if alreadyparent is False: parents = set()
parent = self.getParentItemByItem(item) # Set-container for variables
else: variations = set()
parent = item for item in items:
# All its variations # Get parent item
vars = set(eos.db.getVariations(parent)) if alreadyparent is False:
# Combine both in the same set parent = self.getParentItemByItem(item)
vars.add(parent) else:
# Check for overrides and add them if any parent = item
if parent.name in self.ITEMS_FORCEDMETAGROUP_R: # Combine both in the same set
for itmn in self.ITEMS_FORCEDMETAGROUP_R[parent.name]: parents.add(parent)
vars.add(self.getItem(itmn)) # Check for overrides and add them if any
return vars if parent.name in self.ITEMS_FORCEDMETAGROUP_R:
for itmn in self.ITEMS_FORCEDMETAGROUP_R[parent.name]:
variations.add(self.getItem(itmn))
# Add all parents to variations set
variations.update(parents)
# Add all variations of parents to the set
parentids = tuple(item.ID for item in parents)
variations.update(eos.db.getVariations(parentids))
return variations
def getGroupsByCategory(self, cat): def getGroupsByCategory(self, cat):
"""Get groups from given category""" """Get groups from given category"""
@@ -488,18 +496,20 @@ class Market():
forceditms = set(self.getItem(itmn) for itmn in self.ITEMS_FORCEDMARKETGROUP_R[mg.ID]) forceditms = set(self.getItem(itmn) for itmn in self.ITEMS_FORCEDMARKETGROUP_R[mg.ID])
baseitms.update(forceditms) baseitms.update(forceditms)
if vars: if vars:
parents = set()
for item in baseitms: for item in baseitms:
# Add one of the base market group items to result # Add one of the base market group items to result
result.add(item) result.add(item)
parent = self.getParentItemByItem(item, selfparent=False) parent = self.getParentItemByItem(item, selfparent=False)
# If item has no parent, it's base item (or at least should be) # If item has no parent, it's base item (or at least should be)
if parent is None: if parent is None:
# Fetch variations only for parent items parents.add(item)
variations = self.getVariationsByItem(item, alreadyparent=True) # Fetch variations only for parent items
for variation in variations: variations = self.getVariationsByItems(parents, alreadyparent=True)
# Exclude items with their own explicitly defined market groups for variation in variations:
if self.getMarketGroupByItem(variation, parentcheck=False) is None: # Exclude items with their own explicitly defined market groups
result.add(variation) if self.getMarketGroupByItem(variation, parentcheck=False) is None:
result.add(variation)
else: else:
result = baseitms result = baseitms
# Get rid of unpublished items # Get rid of unpublished items