This commit is contained in:
blitzmann
2017-07-11 02:06:09 -04:00
parent 60e5085724
commit b55fcfaf04
15 changed files with 60 additions and 69 deletions

View File

@@ -319,6 +319,7 @@ def getVariations(itemids, groupIDs=None, where=None, eager=None):
return vars
@cachedQuery(1, "attr")
def getAttributeInfo(attr, eager=None):
if isinstance(attr, basestring):

View File

@@ -10,8 +10,6 @@ https://community.eveonline.com/news/patch-notes/patch-notes-for-july-2017-relea
conversion. Best effort ftw
"""
import sqlalchemy
conversion = {
frozenset([30046, 29969, 30139, 30122, 30090]): (45627, 45590, 45601, 45615),
frozenset([30046, 29969, 30139, 30122, 30088]): (45627, 45590, 45601, 45614),

View File

@@ -4,8 +4,6 @@ Migration 26
- Deletes invalid command fit relationships caused by a bug (see #1244)
"""
import sqlalchemy
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)")

View File

@@ -18,29 +18,28 @@
# ===============================================================================
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
from eos.saveddata.fit import Fit
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),
)
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))
Column("boosterID", Integer, ForeignKey("boosters.ID"), primary_key=True, index=True),
Column("effectID", Integer, nullable=False, primary_key=True),
Column("active", Boolean, default=False)
)
mapper(Booster, boosters_table,

View File

@@ -191,7 +191,7 @@ class ProjectedView(d.Display):
stuff = []
if fit is not None:
#pyfalog.debug(" Collecting list of stuff to display in ProjectedView")
# pyfalog.debug(" Collecting list of stuff to display in ProjectedView")
self.modules = fit.projectedModules[:]
self.drones = fit.projectedDrones[:]
self.fighters = fit.projectedFighters[:]

View File

@@ -9,7 +9,7 @@ from gui.utils.staticHelpers import DragDropHelper
from logbook import Logger
from gui.builtinMarketBrowser.events import *
import events
pyfalog = Logger(__name__)
@@ -89,10 +89,10 @@ class ItemView(Display):
for itemID in self.sMkt.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"]:
self.recentlyUsedModules.add(self.sMkt.getItem(itemID))
wx.PostEvent(self.mainFrame, ItemSelected(itemID=self.active[sel].ID))
wx.PostEvent(self.mainFrame, events.ItemSelected(itemID=self.active[sel].ID))
def storeRecentlyUsedMarketItem(self, itemID):
if len(self.sMkt.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"]) > MAX_RECENTLY_USED_MODULES:
if len(self.sMkt.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"]) > events.MAX_RECENTLY_USED_MODULES:
self.sMkt.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"].pop(0)
self.sMkt.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"].append(itemID)
@@ -104,7 +104,7 @@ class ItemView(Display):
if sel.IsOk():
# Get data field of the selected item (which is a marketGroup ID if anything was selected)
seldata = self.marketView.GetPyData(sel)
if seldata is not None and seldata != RECENTLY_USED_MODULES:
if seldata is not None and seldata != events.RECENTLY_USED_MODULES:
# If market group treeview item doesn't have children (other market groups or dummies),
# then it should have items in it and we want to request them
if self.marketView.ItemHasChildren(sel) is False:
@@ -117,7 +117,7 @@ class ItemView(Display):
items = set()
else:
# If method was called but selection wasn't actually made or we have a hit on recently used modules
if seldata == RECENTLY_USED_MODULES:
if seldata == events.RECENTLY_USED_MODULES:
items = self.recentlyUsedModules
else:
items = set()
@@ -126,7 +126,7 @@ class ItemView(Display):
self.updateItemStore(items)
# Set toggle buttons / use search mode flag if recently used modules category is selected (in order to have all modules listed and not filtered)
if seldata is not RECENTLY_USED_MODULES:
if seldata is not events.RECENTLY_USED_MODULES:
self.setToggles()
else:
self.marketBrowser.searchMode = True

View File

@@ -10,4 +10,4 @@ class SearchBox(PFSearchBox):
self.SetSearchBitmap(searchBitmap)
self.SetCancelBitmap(cancelBitmap)
self.ShowSearchButton()
self.ShowCancelButton()
self.ShowCancelButton()

View File

@@ -8,7 +8,7 @@ import gui.utils.colorUtils as colorUtils
import gui.utils.drawUtils as drawUtils
import gui.utils.fonts as fonts
from gui.bitmapLoader import BitmapLoader
from .events import *
import events
pyfalog = Logger(__name__)
@@ -77,7 +77,7 @@ class CategoryItem(SFBrowserItem):
def selectCategory(self, event):
categoryID = self.categoryID
wx.PostEvent(self.shipBrowser, Stage2Selected(categoryID=categoryID, back=False))
wx.PostEvent(self.shipBrowser, events.Stage2Selected(categoryID=categoryID, back=False))
def MouseLeftUp(self, event):
self.selectCategory(event)

View File

@@ -12,7 +12,7 @@ import gui.mainFrame
import gui.utils.colorUtils as colorUtils
import gui.utils.drawUtils as drawUtils
import gui.utils.fonts as fonts
from events import *
import events
from gui.bitmapLoader import BitmapLoader
from gui.builtinShipBrowser.pfBitmapFrame import PFBitmapFrame
from service.fit import Fit
@@ -171,7 +171,7 @@ class FitItem(SFItem.SFBrowserItem):
self.fitBooster = not self.fitBooster
self.boosterBtn.Show(self.fitBooster)
self.Refresh()
wx.PostEvent(self.mainFrame, BoosterListUpdated())
wx.PostEvent(self.mainFrame, events.BoosterListUpdated())
event.Skip()
def OnProjectToFit(self, event):
@@ -303,8 +303,8 @@ class FitItem(SFItem.SFBrowserItem):
sFit = Fit.getInstance()
fitID = sFit.copyFit(self.fitID)
self.shipBrowser.fitIDMustEditName = fitID
wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID))
wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID))
wx.PostEvent(self.shipBrowser, events.Stage3Selected(shipID=self.shipID))
wx.PostEvent(self.mainFrame, events.FitSelected(fitID=fitID))
def renameBtnCB(self):
if self.tcFitName.IsShown():
@@ -327,7 +327,7 @@ class FitItem(SFItem.SFBrowserItem):
if fitName:
self.fitName = fitName
sFit.renameFit(self.fitID, self.fitName)
wx.PostEvent(self.mainFrame, FitRenamed(fitID=self.fitID))
wx.PostEvent(self.mainFrame, events.FitRenamed(fitID=self.fitID))
else:
self.tcFitName.SetValue(self.fitName)
@@ -368,15 +368,15 @@ class FitItem(SFItem.SFBrowserItem):
sFit.deleteFit(self.fitID)
# Notify other areas that a fit has been deleted
wx.PostEvent(self.mainFrame, FitRemoved(fitID=self.fitID))
wx.PostEvent(self.mainFrame, events.FitRemoved(fitID=self.fitID))
# todo: would a simple RefreshList() work here instead of posting that a stage has been selected?
if self.shipBrowser.GetActiveStage() == 5:
wx.PostEvent(self.shipBrowser, ImportSelected(fits=self.shipBrowser.lastdata))
wx.PostEvent(self.shipBrowser, events.ImportSelected(fits=self.shipBrowser.lastdata))
elif self.shipBrowser.GetActiveStage() == 4:
wx.PostEvent(self.shipBrowser, SearchSelected(text=self.shipBrowser.navpanel.lastSearch, back=True))
wx.PostEvent(self.shipBrowser, events.SearchSelected(text=self.shipBrowser.navpanel.lastSearch, back=True))
else:
wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID))
wx.PostEvent(self.shipBrowser, events.Stage3Selected(shipID=self.shipID))
def MouseLeftUp(self, event):
if self.dragging and self.dragged:
@@ -432,9 +432,9 @@ class FitItem(SFItem.SFBrowserItem):
def selectFit(self, event=None, newTab=False):
if newTab:
wx.PostEvent(self.mainFrame, FitSelected(fitID=self.fitID, startup=2))
wx.PostEvent(self.mainFrame, events.FitSelected(fitID=self.fitID, startup=2))
else:
wx.PostEvent(self.mainFrame, FitSelected(fitID=self.fitID))
wx.PostEvent(self.mainFrame, events.FitSelected(fitID=self.fitID))
def RestoreEditButton(self):
self.tcFitName.Show(False)

