Make use of batch variation processing
This commit is contained in:
2
eos
2
eos
Submodule eos updated: 86b257c6ff...e86db41e46
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user