Skip to content

Commit

Permalink
Merge branch 'master' into test-3
Browse files Browse the repository at this point in the history
Conflicts:
	eos/gamedata.py
	eos/saveddata/booster.py
	eos/saveddata/character.py
	gui/builtinAdditionPanes/commandView.py
	gui/builtinContextMenus/commandFits.py
	gui/builtinMarketBrowser/itemView.py
	gui/builtinMarketBrowser/marketTree.py
	gui/builtinPreferenceViews/pyfaGeneralPreferences.py
	gui/builtinShipBrowser/categoryItem.py
	gui/builtinShipBrowser/fitItem.py
	gui/builtinShipBrowser/navigationPanel.py
	gui/builtinShipBrowser/raceSelector.py
	gui/builtinShipBrowser/shipItem.py
	gui/builtinStatsViews/priceViewFull.py
	gui/builtinViews/fittingView.py
	gui/characterEditor.py
	gui/characterSelection.py
	gui/chromeTabs.py
	gui/crestFittings.py
	gui/itemStats.py
	gui/mainFrame.py
	scripts/itemDiff.py
	service/price.py
  • Loading branch information
blitzmann committed Nov 23, 2017
2 parents 4a33365 + 455fea7 commit b30b3fc
Show file tree
Hide file tree
Showing 462 changed files with 12,863 additions and 2,422 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ pyfa is licensed under the GNU GPL v3.0, see LICENSE

