* Remove database commit in price worker, essentially bringing it back to the previous functionality (pass thread list of price objects, it modifies, calls back for main thread to commit). There's probably a better way to handle this for the future creating a scoped session or something, but for now this works
* E303 too many blank lines (2)
Conflicts:
eos/db/saveddata/character.py
eos/db/saveddata/fit.py
Implements #983 but utilizing sqlalchemy events to update the fit modified date whenever something is added/changed.
Turns out threading.start() returns before the thread actually starts, so there were situations in which we would start the thread and immediately try to use it before run() happened.
Removed the FIT_CHANGED binding from FitItem - this was causing very odd issues when the object was destroyed (navigating to another "stage") such as the Fit Changed event for that fit no longer firing (or at least seemingly so)
To fix this, simply look at the active fit during FitItem.Refresh()
Also creates a new query to get a list of items from the DB, although it's not used (was gonna use it, decided against it, but didn't want to delete the code - could prove handy later)
* Remove dirtyStorage, legacy of old fleet boosting system
* Remove withBooster flag from the recalc() function.
This was a legacy parameter dealing with the old fleet boost code, the purpose of which has changed with the addition of command boosts. We no longer have to call recalc with this particular parameter (indeed, it was forced to False in `recalc`). These were never cleaned up. We still have the withBoosters parameter for the `calculateModifiedAttributes` function, however that will be renamed and has a different meaning than it used to (used in the recursion of command fits)
* Add some comments
* Consolidate the tangled mess of conditional flags meant to determine if a fit is local/projected/command. This should make the logic flow a bit clearer.
Also rewrite a blurb about returning on a calculated fit - need to look into this a little bit more.
* fix up test to no longer pass `withBooster`
* Do not recalc fits if they are already calculated. Fits that are projected onto other fits recursively set their victims to `calculated=False` so that the victim will re calculate when it loads again.
* Reset boosted fits when calculating a fit that is boosting others. Also, remove semicolon due to habit :x
* Develop a `__resetDependantCalc()` which will reset any fits that are immediately affected by the current fits calculation.