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")})