## Resources
* Development repository: [https://github.com/pyfa-org/Pyfa](https://github.com/pyfa-org/Pyfa)
* [EVE forum thread](https://forums.eveonline.com/default.aspx?g=posts&t=466425)
* [EVE forum thread](https://forums.eveonline.com/t/27156)
* [EVE University guide using pyfa](http://wiki.eveuniversity.org/Guide_to_using_PYFA)
* [EVE Online website](http://www.eveonline.com/)

Expand Down
8 changes: 4 additions & 4 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@
saveInRoot = False

# Version data
version = "1.29.4"
tag = "Stable"
expansionName = "YC119.5"
expansionVersion = "1.0"
version = "1.33.3"
tag = "git"
expansionName = "Lifeblood"
expansionVersion = "1.7"
evemonMinVersion = "4081"

pyfaPath = None
Expand Down
2 changes: 1 addition & 1 deletion eos/db/gamedata/item.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
properties={
"group" : relation(Group, backref="items"),
"icon" : relation(Icon),
"_Item__attributes": relation(Attribute, collection_class=attribute_mapped_collection('name')),
"_Item__attributes": relation(Attribute, cascade='all, delete, delete-orphan', collection_class=attribute_mapped_collection('name')),
"effects": relation(Effect, secondary=typeeffects_table, collection_class=attribute_mapped_collection('name')),
"metaGroup" : relation(MetaType,
primaryjoin=metatypes_table.c.typeID == items_table.c.typeID,
Expand Down
2 changes: 1 addition & 1 deletion eos/db/gamedata/queries.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ def getVariations(itemids, groupIDs=None, where=None, eager=None):
vars = gamedata_session.query(Item).options(*processEager(eager)).join((groups_table, joinon)).filter(
filter).all()

return vars
return vars


@cachedQuery(1, "attr")
Expand Down
4,246 changes: 4,246 additions & 0 deletions eos/db/migrations/upgrade25.py

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions eos/db/migrations/upgrade26.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"""
Migration 26
- Deletes invalid command fit relationships caused by a bug (see #1244)
"""


def upgrade(saveddata_engine):
saveddata_engine.execute("DELETE FROM commandFits WHERE boosterID NOT IN (SELECT ID FROM fits) OR boostedID NOT IN (SELECT ID FROM fits)")
4 changes: 2 additions & 2 deletions eos/db/migrations/upgrade6.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@

def upgrade(saveddata_engine):
saveddata_engine.execute('DELETE FROM damagePatterns WHERE name LIKE ? OR ID LIKE ?', ("Uniform", "1"))
saveddata_engine.execute('INSERT INTO damagePatterns VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
(1, "Uniform", 25, 25, 25, 25, None, None, None))
saveddata_engine.execute('INSERT INTO damagePatterns (ID, name, emAmount, thermalAmount, kineticAmount, explosiveAmount, ownerID) VALUES (?, ?, ?, ?, ?, ?, ?)',
(1, "Uniform", 25, 25, 25, 25, None))
39 changes: 21 additions & 18 deletions eos/db/saveddata/booster.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,35 +18,38 @@
# ===============================================================================

from sqlalchemy import Table, Column, ForeignKey, Integer, Boolean, DateTime
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.orm import mapper, relation
import datetime

from eos.db import saveddata_meta
from eos.saveddata.booster import Booster
from eos.saveddata.boosterSideEffect import BoosterSideEffect

boosters_table = Table("boosters", saveddata_meta,
Column("ID", Integer, primary_key=True),
Column("itemID", Integer),
Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False),
Column("active", Boolean),
Column("created", DateTime, nullable=True, default=datetime.datetime.now),
Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now),
Column("ID", Integer, primary_key=True),
Column("itemID", Integer),
Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False),
Column("active", Boolean),
Column("created", DateTime, nullable=True, default=datetime.datetime.now),
Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now),
)

# Legacy booster side effect code, should disable but a mapper relies on it.
activeSideEffects_table = Table("boostersActiveSideEffects", saveddata_meta,
Column("boosterID", ForeignKey("boosters.ID"), primary_key=True),
Column("effectID", Integer, primary_key=True))

booster_side_effect_table = Table("boosterSideEffects", saveddata_meta,
Column("boosterID", Integer, ForeignKey("boosters.ID"), primary_key=True, index=True),
Column("effectID", Integer, nullable=False, primary_key=True),
Column("active", Boolean, default=False)
)

class ActiveSideEffectsDummy(object):
def __init__(self, effectID):
self.effectID = effectID


mapper(ActiveSideEffectsDummy, activeSideEffects_table)
mapper(Booster, boosters_table,
properties={"_Booster__activeSideEffectDummies": relation(ActiveSideEffectsDummy)})
properties={
"_Booster__sideEffects": relation(
BoosterSideEffect,
backref="booster",
cascade='all, delete, delete-orphan'),
}
)


Booster._Booster__activeSideEffectIDs = association_proxy("_Booster__activeSideEffectDummies", "effectID")
mapper(BoosterSideEffect, booster_side_effect_table)
6 changes: 4 additions & 2 deletions eos/db/saveddata/price.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@

prices_table = Table("prices", saveddata_meta,
Column("typeID", Integer, primary_key=True),
Column("price", Float),
Column("price", Float, default=0.0),
Column("time", Integer, nullable=False),
Column("failed", Integer))

mapper(Price, prices_table)
mapper(Price, prices_table, properties={
"_Price__price": prices_table.c.price,
})
9 changes: 9 additions & 0 deletions eos/effects/agilitybonus.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# agilityBonus
#
# Used by:
# Subsystems named like: Propulsion Interdiction Nullifier (4 of 4)
type = "passive"


def handler(fit, src, context):
fit.ship.increaseItemAttr("agility", src.getModifiedItemAttr("agilityBonusAdd"))
4 changes: 1 addition & 3 deletions eos/effects/ammoinfluencecapneed.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# ammoInfluenceCapNeed
#
# Used by:
# Items from category: Charge (466 of 913)
# Charges from group: Frequency Crystal (185 of 185)
# Charges from group: Hybrid Charge (209 of 209)
# Items from category: Charge (478 of 924)
type = "passive"


Expand Down
2 changes: 1 addition & 1 deletion eos/effects/ammoinfluencerange.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# ammoInfluenceRange
#
# Used by:
# Items from category: Charge (571 of 913)
# Items from category: Charge (572 of 924)
type = "passive"


Expand Down
1 change: 0 additions & 1 deletion eos/effects/ammospeedmultiplier.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
# Used by:
# Charges from group: Festival Charges (22 of 22)
# Charges from group: Interdiction Probe (2 of 2)
# Charges from group: Survey Probe (3 of 3)
type = "passive"


Expand Down
2 changes: 1 addition & 1 deletion eos/effects/ammotrackingmultiplier.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# Charges from group: Advanced Blaster Charge (8 of 8)
# Charges from group: Advanced Pulse Laser Crystal (8 of 8)
# Charges from group: Advanced Railgun Charge (8 of 8)
# Charges from group: Projectile Ammo (129 of 129)
# Charges from group: Projectile Ammo (128 of 128)
type = "passive"


Expand Down
4 changes: 2 additions & 2 deletions eos/effects/armorhpbonusaddpassive.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# armorHPBonusAddPassive
#
# Used by:
# Subsystems from group: Defensive Systems (16 of 16)
# Subsystems from group: Defensive Systems (9 of 12)
type = "passive"


def handler(fit, module, context):
fit.ship.increaseItemAttr("armorHP", module.getModifiedItemAttr("armorHPBonusAdd"))
fit.ship.increaseItemAttr("armorHP", module.getModifiedItemAttr("armorHPBonusAdd") or 0)
11 changes: 8 additions & 3 deletions eos/effects/boosterarmorhppenalty.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
# boosterArmorHpPenalty
#
# Used by:
# Implants from group: Booster (12 of 48)
# Implants from group: Booster (12 of 52)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Armor Capacity"

# Attribute that this effect targets
attr = "boosterArmorHPPenalty"


def handler(fit, booster, context):
fit.ship.boostItemAttr("armorHP", booster.getModifiedItemAttr("boosterArmorHPPenalty"))
fit.ship.boostItemAttr("armorHP", booster.getModifiedItemAttr(attr))
9 changes: 7 additions & 2 deletions eos/effects/boosterarmorrepairamountpenalty.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,14 @@
# Implants named like: Mindflood Booster (3 of 4)
# Implants named like: Sooth Sayer Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Armor Repair Amount"

# Attribute that this effect targets
attr = "boosterArmorRepairAmountPenalty"


def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Armor Repair Unit",
"armorDamageAmount", booster.getModifiedItemAttr("boosterArmorRepairAmountPenalty"))
"armorDamageAmount", booster.getModifiedItemAttr(attr))
9 changes: 7 additions & 2 deletions eos/effects/boostercapacitorcapacitypenalty.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@
# Implants named like: Blue Pill Booster (3 of 5)
# Implants named like: Exile Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Cap Capacity"

