Show market jump menu item only for items residing in groups shown by pyfa
This commit is contained in:
@@ -272,6 +272,15 @@ def getMarketGroup(lookfor, eager=None):
|
||||
return marketGroup
|
||||
|
||||
|
||||
def getMarketTreeNodeIds(rootNodeIds):
|
||||
allIds = set()
|
||||
addedIds = set(rootNodeIds)
|
||||
while addedIds:
|
||||
allIds.update(addedIds)
|
||||
addedIds = {mg.ID for mg in gamedata_session.query(MarketGroup).filter(MarketGroup.parentGroupID.in_(addedIds))}
|
||||
return allIds
|
||||
|
||||
|
||||
@cachedQuery(2, "where", "filter")
|
||||
def getItemsByCategory(filter, where=None, eager=None):
|
||||
if isinstance(filter, int):
|
||||
|
||||
@@ -339,6 +339,7 @@ class Market(object):
|
||||
2202, # Structure Equipment
|
||||
2203 # Structure Modifications
|
||||
)
|
||||
self.SHOWN_MARKET_GROUPS = eos.db.getMarketTreeNodeIds(self.ROOT_MARKET_GROUPS)
|
||||
# Tell other threads that Market is at their service
|
||||
mktRdy.set()
|
||||
|
||||
@@ -488,15 +489,21 @@ class Market(object):
|
||||
# Check if we force market group for given item
|
||||
if item.name in self.ITEMS_FORCEDMARKETGROUP:
|
||||
mgid = self.ITEMS_FORCEDMARKETGROUP[item.name]
|
||||
return self.getMarketGroup(mgid)
|
||||
if mgid in self.SHOWN_MARKET_GROUPS:
|
||||
return self.getMarketGroup(mgid)
|
||||
else:
|
||||
return None
|
||||
# Check if item itself has market group
|
||||
elif item.marketGroupID:
|
||||
return item.marketGroup
|
||||
if item.marketGroupID in self.SHOWN_MARKET_GROUPS:
|
||||
return item.marketGroup
|
||||
else:
|
||||
return None
|
||||
elif parentcheck:
|
||||
# If item doesn't have marketgroup, check if it has parent
|
||||
# item and use its market group
|
||||
parent = self.getParentItemByItem(item, selfparent=False)
|
||||
if parent:
|
||||
if parent and parent.marketGroupID in self.SHOWN_MARKET_GROUPS:
|
||||
return parent.marketGroup
|
||||
else:
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user