Revert "Purging fleet bonuses from code base"

This reverts commit 68f45706ab.
This commit is contained in:
Ebag333
2016-09-15 15:27:10 -07:00
parent 68f45706ab
commit 6e54d6788c
11 changed files with 1317 additions and 7 deletions

View File

@@ -17,4 +17,50 @@
# along with eos. If not, see <http://www.gnu.org/licenses/>.
#===============================================================================
#Purging fleet
from sqlalchemy import Table, Column, Integer, ForeignKey, String
from sqlalchemy.orm import mapper, relation
from eos.db import saveddata_meta
from eos.types import Fleet, Wing, Squad, Fit
from eos.db.saveddata.fit import fits_table
gangs_table = Table("gangs", saveddata_meta,
Column("ID", Integer, primary_key = True),
Column("leaderID", ForeignKey("fits.ID")),
Column("boosterID", ForeignKey("fits.ID")),
Column("name", String))
wings_table = Table("wings", saveddata_meta,
Column("ID", Integer, primary_key = True),
Column("gangID", ForeignKey("gangs.ID")),
Column("boosterID", ForeignKey("fits.ID")),
Column("leaderID", ForeignKey("fits.ID")))
squads_table = Table("squads", saveddata_meta,
Column("ID", Integer, primary_key = True),
Column("wingID", ForeignKey("wings.ID")),
Column("leaderID", ForeignKey("fits.ID")),
Column("boosterID", ForeignKey("fits.ID")))
squadmembers_table = Table("squadmembers", saveddata_meta,
Column("squadID", ForeignKey("squads.ID"), primary_key = True),
Column("memberID", ForeignKey("fits.ID"), primary_key = True))
mapper(Fleet, gangs_table,
properties = {"wings" : relation(Wing, backref="gang"),
"leader" : relation(Fit, primaryjoin = gangs_table.c.leaderID == fits_table.c.ID),
"booster": relation(Fit, primaryjoin = gangs_table.c.boosterID == fits_table.c.ID)})
mapper(Wing, wings_table,
properties = {"squads" : relation(Squad, backref="wing"),
"leader" : relation(Fit, primaryjoin = wings_table.c.leaderID == fits_table.c.ID),
"booster": relation(Fit, primaryjoin = wings_table.c.boosterID == fits_table.c.ID)})
mapper(Squad, squads_table,
properties = {"leader" : relation(Fit, primaryjoin = squads_table.c.leaderID == fits_table.c.ID),
"booster" : relation(Fit, primaryjoin = squads_table.c.boosterID == fits_table.c.ID),
"members" : relation(Fit,
primaryjoin = squads_table.c.ID == squadmembers_table.c.squadID,
secondaryjoin = squadmembers_table.c.memberID == fits_table.c.ID,
secondary = squadmembers_table)})

View File

@@ -21,6 +21,7 @@ from eos.db.util import processEager, processWhere
from eos.db import saveddata_session, sd_lock
from eos.types import *
from eos.db.saveddata.fleet import squadmembers_table
from eos.db.saveddata.fit import projectedFits_table
from sqlalchemy.sql import and_
import eos.config
@@ -193,6 +194,48 @@ def getFit(lookfor, eager=None):
return fit
@cachedQuery(Fleet, 1, "fleetID")
def getFleet(fleetID, eager=None):
if isinstance(fleetID, int):
if eager is None:
with sd_lock:
fleet = saveddata_session.query(Fleet).get(fleetID)
else:
eager = processEager(eager)
with sd_lock:
fleet = saveddata_session.query(Fleet).options(*eager).filter(Fleet.ID == fleetID).first()
else:
raise TypeError("Need integer as argument")
return fleet
@cachedQuery(Wing, 1, "wingID")
def getWing(wingID, eager=None):
if isinstance(wingID, int):
if eager is None:
with sd_lock:
wing = saveddata_session.query(Wing).get(wingID)
else:
eager = processEager(eager)
with sd_lock:
wing = saveddata_session.query(Wing).options(*eager).filter(Wing.ID == wingID).first()
else:
raise TypeError("Need integer as argument")
return wing
@cachedQuery(Squad, 1, "squadID")
def getSquad(squadID, eager=None):
if isinstance(squadID, int):
if eager is None:
with sd_lock:
squad = saveddata_session.query(Squad).get(squadID)
else:
eager = processEager(eager)
with sd_lock:
squad = saveddata_session.query(Squad).options(*eager).filter(Fleet.ID == squadID).first()
else:
raise TypeError("Need integer as argument")
return squad
def getFitsWithShip(shipID, ownerID=None, where=None, eager=None):
"""
Get all the fits using a certain ship.
@@ -265,6 +308,12 @@ def getFitList(eager=None):
return fits
def getFleetList(eager=None):
eager = processEager(eager)
with sd_lock:
fleets = saveddata_session.query(Fleet).options(*eager).all()
return fleets
@cachedQuery(Price, 1, "typeID")
def getPrice(typeID):
if isinstance(typeID, int):
@@ -374,6 +423,15 @@ def searchFits(nameLike, where=None, eager=None):
return fits
def getSquadsIDsWithFitID(fitID):
if isinstance(fitID, int):
with sd_lock:
squads = saveddata_session.query(squadmembers_table.c.squadID).filter(squadmembers_table.c.memberID == fitID).all()
squads = tuple(entry[0] for entry in squads)
return squads
else:
raise TypeError("Need integer as argument")
def getProjectedFits(fitID):
if isinstance(fitID, int):
with sd_lock:

View File

@@ -38,6 +38,7 @@ from eos.saveddata.booster import SideEffect
from eos.saveddata.booster import Booster
from eos.saveddata.fit import Fit, ImplantLocation
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