# Attribute that this effect targets
attr = "boosterCapacitorCapacityPenalty"


def handler(fit, booster, context):
fit.ship.boostItemAttr("capacitorCapacity", booster.getModifiedItemAttr("boosterCapacitorCapacityPenalty"))
fit.ship.boostItemAttr("capacitorCapacity", booster.getModifiedItemAttr(attr))
11 changes: 8 additions & 3 deletions eos/effects/boostermaxvelocitypenalty.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
# boosterMaxVelocityPenalty
#
# Used by:
# Implants from group: Booster (12 of 48)
# Implants from group: Booster (12 of 52)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Velocity"

# Attribute that this effect targets
attr = "boosterMaxVelocityPenalty"


def handler(fit, booster, context):
fit.ship.boostItemAttr("maxVelocity", booster.getModifiedItemAttr("boosterMaxVelocityPenalty"))
fit.ship.boostItemAttr("maxVelocity", booster.getModifiedItemAttr(attr))
9 changes: 7 additions & 2 deletions eos/effects/boostermissileexplosioncloudpenaltyfixed.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,14 @@
# Implants named like: Exile Booster (3 of 4)
# Implants named like: Mindflood Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Missile Explosion Radius"

# Attribute that this effect targets
attr = "boosterMissileAOECloudPenalty"


