From feb83cf737119f9d4b56dd6c7cd12c91a1537c40 Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Wed, 19 Oct 2016 11:26:40 -0700 Subject: [PATCH] Revert "Revert "Reformatting eos.db.gamedata"" This reverts commit 0ff4aec40025a2b965f0ea28c52e55a61294e4f2. --- eos/db/gamedata/attribute.py | 30 ++++++++------- eos/db/gamedata/category.py | 14 +++---- eos/db/gamedata/effect.py | 20 +++++----- eos/db/gamedata/group.py | 16 ++++---- eos/db/gamedata/icon.py | 10 ++--- eos/db/gamedata/item.py | 36 +++++++++--------- eos/db/gamedata/marketGroup.py | 22 ++++++----- eos/db/gamedata/metaData.py | 11 +++--- eos/db/gamedata/metaGroup.py | 24 ++++++------ eos/db/gamedata/queries.py | 67 +++++++++++++++++++++++++--------- eos/db/gamedata/traits.py | 4 +- eos/db/gamedata/unit.py | 10 ++--- 12 files changed, 151 insertions(+), 113 deletions(-) diff --git a/eos/db/gamedata/attribute.py b/eos/db/gamedata/attribute.py index 3f880c026..e09e0865b 100644 --- a/eos/db/gamedata/attribute.py +++ b/eos/db/gamedata/attribute.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,20 +15,22 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== from sqlalchemy import Table, Column, Integer, Float, Unicode, ForeignKey, String, Boolean -from sqlalchemy.orm import relation, mapper, synonym, deferred from sqlalchemy.ext.associationproxy import association_proxy -from eos.types import Attribute, Icon, AttributeInfo, Unit +from sqlalchemy.orm import relation, mapper, synonym, deferred + from eos.db import gamedata_meta +from eos.types import Attribute, Icon, AttributeInfo, Unit + typeattributes_table = Table("dgmtypeattribs", gamedata_meta, - Column("value", Float), - Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True, index=True), - Column("attributeID", ForeignKey("dgmattribs.attributeID"), primary_key=True)) + Column("value", Float), + Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True, index=True), + Column("attributeID", ForeignKey("dgmattribs.attributeID"), primary_key=True)) attributes_table = Table("dgmattribs", gamedata_meta, - Column("attributeID", Integer, primary_key = True), + Column("attributeID", Integer, primary_key=True), Column("attributeName", String), Column("defaultValue", Float), Column("maxAttributeID", Integer, ForeignKey("dgmattribs.attributeID")), @@ -40,14 +42,14 @@ attributes_table = Table("dgmattribs", gamedata_meta, Column("unitID", Integer, ForeignKey("dgmunits.unitID"))) mapper(Attribute, typeattributes_table, - properties = {"info": relation(AttributeInfo, lazy=False)}) + properties={"info": relation(AttributeInfo, lazy=False)}) mapper(AttributeInfo, attributes_table, - properties = {"icon" : relation(Icon), - "unit": relation(Unit), - "ID": synonym("attributeID"), - "name": synonym("attributeName"), - "description" : deferred(attributes_table.c.description)}) + properties={"icon": relation(Icon), + "unit": relation(Unit), + "ID": synonym("attributeID"), + "name": synonym("attributeName"), + "description": deferred(attributes_table.c.description)}) Attribute.ID = association_proxy("info", "attributeID") Attribute.name = association_proxy("info", "attributeName") diff --git a/eos/db/gamedata/category.py b/eos/db/gamedata/category.py index a44b7d663..d33cce130 100644 --- a/eos/db/gamedata/category.py +++ b/eos/db/gamedata/category.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== from sqlalchemy import Column, String, Integer, ForeignKey, Boolean, Table from sqlalchemy.orm import relation, mapper, synonym, deferred @@ -24,14 +24,14 @@ from eos.db import gamedata_meta from eos.types import Category, Icon categories_table = Table("invcategories", gamedata_meta, - Column("categoryID", Integer, primary_key = True), + Column("categoryID", Integer, primary_key=True), Column("categoryName", String), Column("description", String), Column("published", Boolean), Column("iconID", Integer, ForeignKey("icons.iconID"))) mapper(Category, categories_table, - properties = {"icon" : relation(Icon), - "ID" : synonym("categoryID"), - "name" : synonym("categoryName"), - "description" : deferred(categories_table.c.description)}) + properties={"icon": relation(Icon), + "ID": synonym("categoryID"), + "name": synonym("categoryName"), + "description": deferred(categories_table.c.description)}) diff --git a/eos/db/gamedata/effect.py b/eos/db/gamedata/effect.py index 21d7613c6..001d05162 100644 --- a/eos/db/gamedata/effect.py +++ b/eos/db/gamedata/effect.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,35 +15,35 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== from sqlalchemy import Column, String, Integer, Boolean, Table, ForeignKey from sqlalchemy.ext.associationproxy import association_proxy from sqlalchemy.orm import mapper, synonym, relation, deferred -from eos.types import Effect, EffectInfo + from eos.db import gamedata_meta +from eos.types import Effect, EffectInfo typeeffects_table = Table("dgmtypeeffects", gamedata_meta, Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True, index=True), Column("effectID", Integer, ForeignKey("dgmeffects.effectID"), primary_key=True)) effects_table = Table("dgmeffects", gamedata_meta, - Column("effectID", Integer, primary_key = True), + Column("effectID", Integer, primary_key=True), Column("effectName", String), Column("description", String), Column("published", Boolean), Column("isAssistance", Boolean), Column("isOffensive", Boolean)) - mapper(EffectInfo, effects_table, - properties = {"ID" : synonym("effectID"), - "name" : synonym("effectName"), - "description" : deferred(effects_table.c.description)}) + properties={"ID": synonym("effectID"), + "name": synonym("effectName"), + "description": deferred(effects_table.c.description)}) mapper(Effect, typeeffects_table, - properties = {"ID": synonym("effectID"), - "info": relation(EffectInfo, lazy=False)}) + properties={"ID": synonym("effectID"), + "info": relation(EffectInfo, lazy=False)}) Effect.name = association_proxy("info", "name") Effect.description = association_proxy("info", "description") diff --git a/eos/db/gamedata/group.py b/eos/db/gamedata/group.py index 14939c040..cbf0a34d8 100644 --- a/eos/db/gamedata/group.py +++ b/eos/db/gamedata/group.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== from sqlalchemy import Column, String, Integer, Boolean, ForeignKey, Table from sqlalchemy.orm import relation, mapper, synonym, deferred @@ -24,7 +24,7 @@ from eos.db import gamedata_meta from eos.types import Group, Icon, Category groups_table = Table("invgroups", gamedata_meta, - Column("groupID", Integer, primary_key = True), + Column("groupID", Integer, primary_key=True), Column("groupName", String), Column("description", String), Column("published", Boolean), @@ -32,8 +32,8 @@ groups_table = Table("invgroups", gamedata_meta, Column("iconID", Integer, ForeignKey("icons.iconID"))) mapper(Group, groups_table, - properties = {"category" : relation(Category, backref = "groups"), - "icon" : relation(Icon), - "ID" : synonym("groupID"), - "name" : synonym("groupName"), - "description" : deferred(groups_table.c.description)}) + properties={"category": relation(Category, backref="groups"), + "icon": relation(Icon), + "ID": synonym("groupID"), + "name": synonym("groupName"), + "description": deferred(groups_table.c.description)}) diff --git a/eos/db/gamedata/icon.py b/eos/db/gamedata/icon.py index 9aeecdf87..d0315b28f 100644 --- a/eos/db/gamedata/icon.py +++ b/eos/db/gamedata/icon.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== from sqlalchemy import Column, String, Integer, Table from sqlalchemy.orm import mapper, synonym, deferred @@ -24,10 +24,10 @@ from eos.db import gamedata_meta from eos.types import Icon icons_table = Table("icons", gamedata_meta, - Column("iconID", Integer, primary_key = True), + Column("iconID", Integer, primary_key=True), Column("description", String), Column("iconFile", String)) mapper(Icon, icons_table, - properties = {"ID" : synonym("iconID"), - "description" : deferred(icons_table.c.description)}) + properties={"ID": synonym("iconID"), + "description": deferred(icons_table.c.description)}) diff --git a/eos/db/gamedata/item.py b/eos/db/gamedata/item.py index 34a1a6189..a23c3a786 100644 --- a/eos/db/gamedata/item.py +++ b/eos/db/gamedata/item.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,18 +15,18 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== from sqlalchemy import Column, String, Integer, Boolean, ForeignKey, Table, Float -from sqlalchemy.orm import relation, mapper, synonym, deferred from sqlalchemy.ext.associationproxy import association_proxy +from sqlalchemy.orm import relation, mapper, synonym, deferred from sqlalchemy.orm.collections import attribute_mapped_collection from eos.db import gamedata_meta from eos.types import Icon, Attribute, Item, Effect, MetaType, Group, Traits items_table = Table("invtypes", gamedata_meta, - Column("typeID", Integer, primary_key = True), + Column("typeID", Integer, primary_key=True), Column("typeName", String, index=True), Column("description", String), Column("raceID", Integer), @@ -43,19 +43,19 @@ from .metaGroup import metatypes_table from .traits import traits_table mapper(Item, items_table, - properties = {"group" : relation(Group, backref = "items"), - "icon" : relation(Icon), - "_Item__attributes" : relation(Attribute, collection_class = attribute_mapped_collection('name')), - "effects" : relation(Effect, collection_class = attribute_mapped_collection('name')), - "metaGroup" : relation(MetaType, - primaryjoin = metatypes_table.c.typeID == items_table.c.typeID, - uselist = False), - "ID" : synonym("typeID"), - "name" : synonym("typeName"), - "description" : deferred(items_table.c.description), - "traits" : relation(Traits, - primaryjoin = traits_table.c.typeID == items_table.c.typeID, - uselist = False) - }) + properties={"group": relation(Group, backref="items"), + "icon": relation(Icon), + "_Item__attributes": relation(Attribute, collection_class=attribute_mapped_collection('name')), + "effects": relation(Effect, collection_class=attribute_mapped_collection('name')), + "metaGroup": relation(MetaType, + primaryjoin=metatypes_table.c.typeID == items_table.c.typeID, + uselist=False), + "ID": synonym("typeID"), + "name": synonym("typeName"), + "description": deferred(items_table.c.description), + "traits": relation(Traits, + primaryjoin=traits_table.c.typeID == items_table.c.typeID, + uselist=False) + }) Item.category = association_proxy("group", "category") diff --git a/eos/db/gamedata/marketGroup.py b/eos/db/gamedata/marketGroup.py index 6f16e48ae..b5b631ea3 100644 --- a/eos/db/gamedata/marketGroup.py +++ b/eos/db/gamedata/marketGroup.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== from sqlalchemy import Column, String, Integer, Boolean, ForeignKey, Table from sqlalchemy.orm import relation, mapper, synonym, deferred @@ -24,17 +24,19 @@ from eos.db import gamedata_meta from eos.types import Item, MarketGroup, Icon marketgroups_table = Table("invmarketgroups", gamedata_meta, - Column("marketGroupID", Integer, primary_key = True), + Column("marketGroupID", Integer, primary_key=True), Column("marketGroupName", String), Column("description", String), Column("hasTypes", Boolean), - Column("parentGroupID", Integer, ForeignKey("invmarketgroups.marketGroupID", initially="DEFERRED", deferrable=True)), + Column("parentGroupID", Integer, + ForeignKey("invmarketgroups.marketGroupID", initially="DEFERRED", deferrable=True)), Column("iconID", Integer, ForeignKey("icons.iconID"))) mapper(MarketGroup, marketgroups_table, - properties = {"items" : relation(Item, backref = "marketGroup"), - "parent" : relation(MarketGroup, backref = "children", remote_side = [marketgroups_table.c.marketGroupID]), - "icon" : relation(Icon), - "ID" : synonym("marketGroupID"), - "name" : synonym("marketGroupName"), - "description" : deferred(marketgroups_table.c.description)}) + properties={"items": relation(Item, backref="marketGroup"), + "parent": relation(MarketGroup, backref="children", + remote_side=[marketgroups_table.c.marketGroupID]), + "icon": relation(Icon), + "ID": synonym("marketGroupID"), + "name": synonym("marketGroupName"), + "description": deferred(marketgroups_table.c.description)}) diff --git a/eos/db/gamedata/metaData.py b/eos/db/gamedata/metaData.py index bdbdd7c8a..6bf500a72 100644 --- a/eos/db/gamedata/metaData.py +++ b/eos/db/gamedata/metaData.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,15 +15,16 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== from sqlalchemy import Column, Table, String from sqlalchemy.orm import mapper -from eos.types import MetaData + from eos.db import gamedata_meta +from eos.types import MetaData metadata_table = Table("metadata", gamedata_meta, - Column("field_name", String, primary_key=True), - Column("field_value", String)) + Column("field_name", String, primary_key=True), + Column("field_value", String)) mapper(MetaData, metadata_table) diff --git a/eos/db/gamedata/metaGroup.py b/eos/db/gamedata/metaGroup.py index 554bf5739..e5ed5c399 100644 --- a/eos/db/gamedata/metaGroup.py +++ b/eos/db/gamedata/metaGroup.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,33 +15,33 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== from sqlalchemy import Table, Column, Integer, ForeignKey, String +from sqlalchemy.ext.associationproxy import association_proxy from sqlalchemy.orm import relation, mapper, synonym + from eos.db import gamedata_meta from eos.db.gamedata.item import items_table from eos.types import MetaGroup, Item, MetaType -from sqlalchemy.ext.associationproxy import association_proxy metagroups_table = Table("invmetagroups", gamedata_meta, - Column("metaGroupID", Integer, primary_key = True), + Column("metaGroupID", Integer, primary_key=True), Column("metaGroupName", String)) metatypes_table = Table("invmetatypes", gamedata_meta, - Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key = True), + Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True), Column("parentTypeID", Integer, ForeignKey("invtypes.typeID")), Column("metaGroupID", Integer, ForeignKey("invmetagroups.metaGroupID"))) mapper(MetaGroup, metagroups_table, - properties = {"ID" : synonym("metaGroupID"), - "name" : synonym("metaGroupName")}) + properties={"ID": synonym("metaGroupID"), + "name": synonym("metaGroupName")}) mapper(MetaType, metatypes_table, - properties = {"ID" : synonym("metaGroupID"), - "parent" : relation(Item, primaryjoin = metatypes_table.c.parentTypeID == items_table.c.typeID), - "items" : relation(Item, primaryjoin = metatypes_table.c.typeID == items_table.c.typeID), - "info": relation(MetaGroup, lazy=False)}) + properties={"ID": synonym("metaGroupID"), + "parent": relation(Item, primaryjoin=metatypes_table.c.parentTypeID == items_table.c.typeID), + "items": relation(Item, primaryjoin=metatypes_table.c.typeID == items_table.c.typeID), + "info": relation(MetaGroup, lazy=False)}) MetaType.name = association_proxy("info", "name") - diff --git a/eos/db/gamedata/queries.py b/eos/db/gamedata/queries.py index 6431b0cc7..b2db92437 100644 --- a/eos/db/gamedata/queries.py +++ b/eos/db/gamedata/queries.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,21 +15,23 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== +from sqlalchemy.orm import join, exc +from sqlalchemy.sql import and_, or_, select + +import eos.config from eos.db import gamedata_session from eos.db.gamedata.metaGroup import metatypes_table, items_table -from sqlalchemy.sql import and_, or_, select, func -from sqlalchemy.orm import join, exc -from eos.types import Item, Category, Group, MarketGroup, AttributeInfo, MetaData, MetaGroup from eos.db.util import processEager, processWhere -import eos.config +from eos.types import Item, Category, Group, MarketGroup, AttributeInfo, MetaData, MetaGroup configVal = getattr(eos.config, "gamedataCache", None) if configVal is True: def cachedQuery(amount, *keywords): def deco(function): cache = {} + def checkAndReturn(*args, **kwargs): useCache = kwargs.pop("useCache", True) cacheKey = [] @@ -45,6 +47,7 @@ if configVal is True: return handler return checkAndReturn + return deco elif callable(configVal): @@ -56,8 +59,10 @@ else: return function(*args, **kwargs) return checkAndReturn + return deco + def sqlizeString(line): # Escape backslashes first, as they will be as escape symbol in queries # Then escape percent and underscore signs @@ -65,7 +70,10 @@ def sqlizeString(line): line = line.replace("\\", "\\\\").replace("%", "\\%").replace("_", "\\_").replace("*", "%") return line + itemNameMap = {} + + @cachedQuery(1, "lookfor") def getItem(lookfor, eager=None): if isinstance(lookfor, int): @@ -88,7 +96,10 @@ def getItem(lookfor, eager=None): raise TypeError("Need integer or string as argument") return item + groupNameMap = {} + + @cachedQuery(1, "lookfor") def getGroup(lookfor, eager=None): if isinstance(lookfor, int): @@ -111,63 +122,78 @@ def getGroup(lookfor, eager=None): raise TypeError("Need integer or string as argument") return group + categoryNameMap = {} + + @cachedQuery(1, "lookfor") def getCategory(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: category = gamedata_session.query(Category).get(lookfor) else: - category = gamedata_session.query(Category).options(*processEager(eager)).filter(Category.ID == lookfor).first() + category = gamedata_session.query(Category).options(*processEager(eager)).filter( + Category.ID == lookfor).first() elif isinstance(lookfor, basestring): if lookfor in categoryNameMap: id = categoryNameMap[lookfor] if eager is None: category = gamedata_session.query(Category).get(id) else: - category = gamedata_session.query(Category).options(*processEager(eager)).filter(Category.ID == id).first() + category = gamedata_session.query(Category).options(*processEager(eager)).filter( + Category.ID == id).first() else: # Category names are unique, so we can use first() instead of one() - category = gamedata_session.query(Category).options(*processEager(eager)).filter(Category.name == lookfor).first() + category = gamedata_session.query(Category).options(*processEager(eager)).filter( + Category.name == lookfor).first() categoryNameMap[lookfor] = category.ID else: raise TypeError("Need integer or string as argument") return category + metaGroupNameMap = {} + + @cachedQuery(1, "lookfor") def getMetaGroup(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: metaGroup = gamedata_session.query(MetaGroup).get(lookfor) else: - metaGroup = gamedata_session.query(MetaGroup).options(*processEager(eager)).filter(MetaGroup.ID == lookfor).first() + metaGroup = gamedata_session.query(MetaGroup).options(*processEager(eager)).filter( + MetaGroup.ID == lookfor).first() elif isinstance(lookfor, basestring): if lookfor in metaGroupNameMap: id = metaGroupNameMap[lookfor] if eager is None: metaGroup = gamedata_session.query(MetaGroup).get(id) else: - metaGroup = gamedata_session.query(MetaGroup).options(*processEager(eager)).filter(MetaGroup.ID == id).first() + metaGroup = gamedata_session.query(MetaGroup).options(*processEager(eager)).filter( + MetaGroup.ID == id).first() else: # MetaGroup names are unique, so we can use first() instead of one() - metaGroup = gamedata_session.query(MetaGroup).options(*processEager(eager)).filter(MetaGroup.name == lookfor).first() + metaGroup = gamedata_session.query(MetaGroup).options(*processEager(eager)).filter( + MetaGroup.name == lookfor).first() metaGroupNameMap[lookfor] = metaGroup.ID else: raise TypeError("Need integer or string as argument") return metaGroup + @cachedQuery(1, "lookfor") def getMarketGroup(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: marketGroup = gamedata_session.query(MarketGroup).get(lookfor) else: - marketGroup = gamedata_session.query(MarketGroup).options(*processEager(eager)).filter(MarketGroup.ID == lookfor).first() + marketGroup = gamedata_session.query(MarketGroup).options(*processEager(eager)).filter( + MarketGroup.ID == lookfor).first() else: raise TypeError("Need integer as argument") return marketGroup + @cachedQuery(2, "where", "filter") def getItemsByCategory(filter, where=None, eager=None): if isinstance(filter, int): @@ -178,7 +204,9 @@ def getItemsByCategory(filter, where=None, eager=None): raise TypeError("Need integer or string as argument") filter = processWhere(filter, where) - return gamedata_session.query(Item).options(*processEager(eager)).join(Item.group, Group.category).filter(filter).all() + return gamedata_session.query(Item).options(*processEager(eager)).join(Item.group, Group.category).filter( + filter).all() + @cachedQuery(3, "where", "nameLike", "join") def searchItems(nameLike, where=None, join=None, eager=None): @@ -201,6 +229,7 @@ def searchItems(nameLike, where=None, join=None, eager=None): items = items.limit(100).all() return items + @cachedQuery(2, "where", "itemids") def getVariations(itemids, where=None, eager=None): for itemid in itemids: @@ -213,9 +242,11 @@ def getVariations(itemids, where=None, eager=None): itemfilter = or_(*(metatypes_table.c.parentTypeID == itemid for itemid in itemids)) filter = processWhere(itemfilter, where) joinon = items_table.c.typeID == metatypes_table.c.typeID - vars = gamedata_session.query(Item).options(*processEager(eager)).join((metatypes_table, joinon)).filter(filter).all() + vars = gamedata_session.query(Item).options(*processEager(eager)).join((metatypes_table, joinon)).filter( + filter).all() return vars + @cachedQuery(1, "attr") def getAttributeInfo(attr, eager=None): if isinstance(attr, basestring): @@ -230,6 +261,7 @@ def getAttributeInfo(attr, eager=None): result = None return result + @cachedQuery(1, "field") def getMetaData(field): if isinstance(field, basestring): @@ -238,6 +270,7 @@ def getMetaData(field): raise TypeError("Need string as argument") return data + @cachedQuery(2, "itemIDs", "attributeID") def directAttributeRequest(itemIDs, attrIDs): for itemID in itemIDs: @@ -248,8 +281,8 @@ def directAttributeRequest(itemIDs, attrIDs): raise TypeError("All itemIDs must be integer") q = select((eos.types.Item.typeID, eos.types.Attribute.attributeID, eos.types.Attribute.value), - and_(eos.types.Attribute.attributeID.in_(attrIDs), eos.types.Item.typeID.in_(itemIDs)), - from_obj=[join(eos.types.Attribute, eos.types.Item)]) + and_(eos.types.Attribute.attributeID.in_(attrIDs), eos.types.Item.typeID.in_(itemIDs)), + from_obj=[join(eos.types.Attribute, eos.types.Item)]) result = gamedata_session.execute(q).fetchall() return result diff --git a/eos/db/gamedata/traits.py b/eos/db/gamedata/traits.py index 907c53247..70cd5752f 100644 --- a/eos/db/gamedata/traits.py +++ b/eos/db/gamedata/traits.py @@ -1,8 +1,8 @@ - from sqlalchemy import Column, Table, Integer, String, ForeignKey from sqlalchemy.orm import mapper -from eos.types import Traits + from eos.db import gamedata_meta +from eos.types import Traits traits_table = Table("invtraits", gamedata_meta, Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True), diff --git a/eos/db/gamedata/unit.py b/eos/db/gamedata/unit.py index 662c5cec5..55594eb90 100644 --- a/eos/db/gamedata/unit.py +++ b/eos/db/gamedata/unit.py @@ -1,4 +1,4 @@ -#=============================================================================== +# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . -#=============================================================================== +# =============================================================================== from sqlalchemy import Column, Table, Integer, String from sqlalchemy.orm import mapper, synonym @@ -24,10 +24,10 @@ from eos.db import gamedata_meta from eos.types import Unit groups_table = Table("dgmunits", gamedata_meta, - Column("unitID", Integer, primary_key = True), + Column("unitID", Integer, primary_key=True), Column("unitName", String), Column("displayName", String)) mapper(Unit, groups_table, - properties = {"ID" : synonym("unitID"), - "name" : synonym("unitName")}) + properties={"ID": synonym("unitID"), + "name": synonym("unitName")})