View File

@@ -8,7 +8,7 @@ import gui.mainFrame
import gui.utils.colorUtils as colorUtils
import gui.utils.drawUtils as drawUtils
import gui.utils.fonts as fonts
from events import *
import events
from gui.bitmapLoader import BitmapLoader
from service.fit import Fit
@@ -87,7 +87,7 @@ class NavigationPanel(SFItem.SFBrowserItem):
realsearch = search.replace("*", "")
if len(realsearch) >= 3:
self.lastSearch = search
wx.PostEvent(self.shipBrowser, SearchSelected(text=search, back=False))
wx.PostEvent(self.shipBrowser, events.SearchSelected(text=search, back=False))
def ToggleSearchBox(self):
if self.BrowserSearchBox.IsShown():
@@ -122,7 +122,7 @@ class NavigationPanel(SFItem.SFBrowserItem):
self.btnRecent.normalBmp = self.recentBmpD
if emitEvent:
wx.PostEvent(self.shipBrowser, Stage1Selected())
wx.PostEvent(self.shipBrowser, events.Stage1Selected())
else:
self.shipBrowser.recentFits = True
self.btnRecent.label = "Hide Recent Fits"
@@ -131,7 +131,7 @@ class NavigationPanel(SFItem.SFBrowserItem):
if emitEvent:
sFit = Fit.getInstance()
fits = sFit.getRecentFits()
wx.PostEvent(self.shipBrowser, ImportSelected(fits=fits, back=True, recent=True))
wx.PostEvent(self.shipBrowser, events.ImportSelected(fits=fits, back=True, recent=True))
def ToggleEmptyGroupsView(self):
if self.shipBrowser.filterShipsWithNoFits:
@@ -146,10 +146,10 @@ class NavigationPanel(SFItem.SFBrowserItem):
stage = self.shipBrowser.GetActiveStage()
if stage == 1:
wx.PostEvent(self.shipBrowser, Stage1Selected())
wx.PostEvent(self.shipBrowser, events.Stage1Selected())
elif stage == 2:
categoryID = self.shipBrowser.GetStageData(stage)
wx.PostEvent(self.shipBrowser, Stage2Selected(categoryID=categoryID, back=True))
wx.PostEvent(self.shipBrowser, events.Stage2Selected(categoryID=categoryID, back=True))
def ShowNewFitButton(self, show):
self.btnNew.Show(show)
@@ -167,8 +167,8 @@ class NavigationPanel(SFItem.SFBrowserItem):
sFit = Fit.getInstance()
fitID = sFit.newFit(shipID, "%s fit" % shipName)
self.shipBrowser.fitIDMustEditName = fitID
wx.PostEvent(self.Parent, Stage3Selected(shipID=shipID))
wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID))
wx.PostEvent(self.Parent, events.Stage3Selected(shipID=shipID))
wx.PostEvent(self.mainFrame, events.FitSelected(fitID=fitID))
def OnHistoryReset(self):
self.ToggleRecentShips(False, False)
@@ -259,16 +259,15 @@ class NavigationPanel(SFItem.SFBrowserItem):
def gotoStage(self, stage, data=None):
self.shipBrowser.recentFits = False
if stage == 1:
wx.PostEvent(self.Parent, Stage1Selected())
wx.PostEvent(self.Parent, events.Stage1Selected())
elif stage == 2:
wx.PostEvent(self.Parent, Stage2Selected(categoryID=data, back=True))
wx.PostEvent(self.Parent, events.Stage2Selected(categoryID=data, back=True))
elif stage == 3:
wx.PostEvent(self.Parent, Stage3Selected(shipID=data))
wx.PostEvent(self.Parent, events.Stage3Selected(shipID=data))
elif stage == 4:
self.shipBrowser._activeStage = 4
wx.PostEvent(self.Parent, SearchSelected(text=data, back=True))
wx.PostEvent(self.Parent, events.SearchSelected(text=data, back=True))
elif stage == 5:
wx.PostEvent(self.Parent, ImportSelected(fits=data))
wx.PostEvent(self.Parent, events.ImportSelected(fits=data))
else:
wx.PostEvent(self.Parent, Stage1Selected())
wx.PostEvent(self.Parent, events.Stage1Selected())

