diff --git a/eos/db/__init__.py b/eos/db/__init__.py index 8867d63c5..7aef55fd7 100644 --- a/eos/db/__init__.py +++ b/eos/db/__init__.py @@ -68,14 +68,8 @@ from eos.db.gamedata import * from eos.db.saveddata import * #Import queries -from eos.db.gamedata.queries import getItem, searchItems, getVariations, getItemsByCategory, directAttributeRequest, \ - getMarketGroup, getGroup, getCategory, getAttributeInfo, getMetaData, getMetaGroup -from eos.db.saveddata.queries import getUser, getCharacter, getFit, getFitsWithShip, countFitsWithShip, searchFits, \ - getCharacterList, getPrice, getDamagePatternList, getDamagePattern, \ - getFitList, getFleetList, getFleet, save, remove, commit, add, \ - getCharactersForUser, getMiscData, getSquadsIDsWithFitID, getWing, \ - getSquad, getBoosterFits, getProjectedFits, getTargetResistsList, getTargetResists,\ - clearPrices, countAllFits +from eos.db.gamedata.queries import * +from eos.db.saveddata.queries import * #If using in memory saveddata, you'll want to reflect it so the data structure is good. if config.saveddata_connectionstring == "sqlite:///:memory:": diff --git a/eos/db/saveddata/__init__.py b/eos/db/saveddata/__init__.py index 31e71c01a..6bb3b2d86 100644 --- a/eos/db/saveddata/__init__.py +++ b/eos/db/saveddata/__init__.py @@ -1,3 +1,16 @@ -__all__ = ["character", "fit", "module", "user", "skill", "price", - "booster", "drone", "implant", "fleet", "damagePattern", - "miscData", "targetResists"] +__all__ = [ + "character", + "fit", + "module", + "user", + "skill", + "price", + "booster", + "drone", + "implant", + "fleet", + "damagePattern", + "miscData", + "targetResists", + "override" +] diff --git a/eos/db/saveddata/queries.py b/eos/db/saveddata/queries.py index b71f6b98a..3fbe55322 100644 --- a/eos/db/saveddata/queries.py +++ b/eos/db/saveddata/queries.py @@ -19,7 +19,7 @@ from eos.db.util import processEager, processWhere from eos.db import saveddata_session, sd_lock -from eos.types import User, Character, Fit, Price, DamagePattern, Fleet, MiscData, Wing, Squad, TargetResists +from eos.types import User, Character, Fit, Price, DamagePattern, Fleet, MiscData, Wing, Squad, TargetResists, Override from eos.db.saveddata.fleet import squadmembers_table from eos.db.saveddata.fit import projectedFits_table from sqlalchemy.sql import and_ @@ -416,6 +416,12 @@ def getProjectedFits(fitID): else: raise TypeError("Need integer as argument") +def getOverrides(itemID, eager=None): + if isinstance(itemID, int): + return saveddata_session.query(Override).filter(Override.itemID == itemID).all() + else: + raise TypeError("Need integer as argument") + def removeInvalid(fits): invalids = [f for f in fits if f.isInvalid] diff --git a/eos/gamedata.py b/eos/gamedata.py index 35016fac3..2dda6703a 100644 --- a/eos/gamedata.py +++ b/eos/gamedata.py @@ -24,7 +24,7 @@ from sqlalchemy.orm import reconstructor from eqBase import EqBase import traceback - +import eos.db try: from collections import OrderedDict except ImportError: @@ -168,7 +168,6 @@ class Item(EqBase): info = getattr(cls, "MOVE_ATTR_INFO", None) if info is None: cls.MOVE_ATTR_INFO = info = [] - import eos.db for id in cls.MOVE_ATTRS: info.append(eos.db.getAttributeInfo(id)) @@ -183,16 +182,6 @@ class Item(EqBase): attr.info = info attr.value = val self.__attributes[info.name] = attr - try: - mod = __import__('overrides.' + str(self.ID), fromlist=True) - self.overrides = {} - for key in dir(mod): - if key[:2] != "__": - self.overrides[key] = getattr(mod, key) - except ImportError: - self.overrides = {} - - @reconstructor def init(self): @@ -201,6 +190,7 @@ class Item(EqBase): self.__moved = False self.__offensive = None self.__assistive = None + self.__overrides = None @property def attributes(self): @@ -220,6 +210,17 @@ class Item(EqBase): return False + @property + def overrides(self): + if self.__overrides is None: + self.__overrides = {} + overrides = eos.db.getOverrides(self.ID) + for x in overrides: + if x.attr.name in self.__attributes: + self.__overrides[x.attr.name] = x.value + + return self.__overrides + @property def requiredSkills(self): if self.__requiredSkills is None: diff --git a/eos/types.py b/eos/types.py index 6e98749d2..5e21b0111 100644 --- a/eos/types.py +++ b/eos/types.py @@ -35,4 +35,5 @@ from eos.saveddata.fit import Fit from eos.saveddata.mode import Mode from eos.saveddata.fleet import Fleet, Wing, Squad from eos.saveddata.miscData import MiscData +from eos.saveddata.override import Override import eos.db