Show market jump menu item only for items residing in groups shown by pyfa

This commit is contained in:
DarkPhoenix
2019-04-08 13:01:35 +03:00
parent 091a7d7ab8
commit 211a83defd
2 changed files with 19 additions and 3 deletions

View File

@@ -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):

View File

@@ -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