View File

@@ -20,4 +20,4 @@ class PFStaticText(wx.Panel):
@staticmethod
def GetType():
return -1
return -1

View File

@@ -6,7 +6,7 @@ from logbook import Logger
import gui.utils.animEffects as animEffects
import gui.utils.colorUtils as colorUtils
import gui.utils.drawUtils as drawUtils
from events import *
import events
from gui.bitmapLoader import BitmapLoader
pyfalog = Logger(__name__)
@@ -134,7 +134,7 @@ class RaceSelector(wx.Window):
if stage == 2:
categoryID = self.shipBrowser.GetStageData(stage)
wx.PostEvent(self.shipBrowser, Stage2Selected(categoryID=categoryID, back=True))
wx.PostEvent(self.shipBrowser, events.Stage2Selected(categoryID=categoryID, back=True))
event.Skip()
def HitTest(self, mx, my):
@@ -268,4 +268,3 @@ class RaceSelector(wx.Window):
self.checkMaximize = False
event.Skip()

View File

@@ -255,7 +255,6 @@ class SFBrowserItem(wx.Window):
self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
self.Bind(wx.EVT_KEY_UP, self.OnKeyUp)
if "wxMSW" in wx.PlatformInfo:
self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDown)

View File

@@ -8,7 +8,7 @@ import gui.mainFrame
import gui.utils.colorUtils as colorUtils
import gui.utils.drawUtils as drawUtils
import gui.utils.fonts as fonts
from events import *
import events
from gui.bitmapLoader import BitmapLoader
from gui.contextMenu import ContextMenu
from service.fit import Fit
@@ -147,7 +147,7 @@ class ShipItem(SFItem.SFBrowserItem):
else:
shipName, shipTrait, fittings = self.shipFittingInfo
if fittings > 0:
wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID, back=True))
wx.PostEvent(self.shipBrowser, events.Stage3Selected(shipID=self.shipID, back=True))
else:
self.newBtnCB()
@@ -186,8 +186,8 @@ class ShipItem(SFItem.SFBrowserItem):
sFit = Fit.getInstance()
fitID = sFit.newFit(self.shipID, self.tcFitName.GetValue())
wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID, back=False))
wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID))
wx.PostEvent(self.shipBrowser, events.Stage3Selected(shipID=self.shipID, back=False))
wx.PostEvent(self.mainFrame, events.FitSelected(fitID=fitID))
def UpdateElementsPos(self, mdc):
rect = self.GetRect()
@@ -289,5 +289,3 @@ class ShipItem(SFItem.SFBrowserItem):
else:
editCtl.SetSize((self.editWidth, -1))
editCtl.SetPosition((fnEditPosX, fnEditPosY))

