Load overrides from database

This commit is contained in:
blitzmann
2015-11-01 15:00:09 -05:00
parent b701acb275
commit 0e4cca6138
5 changed files with 39 additions and 24 deletions

View File

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

View File

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

View File

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

View File

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

View File

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