def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"aoeCloudSize", booster.getModifiedItemAttr("boosterMissileAOECloudPenalty"))
"aoeCloudSize", booster.getModifiedItemAttr(attr))
9 changes: 7 additions & 2 deletions eos/effects/boostermissileexplosionvelocitypenalty.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@
# Used by:
# Implants named like: Blue Pill Booster (3 of 5)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Missile Explosion Velocity"

# Attribute that this effect targets
attr = "boosterAOEVelocityPenalty"


def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"aoeVelocity", booster.getModifiedItemAttr("boosterAOEVelocityPenalty"))
"aoeVelocity", booster.getModifiedItemAttr(attr))
9 changes: 7 additions & 2 deletions eos/effects/boostermissilevelocitypenalty.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,14 @@
# Implants named like: Crash Booster (3 of 4)
# Implants named like: X Instinct Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Missile Velocity"

# Attribute that this effect targets
attr = "boosterMissileVelocityPenalty"


def handler(fit, booster, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"maxVelocity", "boosterMissileVelocityPenalty")
"maxVelocity", booster.getModifiedItemAttr(attr))
14 changes: 14 additions & 0 deletions eos/effects/boostershieldboostamountpenaltyshieldskills.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
type = "boosterSideEffect"

# User-friendly name for the side effect
displayName = "Shield Boost"

# Attribute that this effect targets
attr = "boosterShieldBoostAmountPenalty"


def handler(fit, src, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation"), "shieldBonus",
src.getModifiedItemAttr("boosterShieldBoostAmountPenalty"))
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Operation"), "shieldBonus",
src.getModifiedItemAttr("boosterShieldBoostAmountPenalty"))
11 changes: 8 additions & 3 deletions eos/effects/boostershieldcapacitypenalty.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
# boosterShieldCapacityPenalty
#
# Used by:
# Implants from group: Booster (12 of 48)
# Implants from group: Booster (12 of 52)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Shield Capacity"

# Attribute that this effect targets
attr = "boosterShieldCapacityPenalty"


def handler(fit, booster, context):
fit.ship.boostItemAttr("shieldCapacity", booster.getModifiedItemAttr("boosterShieldCapacityPenalty"))
fit.ship.boostItemAttr("shieldCapacity", booster.getModifiedItemAttr(attr))
9 changes: 7 additions & 2 deletions eos/effects/boosterturretfalloffpenalty.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,14 @@
# Implants named like: Drop Booster (3 of 4)
# Implants named like: X Instinct Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Turret Falloff"

# Attribute that this effect targets
attr = "boosterTurretFalloffPenalty"


def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),
"falloff", booster.getModifiedItemAttr("boosterTurretFalloffPenalty"))
"falloff", booster.getModifiedItemAttr(attr))
9 changes: 7 additions & 2 deletions eos/effects/boosterturretoptimalrangepenalty.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,14 @@
# Implants named like: Mindflood Booster (3 of 4)
# Implants named like: Sooth Sayer Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Turret Optimal Range"

# Attribute that this effect targets
attr = "boosterTurretOptimalRange"


def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),
"maxRange", booster.getModifiedItemAttr("boosterTurretOptimalRange"))
"maxRange", booster.getModifiedItemAttr(attr))
9 changes: 7 additions & 2 deletions eos/effects/boosterturrettrackingpenalty.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,14 @@
# Implants named like: Exile Booster (3 of 4)
# Implants named like: Frentix Booster (3 of 4)
type = "boosterSideEffect"
activeByDefault = False

# User-friendly name for the side effect
displayName = "Turret Tracking"

# Attribute that this effect targets
attr = "boosterTurretTrackingPenalty"


def handler(fit, booster, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"),
"trackingSpeed", booster.getModifiedItemAttr("boosterTurretTrackingPenalty"))
"trackingSpeed", booster.getModifiedItemAttr(attr))
Loading

0 comments on commit b30b3fc

Please sign in to comment.