View File

@@ -25,7 +25,7 @@ import gui.mainFrame
from gui.builtinMarketBrowser.events import ItemSelected, ITEM_SELECTED
import gui.display as d
from gui.contextMenu import ContextMenu
from gui.builtinShipBrowser.events import *
import gui.builtinShipBrowser.events as sbEvents
import gui.multiSwitch
from eos.saveddata.mode import Mode
from eos.saveddata.module import Module, Slot, Rack
@@ -50,7 +50,7 @@ class FitSpawner(gui.multiSwitch.TabSpawner):
def __init__(self, multiSwitch):
self.multiSwitch = multiSwitch
self.mainFrame = mainFrame = gui.mainFrame.MainFrame.getInstance()
mainFrame.Bind(EVT_FIT_SELECTED, self.fitSelected)
mainFrame.Bind(sbEvents.EVT_FIT_SELECTED, self.fitSelected)
self.multiSwitch.tabsContainer.handleDrag = self.handleDrag
def fitSelected(self, event):
@@ -138,8 +138,8 @@ class FittingView(d.Display):
self.Show(False)
self.parent = parent
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
self.mainFrame.Bind(EVT_FIT_RENAMED, self.fitRenamed)
self.mainFrame.Bind(EVT_FIT_REMOVED, self.fitRemoved)
self.mainFrame.Bind(sbEvents.EVT_FIT_RENAMED, self.fitRenamed)
self.mainFrame.Bind(sbEvents.EVT_FIT_REMOVED, self.fitRemoved)
self.mainFrame.Bind(ITEM_SELECTED, self.appendItem)
self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
@@ -210,13 +210,13 @@ class FittingView(d.Display):
def handleDrag(self, type, fitID):
# Those are drags coming from pyfa sources, NOT builtin wx drags
if type == "fit":
wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID))
wx.PostEvent(self.mainFrame, sbEvents.FitSelected(fitID=fitID))
def Destroy(self):
self.parent.Unbind(EVT_NOTEBOOK_PAGE_CHANGED, handler=self.pageChanged)
self.mainFrame.Unbind(GE.FIT_CHANGED, handler=self.fitChanged)
self.mainFrame.Unbind(EVT_FIT_RENAMED, handler=self.fitRenamed)
self.mainFrame.Unbind(EVT_FIT_REMOVED, handler=self.fitRemoved)
self.mainFrame.Unbind(sbEvents.EVT_FIT_RENAMED, handler=self.fitRenamed)
self.mainFrame.Unbind(sbEvents.EVT_FIT_REMOVED, handler=self.fitRemoved)
self.mainFrame.Unbind(ITEM_SELECTED, handler=self.appendItem)
d.Display.Destroy(self)