From 6612724beb51a6767bdf60f9bb293b28dde3abe7 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Mon, 29 Jun 2020 21:26:58 -0400 Subject: [PATCH] Fix market group generation to be language agnostic --- db_update.py | 4 ++-- eos/db/gamedata/marketGroup.py | 23 +++++++++++++++-------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/db_update.py b/db_update.py index b10e54dd2..565fba652 100644 --- a/db_update.py +++ b/db_update.py @@ -273,10 +273,10 @@ def update_db(): data = _readData('fsd_binary', 'marketgroups', keyIdName='marketGroupID') map = { 'name_en-us': 'marketGroupName', - 'description_en-us': 'marketGroupDescription', + 'description_en-us': '_description', } map.update({'name'+v: 'marketGroupName'+v for (k, v) in eos.config.translation_mapping.items() if k != 'en_US'}) - map.update({'description' + v: 'marketGroupDescription' + v for (k, v) in eos.config.translation_mapping.items() if k != 'en_US'}) + map.update({'description' + v: '_description' + v for (k, v) in eos.config.translation_mapping.items() if k != 'en_US'}) _addRows(data, eos.gamedata.MarketGroup, fieldMap=map) def processMetaGroups(): diff --git a/eos/db/gamedata/marketGroup.py b/eos/db/gamedata/marketGroup.py index 1bf281ed8..bc2d7517a 100644 --- a/eos/db/gamedata/marketGroup.py +++ b/eos/db/gamedata/marketGroup.py @@ -33,16 +33,23 @@ marketgroups_table = Table("invmarketgroups", gamedata_meta, ForeignKey("invmarketgroups.marketGroupID", initially="DEFERRED", deferrable=True)), Column("iconID", Integer)) +props = { + "items": relation(Item, backref="marketGroup"), + "parent": relation(MarketGroup, backref="children", remote_side=[marketgroups_table.c.marketGroupID]), + "ID": synonym("marketGroupID"), + "name": synonym("marketGroupName{}".format(eos.config.lang)), + "description": synonym("_description{}".format(eos.config.lang)), +} + +# Create deferred columns shadowing all the description fields. The literal `description` property will dynamically +# be assigned as synonym to one of these +# this is mostly here to allow the db_update to be language-agnostic +# todo: determine if we ever use market group descriptions... can we just get with of these? +props.update({'_description' + v: deferred(marketgroups_table.c['marketGroupDescription' + v]) for (k, v) in eos.config.translation_mapping.items()}) + mapper( MarketGroup, marketgroups_table, - properties={ - "items" : relation(Item, backref="marketGroup"), - "parent" : relation(MarketGroup, backref="children", - remote_side=[marketgroups_table.c.marketGroupID]), - "ID" : synonym("marketGroupID"), - "name" : synonym("marketGroupName{}".format(eos.config.lang)), - "description": deferred(marketgroups_table.c["marketGroupDescription{}".format(eos.config.lang)]), - } + properties=props )