Compare commits
253 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e5f119248 | ||
|
|
1315f8d8ed | ||
|
|
356c741e54 | ||
|
|
04f52f1f86 | ||
|
|
c7042f314b | ||
|
|
dd27c3c805 | ||
|
|
9685d15e61 | ||
|
|
b31d14158f | ||
|
|
b3b62fcecc | ||
|
|
51063ef758 | ||
|
|
f406d7da09 | ||
|
|
4f64ae9f85 | ||
|
|
bdfa46cea2 | ||
|
|
693d213ec1 | ||
|
|
c76e4c8220 | ||
|
|
979539cb79 | ||
|
|
009956c301 | ||
|
|
0b64dad408 | ||
|
|
032204bd53 | ||
|
|
55847adb41 | ||
|
|
e2abc51bbf | ||
|
|
15ac9aca18 | ||
|
|
9cc70fd301 | ||
|
|
1cae335f65 | ||
|
|
3c5538109d | ||
|
|
9de7585d33 | ||
|
|
23044b5cdb | ||
|
|
dea6ced052 | ||
|
|
c584d668b7 | ||
|
|
3c6850fe7a | ||
|
|
e3590f8d16 | ||
|
|
5a586c5632 | ||
|
|
a946c9c9ed | ||
|
|
2ea0c57be5 | ||
|
|
dcd2cdeddc | ||
|
|
bd60733bfe | ||
|
|
5a1e39180a | ||
|
|
18385584bf | ||
|
|
7d58b2caa1 | ||
|
|
08f22172a6 | ||
|
|
88344dcfdc | ||
|
|
4ea69201ea | ||
|
|
07692584cf | ||
|
|
96707275be | ||
|
|
239fec48e8 | ||
|
|
6fc2cfff71 | ||
|
|
faff60c5e0 | ||
|
|
9a51d1fe3c | ||
|
|
8313fa03b8 | ||
|
|
665a1c473c | ||
|
|
c9dca6cd2a | ||
|
|
7b3e0fe3b0 | ||
|
|
8ea4ef1b44 | ||
|
|
933fbb26d7 | ||
|
|
de9ae5c78c | ||
|
|
0d1c7b93be | ||
|
|
d08b1c8284 | ||
|
|
28cfaf1702 | ||
|
|
749934b89d | ||
|
|
1c84e9dc4b | ||
|
|
df046769ff | ||
|
|
ae386cae4e | ||
|
|
d2635d6405 | ||
|
|
45fca2a87d | ||
|
|
f1f9da9214 | ||
|
|
a1416e6bec | ||
|
|
2d82eb7c92 | ||
|
|
9a2408741e | ||
|
|
b7e2b62562 | ||
|
|
fbc336b038 | ||
|
|
9dea4a26bf | ||
|
|
0ea8a7a921 | ||
|
|
0bf956e9b3 | ||
|
|
3bd66f174d | ||
|
|
4f38d71676 | ||
|
|
493294e648 | ||
|
|
2a12e4c566 | ||
|
|
b75c86d251 | ||
|
|
a148a6d818 | ||
|
|
ee8f514266 | ||
|
|
8a0778662f | ||
|
|
f9c141fa25 | ||
|
|
b783f0641c | ||
|
|
a0c1686ac5 | ||
|
|
af325caecc | ||
|
|
60a786a6a2 | ||
|
|
40c1bc8ae6 | ||
|
|
6992537750 | ||
|
|
a604093387 | ||
|
|
d9e61a3305 | ||
|
|
0c42848d52 | ||
|
|
294f51ae5d | ||
|
|
ecd82ac7a4 | ||
|
|
5395c04b18 | ||
|
|
d05b78a451 | ||
|
|
19f0bbc811 | ||
|
|
ac144e51e0 | ||
|
|
f7ef3705b5 | ||
|
|
8e9ea0a36b | ||
|
|
89a8bde574 | ||
|
|
2651a04880 | ||
|
|
197a61253f | ||
|
|
fb9da5ec8d | ||
|
|
a2727d5f47 | ||
|
|
0c40aa7244 | ||
|
|
234af1ac3d | ||
|
|
fb1323ba17 | ||
|
|
38bd33dce4 | ||
|
|
d32407b9f8 | ||
|
|
83c0bbe37b | ||
|
|
1fea4e5876 | ||
|
|
1fe19c4853 | ||
|
|
d9653ea43c | ||
|
|
943ddd3da1 | ||
|
|
08573899d3 | ||
|
|
e873f1b88e | ||
|
|
6dc4161a36 | ||
|
|
507c423e09 | ||
|
|
631d97e21a | ||
|
|
23e6331909 | ||
|
|
9bbe7f7fb0 | ||
|
|
5df7e193e7 | ||
|
|
e87ac96c6c | ||
|
|
795724cbe1 | ||
|
|
3cfa1c0822 | ||
|
|
4faa2abe96 | ||
|
|
890ff55690 | ||
|
|
73a67d0fc3 | ||
|
|
8fad69c344 | ||
|
|
76b6fb5898 | ||
|
|
641f5999f0 | ||
|
|
47ef37274b | ||
|
|
264824e7de | ||
|
|
fe824943e4 | ||
|
|
eb571b3ab3 | ||
|
|
5e464bfcf8 | ||
|
|
5df3672adf | ||
|
|
d5e8938c70 | ||
|
|
1f37656169 | ||
|
|
3a05abe490 | ||
|
|
c3ce580b8c | ||
|
|
47c46cc9c5 | ||
|
|
7a2ddad70c | ||
|
|
2f90ac64ec | ||
|
|
e23ad7b002 | ||
|
|
b98edc3f65 | ||
|
|
22f92bed24 | ||
|
|
cbea2dd55a | ||
|
|
26846fd102 | ||
|
|
004f9cb062 | ||
|
|
2903c7e0ca | ||
|
|
e00941b2c5 | ||
|
|
ffaa707ea9 | ||
|
|
7337d54511 | ||
|
|
dd395aff03 | ||
|
|
4a41638472 | ||
|
|
50fbda288a | ||
|
|
7a33aba329 | ||
|
|
ec7a58c592 | ||
|
|
9ac11f9a7c | ||
|
|
4bcb368d17 | ||
|
|
f42fd1de43 | ||
|
|
63a088631d | ||
|
|
4fa585046f | ||
|
|
f90983b541 | ||
|
|
5095ac4881 | ||
|
|
c01450d1a1 | ||
|
|
3718d20361 | ||
|
|
1d66757b28 | ||
|
|
9e67ad032c | ||
|
|
06bd15079d | ||
|
|
7e59b2d43a | ||
|
|
4430204227 | ||
|
|
652e0738af | ||
|
|
e6bc831305 | ||
|
|
513a02a4d4 | ||
|
|
f355dac322 | ||
|
|
85f632bd20 | ||
|
|
4f4829ebb4 | ||
|
|
cb0a5ded49 | ||
|
|
bf1df97886 | ||
|
|
b320c6ae77 | ||
|
|
9d2eee3b01 | ||
|
|
9b096524cc | ||
|
|
35a0b0ce4b | ||
|
|
5d75b2bd6d | ||
|
|
83cc3fd28a | ||
|
|
2d69705469 | ||
|
|
2ff6ecdbec | ||
|
|
25c9bfe4d4 | ||
|
|
91b2eff7b4 | ||
|
|
ea3969e1e3 | ||
|
|
cd5d047891 | ||
|
|
34f27f7995 | ||
|
|
752b1fe726 | ||
|
|
281e591984 | ||
|
|
b686aa6d0b | ||
|
|
035e6cea41 | ||
|
|
5aa34caca6 | ||
|
|
4fdd3f177a | ||
|
|
0826aa4bfe | ||
|
|
5869fe6d97 | ||
|
|
e877cef3a9 | ||
|
|
f7fdcfcd4e | ||
|
|
c6ad328e99 | ||
|
|
d8dfafedfa | ||
|
|
65cc0bec1c | ||
|
|
c34215f9e3 | ||
|
|
354b732c2c | ||
|
|
b910982994 | ||
|
|
f2c1002d58 | ||
|
|
50ce4d37aa | ||
|
|
46662d2b72 | ||
|
|
7579f3c3e1 | ||
|
|
3842913fe1 | ||
|
|
aaadcb9b45 | ||
|
|
29fc82b771 | ||
|
|
48963167fe | ||
|
|
4095365518 | ||
|
|
acdc2c496e | ||
|
|
26b078b69f | ||
|
|
9c792fc9a7 | ||
|
|
c7944e91e7 | ||
|
|
9e389f27b0 | ||
|
|
eef34f1dcf | ||
|
|
c1ea161060 | ||
|
|
b4aca7ae90 | ||
|
|
c0b4e73629 | ||
|
|
024637432c | ||
|
|
7ced595cca | ||
|
|
4a7782a713 | ||
|
|
d7dda83314 | ||
|
|
6ee474a8ff | ||
|
|
2e9680191b | ||
|
|
d7b7d127b8 | ||
|
|
2096b7641f | ||
|
|
2b83d17bd2 | ||
|
|
d7e880c42b | ||
|
|
e17c0610fb | ||
|
|
98e9ab461a | ||
|
|
a833b2f5cc | ||
|
|
9076175b0c | ||
|
|
a9843b637a | ||
|
|
b9ffe18775 | ||
|
|
6728121f9f | ||
|
|
98850bfc1d | ||
|
|
a5f821850b | ||
|
|
d97764586f | ||
|
|
3cd80b4dfe | ||
|
|
97548212b5 | ||
|
|
7986177a16 | ||
|
|
82733a81c8 | ||
|
|
20cb2ca7d4 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -12,3 +12,7 @@
|
||||
#Patch files
|
||||
*.patch
|
||||
#Personal
|
||||
/saveddata
|
||||
|
||||
#Pyfa file
|
||||
pyfaFits.html
|
||||
|
||||
17
config.py
17
config.py
@@ -13,9 +13,9 @@ debug = False
|
||||
saveInRoot = False
|
||||
|
||||
# Version data
|
||||
version = "1.1.18"
|
||||
tag = "Stable"
|
||||
expansionName = "Rubicon"
|
||||
version = "1.3.1"
|
||||
tag = "git"
|
||||
expansionName = "Crius"
|
||||
expansionVersion = "1.0"
|
||||
evemonMinVersion = "4081"
|
||||
|
||||
@@ -34,9 +34,10 @@ def defPaths():
|
||||
global saveInRoot
|
||||
# The main pyfa directory which contains run.py
|
||||
# Python 2.X uses ANSI by default, so we need to convert the character encoding
|
||||
pyfaPath = getattr(configforced, "pyfaPath", None)
|
||||
pyfaPath = getattr(configforced, "pyfaPath", pyfaPath)
|
||||
if pyfaPath is None:
|
||||
pyfaPath = unicode(os.path.dirname(os.path.abspath(sys.modules['__main__'].__file__)), sys.getfilesystemencoding())
|
||||
pyfaPath = unicode(os.path.dirname(os.path.realpath(os.path.abspath(
|
||||
sys.modules['__main__'].__file__))), sys.getfilesystemencoding())
|
||||
|
||||
# Where we store the saved fits etc, default is the current users home directory
|
||||
if saveInRoot is True:
|
||||
@@ -46,7 +47,8 @@ def defPaths():
|
||||
else:
|
||||
savePath = getattr(configforced, "savePath", None)
|
||||
if savePath is None:
|
||||
savePath = unicode(os.path.expanduser(os.path.join("~", ".pyfa")), sys.getfilesystemencoding())
|
||||
savePath = unicode(os.path.expanduser(os.path.join("~", ".pyfa")),
|
||||
sys.getfilesystemencoding())
|
||||
|
||||
# Redirect stderr to file if we're requested to do so
|
||||
stderrToFile = getattr(configforced, "stderrToFile", None)
|
||||
@@ -62,7 +64,8 @@ def defPaths():
|
||||
os.mkdir(savePath)
|
||||
sys.stdout = open(os.path.join(savePath, "output_log.txt"), "w")
|
||||
|
||||
# Static EVE Data from the staticdata repository, should be in the staticdata directory in our pyfa directory
|
||||
# Static EVE Data from the staticdata repository, should be in the staticdata
|
||||
# directory in our pyfa directory
|
||||
staticPath = os.path.join(pyfaPath, "staticdata")
|
||||
|
||||
# The database where we store all the fits etc
|
||||
|
||||
0
eos/__init__.py
Executable file → Normal file
0
eos/__init__.py
Executable file → Normal file
0
eos/capSim.py
Executable file → Normal file
0
eos/capSim.py
Executable file → Normal file
0
eos/config.py
Executable file → Normal file
0
eos/config.py
Executable file → Normal file
2
eos/db/__init__.py
Executable file → Normal file
2
eos/db/__init__.py
Executable file → Normal file
@@ -66,7 +66,7 @@ from eos.db.saveddata.queries import getUser, getCharacter, getFit, getFitsWithS
|
||||
getCharacterList, getPrice, getDamagePatternList, getDamagePattern, \
|
||||
getFitList, getFleetList, getFleet, save, remove, commit, add, \
|
||||
getCharactersForUser, getMiscData, getSquadsIDsWithFitID, getWing, \
|
||||
getSquad
|
||||
getSquad, getBoosterFits, getProjectedFits
|
||||
|
||||
#If using in memory saveddata, you'll want to reflect it so the data structure is good.
|
||||
if config.saveddata_connectionstring == "sqlite:///:memory:":
|
||||
|
||||
0
eos/db/gamedata/__init__.py
Executable file → Normal file
0
eos/db/gamedata/__init__.py
Executable file → Normal file
0
eos/db/gamedata/attribute.py
Executable file → Normal file
0
eos/db/gamedata/attribute.py
Executable file → Normal file
0
eos/db/gamedata/category.py
Executable file → Normal file
0
eos/db/gamedata/category.py
Executable file → Normal file
0
eos/db/gamedata/effect.py
Executable file → Normal file
0
eos/db/gamedata/effect.py
Executable file → Normal file
0
eos/db/gamedata/group.py
Executable file → Normal file
0
eos/db/gamedata/group.py
Executable file → Normal file
0
eos/db/gamedata/icon.py
Executable file → Normal file
0
eos/db/gamedata/icon.py
Executable file → Normal file
12
eos/db/gamedata/item.py
Executable file → Normal file
12
eos/db/gamedata/item.py
Executable file → Normal file
@@ -23,7 +23,7 @@ from sqlalchemy.ext.associationproxy import association_proxy
|
||||
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
|
||||
from eos.db import gamedata_meta
|
||||
from eos.types import Icon, Attribute, Item, Effect, MetaType, Group
|
||||
from eos.types import Icon, Attribute, Item, Effect, MetaType, Group, Traits
|
||||
|
||||
items_table = Table("invtypes", gamedata_meta,
|
||||
Column("typeID", Integer, primary_key = True),
|
||||
@@ -38,9 +38,8 @@ items_table = Table("invtypes", gamedata_meta,
|
||||
Column("iconID", Integer, ForeignKey("icons.iconID")),
|
||||
Column("groupID", Integer, ForeignKey("invgroups.groupID"), index=True))
|
||||
|
||||
|
||||
|
||||
from .metaGroup import metatypes_table
|
||||
from .traits import traits_table
|
||||
|
||||
mapper(Item, items_table,
|
||||
properties = {"group" : relation(Group, backref = "items"),
|
||||
@@ -52,6 +51,11 @@ mapper(Item, items_table,
|
||||
uselist = False),
|
||||
"ID" : synonym("typeID"),
|
||||
"name" : synonym("typeName"),
|
||||
"description" : deferred(items_table.c.description)})
|
||||
"description" : deferred(items_table.c.description),
|
||||
"traits" : relation(Traits,
|
||||
primaryjoin = traits_table.c.typeID == items_table.c.typeID,
|
||||
order_by = traits_table.c.typeID,
|
||||
uselist = True)
|
||||
})
|
||||
|
||||
Item.category = association_proxy("group", "category")
|
||||
|
||||
0
eos/db/gamedata/marketGroup.py
Executable file → Normal file
0
eos/db/gamedata/marketGroup.py
Executable file → Normal file
0
eos/db/gamedata/metaData.py
Executable file → Normal file
0
eos/db/gamedata/metaData.py
Executable file → Normal file
0
eos/db/gamedata/metaGroup.py
Executable file → Normal file
0
eos/db/gamedata/metaGroup.py
Executable file → Normal file
9
eos/db/gamedata/queries.py
Executable file → Normal file
9
eos/db/gamedata/queries.py
Executable file → Normal file
@@ -184,8 +184,6 @@ def getItemsByCategory(filter, where=None, eager=None):
|
||||
def searchItems(nameLike, where=None, join=None, eager=None):
|
||||
if not isinstance(nameLike, basestring):
|
||||
raise TypeError("Need string as argument")
|
||||
# Prepare our string for request
|
||||
nameLike = u"%{0}%".format(sqlizeString(nameLike))
|
||||
|
||||
if join is None:
|
||||
join = tuple()
|
||||
@@ -193,8 +191,11 @@ def searchItems(nameLike, where=None, join=None, eager=None):
|
||||
if not hasattr(join, "__iter__"):
|
||||
join = (join,)
|
||||
|
||||
filter = processWhere(Item.name.like(nameLike, escape="\\"), where)
|
||||
items = gamedata_session.query(Item).options(*processEager(eager)).join(*join).filter(filter).all()
|
||||
items = gamedata_session.query(Item).options(*processEager(eager)).join(*join)
|
||||
for token in nameLike.split(' '):
|
||||
token_safe = u"%{0}%".format(sqlizeString(token))
|
||||
items = items.filter(processWhere(Item.name.like(token_safe, escape="\\"), where))
|
||||
items = items.limit(100).all()
|
||||
return items
|
||||
|
||||
@cachedQuery(2, "where", "itemids")
|
||||
|
||||
22
eos/db/gamedata/traits.py
Normal file
22
eos/db/gamedata/traits.py
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
from sqlalchemy import Column, Table, Integer, String, ForeignKey, and_, select
|
||||
from sqlalchemy.orm import mapper, column_property
|
||||
from eos.types import Item, Traits
|
||||
from eos.db import gamedata_meta
|
||||
|
||||
traits_table = Table("invtraits", gamedata_meta,
|
||||
Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True),
|
||||
Column("skillID", Integer, ForeignKey("invtypes.typeID"), primary_key=True),
|
||||
Column("bonusText", String, primary_key=True))
|
||||
|
||||
|
||||
from .item import items_table
|
||||
|
||||
mapper(Traits, traits_table,
|
||||
properties = {"skillName" : column_property(
|
||||
select([items_table.c.typeName],
|
||||
and_(
|
||||
items_table.c.typeID == traits_table.c.skillID,
|
||||
traits_table.c.skillID != -1
|
||||
)))
|
||||
});
|
||||
0
eos/db/gamedata/unit.py
Executable file → Normal file
0
eos/db/gamedata/unit.py
Executable file → Normal file
20
eos/db/migration.py
Executable file → Normal file
20
eos/db/migration.py
Executable file → Normal file
@@ -3,7 +3,7 @@ import sqlalchemy
|
||||
def update(saveddata_engine):
|
||||
checkPriceFailures(saveddata_engine)
|
||||
checkApiDefaultChar(saveddata_engine)
|
||||
|
||||
checkFitBooster(saveddata_engine)
|
||||
|
||||
def checkPriceFailures(saveddata_engine):
|
||||
# Check if we have 'failed' column
|
||||
@@ -39,3 +39,21 @@ def checkApiDefaultChar(saveddata_engine):
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
saveddata_engine.execute("ALTER TABLE characters ADD COLUMN defaultChar INTEGER;")
|
||||
saveddata_engine.execute("ALTER TABLE characters ADD COLUMN chars VARCHAR;")
|
||||
|
||||
def checkFitBooster(saveddata_engine):
|
||||
try:
|
||||
saveddata_engine.execute("SELECT * FROM fits LIMIT 1")
|
||||
# If table doesn't exist, it means we're doing everything from scratch
|
||||
# and sqlalchemy will process everything as needed
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
pass
|
||||
# If not, we're running on top of existing DB
|
||||
else:
|
||||
# Check that we have columns
|
||||
try:
|
||||
saveddata_engine.execute("SELECT booster FROM fits LIMIT 1")
|
||||
# If we don't, create them
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
saveddata_engine.execute("ALTER TABLE fits ADD COLUMN booster BOOLEAN;")
|
||||
# Set NULL data to 0 (needed in case of downgrade, see GH issue #62
|
||||
saveddata_engine.execute("UPDATE fits SET booster = 0 WHERE booster IS NULL;")
|
||||
|
||||
0
eos/db/saveddata/__init__.py
Executable file → Normal file
0
eos/db/saveddata/__init__.py
Executable file → Normal file
0
eos/db/saveddata/booster.py
Executable file → Normal file
0
eos/db/saveddata/booster.py
Executable file → Normal file
32
eos/db/saveddata/cargo.py
Normal file
32
eos/db/saveddata/cargo.py
Normal file
@@ -0,0 +1,32 @@
|
||||
#===============================================================================
|
||||
# Copyright (C) 2010 Diego Duclos
|
||||
#
|
||||
# This file is part of eos.
|
||||
#
|
||||
# eos is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# eos is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
#===============================================================================
|
||||
|
||||
from sqlalchemy import Table, Column, Integer, ForeignKey, Boolean
|
||||
from sqlalchemy.orm import mapper
|
||||
|
||||
from eos.db import saveddata_meta
|
||||
from eos.types import Cargo
|
||||
|
||||
cargo_table = Table("cargo", saveddata_meta,
|
||||
Column("ID", Integer, primary_key=True),
|
||||
Column("fitID", Integer, ForeignKey("fits.ID"), nullable = False, index = True),
|
||||
Column("itemID", Integer, nullable = False),
|
||||
Column("amount", Integer, nullable = False))
|
||||
|
||||
mapper(Cargo, cargo_table)
|
||||
0
eos/db/saveddata/character.py
Executable file → Normal file
0
eos/db/saveddata/character.py
Executable file → Normal file
0
eos/db/saveddata/damagePattern.py
Executable file → Normal file
0
eos/db/saveddata/damagePattern.py
Executable file → Normal file
0
eos/db/saveddata/drone.py
Executable file → Normal file
0
eos/db/saveddata/drone.py
Executable file → Normal file
12
eos/db/saveddata/fit.py
Executable file → Normal file
12
eos/db/saveddata/fit.py
Executable file → Normal file
@@ -17,18 +17,19 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
#===============================================================================
|
||||
|
||||
from sqlalchemy import Table, Column, Integer, ForeignKey, String
|
||||
from sqlalchemy import Table, Column, Integer, ForeignKey, String, Boolean
|
||||
from sqlalchemy.orm import relation, mapper
|
||||
from sqlalchemy.sql import and_
|
||||
|
||||
from eos.db import saveddata_meta
|
||||
from eos.db.saveddata.module import modules_table
|
||||
from eos.db.saveddata.drone import drones_table
|
||||
from eos.db.saveddata.cargo import cargo_table
|
||||
from eos.db.saveddata.implant import fitImplants_table
|
||||
from eos.types import Fit, Module, User, Booster, Drone, Implant, Character, DamagePattern
|
||||
from eos.types import Fit, Module, User, Booster, Drone, Cargo, Implant, Character, DamagePattern
|
||||
from eos.effectHandlerHelpers import HandledModuleList, HandledDroneList, \
|
||||
HandledImplantBoosterList, HandledProjectedModList, HandledProjectedDroneList, \
|
||||
HandledProjectedFitList
|
||||
HandledProjectedFitList, HandledCargoList
|
||||
fits_table = Table("fits", saveddata_meta,
|
||||
Column("ID", Integer, primary_key = True),
|
||||
Column("ownerID", ForeignKey("users.ID"), nullable = True, index = True),
|
||||
@@ -36,7 +37,8 @@ fits_table = Table("fits", saveddata_meta,
|
||||
Column("name", String, nullable = False),
|
||||
Column("timestamp", Integer, nullable = False),
|
||||
Column("characterID", ForeignKey("characters.ID"), nullable = True),
|
||||
Column("damagePatternID", ForeignKey("damagePatterns.ID"), nullable=True))
|
||||
Column("damagePatternID", ForeignKey("damagePatterns.ID"), nullable=True),
|
||||
Column("booster", Boolean, nullable = False, index = True, default = 0))
|
||||
|
||||
projectedFits_table = Table("projectedFits", saveddata_meta,
|
||||
Column("sourceID", ForeignKey("fits.ID"), primary_key = True),
|
||||
@@ -52,6 +54,8 @@ mapper(Fit, fits_table,
|
||||
"_Fit__boosters" : relation(Booster, collection_class = HandledImplantBoosterList, cascade='all, delete, delete-orphan', single_parent=True),
|
||||
"_Fit__drones" : relation(Drone, collection_class = HandledDroneList, cascade='all, delete, delete-orphan', single_parent=True,
|
||||
primaryjoin = and_(drones_table.c.fitID == fits_table.c.ID, drones_table.c.projected == False)),
|
||||
"_Fit__cargo" : relation(Cargo, collection_class = HandledCargoList, cascade='all, delete, delete-orphan', single_parent=True,
|
||||
primaryjoin = and_(cargo_table.c.fitID == fits_table.c.ID)),
|
||||
"_Fit__projectedDrones" : relation(Drone, collection_class = HandledProjectedDroneList, cascade='all, delete, delete-orphan', single_parent=True,
|
||||
primaryjoin = and_(drones_table.c.fitID == fits_table.c.ID, drones_table.c.projected == True)),
|
||||
"_Fit__implants" : relation(Implant, collection_class = HandledImplantBoosterList, cascade='all, delete, delete-orphan', single_parent=True,
|
||||
|
||||
0
eos/db/saveddata/fleet.py
Executable file → Normal file
0
eos/db/saveddata/fleet.py
Executable file → Normal file
0
eos/db/saveddata/implant.py
Executable file → Normal file
0
eos/db/saveddata/implant.py
Executable file → Normal file
0
eos/db/saveddata/miscData.py
Executable file → Normal file
0
eos/db/saveddata/miscData.py
Executable file → Normal file
0
eos/db/saveddata/module.py
Executable file → Normal file
0
eos/db/saveddata/module.py
Executable file → Normal file
0
eos/db/saveddata/price.py
Executable file → Normal file
0
eos/db/saveddata/price.py
Executable file → Normal file
29
eos/db/saveddata/queries.py
Executable file → Normal file
29
eos/db/saveddata/queries.py
Executable file → Normal file
@@ -21,6 +21,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
|
||||
from eos.db.saveddata.fleet import squadmembers_table
|
||||
from eos.db.saveddata.fit import projectedFits_table
|
||||
from sqlalchemy.sql import and_
|
||||
import eos.config
|
||||
|
||||
@@ -248,6 +249,24 @@ def getFitsWithShip(shipID, ownerID=None, where=None, eager=None):
|
||||
raise TypeError("ShipID must be integer")
|
||||
return fits
|
||||
|
||||
def getBoosterFits(ownerID=None, where=None, eager=None):
|
||||
"""
|
||||
Get all the fits that are flagged as a boosting ship
|
||||
If no user is passed, do this for all users.
|
||||
"""
|
||||
|
||||
if ownerID is not None and not isinstance(ownerID, int):
|
||||
raise TypeError("OwnerID must be integer")
|
||||
filter = Fit.booster == 1
|
||||
if ownerID is not None:
|
||||
filter = and_(filter, Fit.ownerID == ownerID)
|
||||
|
||||
filter = processWhere(filter, where)
|
||||
eager = processEager(eager)
|
||||
with sd_lock:
|
||||
fits = saveddata_session.query(Fit).options(*eager).filter(filter).all()
|
||||
return fits
|
||||
|
||||
def countFitsWithShip(shipID, ownerID=None, where=None, eager=None):
|
||||
"""
|
||||
Get all the fits using a certain ship.
|
||||
@@ -342,7 +361,15 @@ def getSquadsIDsWithFitID(fitID):
|
||||
return squads
|
||||
else:
|
||||
raise TypeError("Need integer as argument")
|
||||
|
||||
|
||||
def getProjectedFits(fitID):
|
||||
if isinstance(fitID, int):
|
||||
with sd_lock:
|
||||
filter = and_(projectedFits_table.c.sourceID == fitID, Fit.ID == projectedFits_table.c.victimID)
|
||||
fits = saveddata_session.query(Fit).filter(filter).all()
|
||||
return fits
|
||||
else:
|
||||
raise TypeError("Need integer as argument")
|
||||
|
||||
def add(stuff):
|
||||
with sd_lock:
|
||||
|
||||
0
eos/db/saveddata/skill.py
Executable file → Normal file
0
eos/db/saveddata/skill.py
Executable file → Normal file
0
eos/db/saveddata/user.py
Executable file → Normal file
0
eos/db/saveddata/user.py
Executable file → Normal file
0
eos/db/util.py
Executable file → Normal file
0
eos/db/util.py
Executable file → Normal file
40
eos/effectHandlerHelpers.py
Executable file → Normal file
40
eos/effectHandlerHelpers.py
Executable file → Normal file
@@ -187,6 +187,46 @@ class HandledDroneList(HandledList):
|
||||
|
||||
return d
|
||||
|
||||
class HandledCargoList(HandledList):
|
||||
# shameless copy of HandledDroneList
|
||||
# I have no idea what this does, but I needed it
|
||||
# @todo: investigate this
|
||||
def find(self, item):
|
||||
for d in self:
|
||||
if d.item == item:
|
||||
yield d
|
||||
|
||||
def findFirst(self, item):
|
||||
for d in self.find(item):
|
||||
return d
|
||||
|
||||
def append(self, cargo):
|
||||
list.append(self, cargo)
|
||||
|
||||
def remove(self, cargo):
|
||||
HandledList.remove(self, cargo)
|
||||
|
||||
def appendItem(self, item, qty = 1):
|
||||
if qty < 1: ValueError("Amount of cargo to add should be >= 1")
|
||||
d = self.findFirst(item)
|
||||
|
||||
if d is None:
|
||||
d = eos.types.Cargo(item)
|
||||
self.append(d)
|
||||
|
||||
d.qty += qty
|
||||
return d
|
||||
|
||||
def removeItem(self, item, qty):
|
||||
if qty < 1: ValueError("Amount of cargo to remove should be >= 1")
|
||||
d = self.findFirst(item)
|
||||
if d is None: return
|
||||
d.qty -= qty
|
||||
if d.qty <= 0:
|
||||
self.remove(d)
|
||||
return None
|
||||
|
||||
return d
|
||||
|
||||
class HandledImplantBoosterList(HandledList):
|
||||
def __init__(self):
|
||||
|
||||
0
eos/effects/__init__.py
Executable file → Normal file
0
eos/effects/__init__.py
Executable file → Normal file
0
eos/effects/accerationcontrolcapneedbonuspostpercentcapacitorneedlocationshipgroupafterburner.py
Executable file → Normal file
0
eos/effects/accerationcontrolcapneedbonuspostpercentcapacitorneedlocationshipgroupafterburner.py
Executable file → Normal file
0
eos/effects/accerationcontrolskillabmwdspeedboost.py
Executable file → Normal file
0
eos/effects/accerationcontrolskillabmwdspeedboost.py
Executable file → Normal file
0
eos/effects/accerationcontrolspeedfbonuspostpercentspeedfactorlocationshipgroupafterburner.py
Executable file → Normal file
0
eos/effects/accerationcontrolspeedfbonuspostpercentspeedfactorlocationshipgroupafterburner.py
Executable file → Normal file
1
eos/effects/accessdifficultybonusmodifierrequiringarchaelogy.py
Executable file → Normal file
1
eos/effects/accessdifficultybonusmodifierrequiringarchaelogy.py
Executable file → Normal file
@@ -1,6 +1,7 @@
|
||||
# Used by:
|
||||
# Modules named like: Emission Scope Sharpener (8 of 8)
|
||||
# Implant: Poteque 'Prospector' Archaeology AC-905
|
||||
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
fit.modules.filteredItemIncrease(lambda module: module.item.requiresSkill("Archaeology"),
|
||||
|
||||
1
eos/effects/accessdifficultybonusmodifierrequiringhacking.py
Executable file → Normal file
1
eos/effects/accessdifficultybonusmodifierrequiringhacking.py
Executable file → Normal file
@@ -1,5 +1,6 @@
|
||||
# Used by:
|
||||
# Modules named like: Memetic Algorithm Bank (8 of 8)
|
||||
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
|
||||
# Implant: Poteque 'Prospector' Hacking HC-905
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
|
||||
0
eos/effects/adaptivearmorhardener.py
Executable file → Normal file
0
eos/effects/adaptivearmorhardener.py
Executable file → Normal file
0
eos/effects/addtosignatureradius2.py
Executable file → Normal file
0
eos/effects/addtosignatureradius2.py
Executable file → Normal file
0
eos/effects/advanceddroneinterfacingmaxgroupdcuskilllevel.py
Executable file → Normal file
0
eos/effects/advanceddroneinterfacingmaxgroupdcuskilllevel.py
Executable file → Normal file
0
eos/effects/afterburnerdurationbonuspostpercentdurationlocationshipmodulesrequiringafterburner.py
Executable file → Normal file
0
eos/effects/afterburnerdurationbonuspostpercentdurationlocationshipmodulesrequiringafterburner.py
Executable file → Normal file
0
eos/effects/agilitymultipliereffect.py
Executable file → Normal file
0
eos/effects/agilitymultipliereffect.py
Executable file → Normal file
0
eos/effects/agilitymultipliereffectpassive.py
Executable file → Normal file
0
eos/effects/agilitymultipliereffectpassive.py
Executable file → Normal file
0
eos/effects/ammofallofmultiplier.py
Executable file → Normal file
0
eos/effects/ammofallofmultiplier.py
Executable file → Normal file
0
eos/effects/ammoinfluencecapneed.py
Executable file → Normal file
0
eos/effects/ammoinfluencecapneed.py
Executable file → Normal file
0
eos/effects/ammoinfluencerange.py
Executable file → Normal file
0
eos/effects/ammoinfluencerange.py
Executable file → Normal file
0
eos/effects/ammospeedmultiplier.py
Executable file → Normal file
0
eos/effects/ammospeedmultiplier.py
Executable file → Normal file
0
eos/effects/ammotrackingmultiplier.py
Executable file → Normal file
0
eos/effects/ammotrackingmultiplier.py
Executable file → Normal file
2
eos/effects/angelsetbonus.py
Executable file → Normal file
2
eos/effects/angelsetbonus.py
Executable file → Normal file
@@ -1,5 +1,5 @@
|
||||
# Used by:
|
||||
# Implants named like: Halo (12 of 12)
|
||||
# Implants named like: grade Halo (18 of 18)
|
||||
runTime = "early"
|
||||
type = "passive"
|
||||
def handler(fit, implant, context):
|
||||
|
||||
0
eos/effects/antiwarpscramblingpassive.py
Executable file → Normal file
0
eos/effects/antiwarpscramblingpassive.py
Executable file → Normal file
@@ -1,6 +1,7 @@
|
||||
# Used by:
|
||||
# Modules named like: Emission Scope Sharpener (8 of 8)
|
||||
# Implant: Poteque 'Prospector' Archaeology AC-905
|
||||
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
|
||||
# Skill: Archaeology
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
|
||||
0
eos/effects/armorallrepairsystemsamountbonuspassive.py
Executable file → Normal file
0
eos/effects/armorallrepairsystemsamountbonuspassive.py
Executable file → Normal file
0
eos/effects/armoredwarfaremindlink.py
Executable file → Normal file
0
eos/effects/armoredwarfaremindlink.py
Executable file → Normal file
0
eos/effects/armorhpbonusadd.py
Executable file → Normal file
0
eos/effects/armorhpbonusadd.py
Executable file → Normal file
0
eos/effects/armorhpbonusaddpassive.py
Executable file → Normal file
0
eos/effects/armorhpbonusaddpassive.py
Executable file → Normal file
0
eos/effects/armorhpmultiply.py
Executable file → Normal file
0
eos/effects/armorhpmultiply.py
Executable file → Normal file
0
eos/effects/armorreinforcermassadd.py
Executable file → Normal file
0
eos/effects/armorreinforcermassadd.py
Executable file → Normal file
0
eos/effects/armorrepair.py
Executable file → Normal file
0
eos/effects/armorrepair.py
Executable file → Normal file
0
eos/effects/armorrepairprojectormaxrangebonus.py
Executable file → Normal file
0
eos/effects/armorrepairprojectormaxrangebonus.py
Executable file → Normal file
0
eos/effects/armortankinggang.py
Executable file → Normal file
0
eos/effects/armortankinggang.py
Executable file → Normal file
0
eos/effects/armortankinggang2.py
Executable file → Normal file
0
eos/effects/armortankinggang2.py
Executable file → Normal file
0
eos/effects/armorupgradesmasspenaltyreductionbonus.py
Executable file → Normal file
0
eos/effects/armorupgradesmasspenaltyreductionbonus.py
Executable file → Normal file
0
eos/effects/astrogeologyminingamountbonuspostpercentminingamountlocationshipmodulesrequiringmining.py
Executable file → Normal file
0
eos/effects/astrogeologyminingamountbonuspostpercentminingamountlocationshipmodulesrequiringmining.py
Executable file → Normal file
0
eos/effects/basemaxscandeviationmodifierrequiringastrometrics.py
Executable file → Normal file
0
eos/effects/basemaxscandeviationmodifierrequiringastrometrics.py
Executable file → Normal file
2
eos/effects/basesensorstrengthmodifierrequiringastrometrics.py
Executable file → Normal file
2
eos/effects/basesensorstrengthmodifierrequiringastrometrics.py
Executable file → Normal file
@@ -1,7 +1,7 @@
|
||||
# Used by:
|
||||
# Modules from group: Scan Probe Launcher (4 of 7)
|
||||
# Implants named like: Low grade Virtue (5 of 6)
|
||||
# Implants named like: Poteque 'Prospector' Astrometric Rangefinding AR (3 of 3)
|
||||
# Implants named like: grade Virtue (10 of 12)
|
||||
# Modules named like: Gravity Capacitor Upgrade (8 of 8)
|
||||
# Skill: Astrometric Rangefinding
|
||||
# Skill: Astrometrics
|
||||
|
||||
0
eos/effects/bclargeenergyturretcapacitorneedbonus.py
Executable file → Normal file
0
eos/effects/bclargeenergyturretcapacitorneedbonus.py
Executable file → Normal file
0
eos/effects/bclargeenergyturretcpuneedbonus.py
Executable file → Normal file
0
eos/effects/bclargeenergyturretcpuneedbonus.py
Executable file → Normal file
0
eos/effects/bclargeenergyturretpowerneedbonus.py
Executable file → Normal file
0
eos/effects/bclargeenergyturretpowerneedbonus.py
Executable file → Normal file
0
eos/effects/bclargehybridturretcapacitorneedbonus.py
Executable file → Normal file
0
eos/effects/bclargehybridturretcapacitorneedbonus.py
Executable file → Normal file
0
eos/effects/bclargehybridturretcpuneedbonus.py
Executable file → Normal file
0
eos/effects/bclargehybridturretcpuneedbonus.py
Executable file → Normal file
0
eos/effects/bclargehybridturretpowerneedbonus.py
Executable file → Normal file
0
eos/effects/bclargehybridturretpowerneedbonus.py
Executable file → Normal file
0
eos/effects/bclargeprojectileturretcpuneedbonus.py
Executable file → Normal file
0
eos/effects/bclargeprojectileturretcpuneedbonus.py
Executable file → Normal file
0
eos/effects/bclargeprojectileturretpowerneedbonus.py
Executable file → Normal file
0
eos/effects/bclargeprojectileturretpowerneedbonus.py
Executable file → Normal file
0
eos/effects/biologytimebonusfixed.py
Executable file → Normal file
0
eos/effects/biologytimebonusfixed.py
Executable file → Normal file
0
eos/effects/blockaderunnercloakcpupercentbonus.py
Executable file → Normal file
0
eos/effects/blockaderunnercloakcpupercentbonus.py
Executable file → Normal file
0
eos/effects/boosterarmorhppenalty.py
Executable file → Normal file
0
eos/effects/boosterarmorhppenalty.py
Executable file → Normal file
0
eos/effects/boosterarmorrepairamountpenalty.py
Executable file → Normal file
0
eos/effects/boosterarmorrepairamountpenalty.py
Executable file → Normal file
0
eos/effects/boostercapacitorcapacitypenalty.py
Executable file → Normal file
0
eos/effects/boostercapacitorcapacitypenalty.py
Executable file → Normal file
0
eos/effects/boostermaxvelocitypenalty.py
Executable file → Normal file
0
eos/effects/boostermaxvelocitypenalty.py
Executable file → Normal file
0
eos/effects/boostermissileexplosioncloudpenaltyfixed.py
Executable file → Normal file
0
eos/effects/boostermissileexplosioncloudpenaltyfixed.py
Executable file → Normal file
0
eos/effects/boostermissileexplosionvelocitypenalty.py
Executable file → Normal file
0
eos/effects/boostermissileexplosionvelocitypenalty.py
Executable file → Normal file
0
eos/effects/boostermissilevelocitypenalty.py
Executable file → Normal file
0
eos/effects/boostermissilevelocitypenalty.py
Executable file → Normal file
2
eos/effects/boostermodifyboosterarmorpenalties.py
Executable file → Normal file
2
eos/effects/boostermodifyboosterarmorpenalties.py
Executable file → Normal file
@@ -1,6 +1,6 @@
|
||||
# Used by:
|
||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
||||
# Implants named like: Low grade Edge (5 of 6)
|
||||
# Implants named like: grade Edge (10 of 12)
|
||||
# Skill: Neurotoxin Control
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
|
||||
2
eos/effects/boostermodifyboostermaxvelocityandcapacitorpenalty.py
Executable file → Normal file
2
eos/effects/boostermodifyboostermaxvelocityandcapacitorpenalty.py
Executable file → Normal file
@@ -1,6 +1,6 @@
|
||||
# Used by:
|
||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
||||
# Implants named like: Low grade Edge (5 of 6)
|
||||
# Implants named like: grade Edge (10 of 12)
|
||||
# Skill: Neurotoxin Control
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
|
||||
2
eos/effects/boostermodifyboostermissilepenalty.py
Executable file → Normal file
2
eos/effects/boostermodifyboostermissilepenalty.py
Executable file → Normal file
@@ -1,6 +1,6 @@
|
||||
# Used by:
|
||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
||||
# Implants named like: Low grade Edge (5 of 6)
|
||||
# Implants named like: grade Edge (10 of 12)
|
||||
# Skill: Neurotoxin Control
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
|
||||
2
eos/effects/boostermodifyboostershieldpenalty.py
Executable file → Normal file
2
eos/effects/boostermodifyboostershieldpenalty.py
Executable file → Normal file
@@ -1,6 +1,6 @@
|
||||
# Used by:
|
||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
||||
# Implants named like: Low grade Edge (5 of 6)
|
||||
# Implants named like: grade Edge (10 of 12)
|
||||
# Skill: Neurotoxin Control
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
|
||||
2
eos/effects/boostermodifyboosterturretpenalty.py
Executable file → Normal file
2
eos/effects/boostermodifyboosterturretpenalty.py
Executable file → Normal file
@@ -1,6 +1,6 @@
|
||||
# Used by:
|
||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
||||
# Implants named like: Low grade Edge (5 of 6)
|
||||
# Implants named like: grade Edge (10 of 12)
|
||||
# Skill: Neurotoxin Control
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
|
||||
0
eos/effects/boostershieldcapacitypenalty.py
Executable file → Normal file
0
eos/effects/boostershieldcapacitypenalty.py
Executable file → Normal file
0
eos/effects/boosterturretfalloffpenalty.py
Executable file → Normal file
0
eos/effects/boosterturretfalloffpenalty.py
Executable file → Normal file
0
eos/effects/boosterturretoptimalrangepenalty.py
Executable file → Normal file
0
eos/effects/boosterturretoptimalrangepenalty.py
Executable file → Normal file
0
eos/effects/boosterturrettrackingpenalty.py
Executable file → Normal file
0
eos/effects/boosterturrettrackingpenalty.py
Executable file → Normal file
2
eos/effects/caldarisetbonus3.py
Executable file → Normal file
2
eos/effects/caldarisetbonus3.py
Executable file → Normal file
@@ -1,5 +1,5 @@
|
||||
# Used by:
|
||||
# Implants named like: Talon (6 of 12)
|
||||
# Implants named like: High grade Talon (6 of 6)
|
||||
runTime = "early"
|
||||
type = "passive"
|
||||
def handler(fit, implant, context):
|
||||
|
||||
0
eos/effects/caldarisetlgbonus.py
Executable file → Normal file
0
eos/effects/caldarisetlgbonus.py
Executable file → Normal file
0
eos/effects/caldarishipecmburstoptimalrangecb3.py
Executable file → Normal file
0
eos/effects/caldarishipecmburstoptimalrangecb3.py
Executable file → Normal file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user