Merge pull request #639 from Ebag333/default-database-profiles

Default database profiles
This commit is contained in:
Ryan Holmes
2016-06-18 23:25:07 -04:00
committed by GitHub
7 changed files with 71 additions and 61 deletions

View File

@@ -19,9 +19,10 @@
import eos.db
import eos.types
import eos.db.saveddata.loadDefaultDatabaseValues as loadDefaultDatabaseValues
import copy
from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues
class ImportError(Exception):
pass
@@ -34,12 +35,6 @@ class DamagePattern():
return cls.instance
def __init__(self):
uniform = eos.db.getDamagePattern("Uniform")
importDBDefaults = loadDefaultDatabaseValues.defaultDatabaseValues()
if uniform is None:
importDBDefaults.importRequiredDefaults()
def getDamagePatternList(self):
return eos.db.getDamagePatternList()

View File

@@ -1,4 +1,4 @@
#===============================================================================
# ===============================================================================
# Copyright (C) 2010 Diego Duclos
#
# This file is part of pyfa.
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
#===============================================================================
# ===============================================================================
import locale
import copy
@@ -40,6 +40,7 @@ from service.port import Port
logger = logging.getLogger(__name__)
class FitBackupThread(threading.Thread):
def __init__(self, path, callback):
threading.Thread.__init__(self)
@@ -257,7 +258,7 @@ class Fit(object):
if not projected:
for fitP in fit.projectedFits:
self.getFit(fitP.ID, projected = True)
self.getFit(fitP.ID, projected=True)
self.recalc(fit, withBoosters=True)
fit.fill()
@@ -413,7 +414,7 @@ class Fit(object):
def changeActiveFighters(self, fitID, fighter, amount):
fit = eos.db.getFit(fitID)
fighter.amountActive = amount
eos.db.commit()
self.recalc(fit)
@@ -427,7 +428,7 @@ class Fit(object):
fit.projectedFighters.remove(thing)
else:
del fit.__projectedFits[thing.ID]
#fit.projectedFits.remove(thing)
# fit.projectedFits.remove(thing)
eos.db.commit()
self.recalc(fit)
@@ -943,7 +944,7 @@ class Fit(object):
fits = []
for path in paths:
if callback: # Pulse
wx.CallAfter(callback, 1, "Processing file:\n%s"%path)
wx.CallAfter(callback, 1, "Processing file:\n%s" % path)
file = open(path, "r")
srcString = file.read()
@@ -955,38 +956,38 @@ class Fit(object):
# If file had ANSI encoding, decode it to unicode using detection
# of BOM header or if there is no header try default
# codepage then fallback to utf-16, cp1252
if isinstance(srcString, str):
encoding_map = (
('\xef\xbb\xbf', 'utf-8'),
('\xff\xfe\0\0', 'utf-32'),
('\0\0\xfe\xff', 'UTF-32BE'),
('\xff\xfe', 'utf-16'),
('\xfe\xff', 'UTF-16BE'))
('\xef\xbb\xbf', 'utf-8'),
('\xff\xfe\0\0', 'utf-32'),
('\0\0\xfe\xff', 'UTF-32BE'),
('\xff\xfe', 'utf-16'),
('\xfe\xff', 'UTF-16BE'))
for bom, encoding in encoding_map:
if srcString.startswith(bom):
codec_found = encoding
savebom = bom
if codec_found is None:
logger.info("Unicode BOM not found in file %s.", path)
attempt_codecs = (defcodepage, "utf-8", "utf-16", "cp1252")
for page in attempt_codecs:
try:
logger.info("Attempting to decode file %s using %s page.", path, page)
srcString = unicode(srcString, page)
codec_found = page
logger.info("File %s decoded using %s page.", path, page)
except UnicodeDecodeError:
logger.info("Error unicode decoding %s from page %s, trying next codec", path, page)
else:
break
try:
logger.info("Attempting to decode file %s using %s page.", path, page)
srcString = unicode(srcString, page)
codec_found = page
logger.info("File %s decoded using %s page.", path, page)
except UnicodeDecodeError:
logger.info("Error unicode decoding %s from page %s, trying next codec", path, page)
else:
break
else:
logger.info("Unicode BOM detected in %s, using %s page.", path, codec_found)
srcString = unicode(srcString[len(savebom):], codec_found)
else:
# nasty hack to detect other transparent utf-16 loading
if srcString[0] == '<' and 'utf-16' in srcString[:128].lower():
@@ -1001,10 +1002,10 @@ class Fit(object):
_, fitsImport = Port.importAuto(srcString, path, callback=callback, encoding=codec_found)
fits += fitsImport
except xml.parsers.expat.ExpatError, e:
return False, "Malformed XML in %s"%path
return False, "Malformed XML in %s" % path
except Exception, e:
logger.exception("Unknown exception processing: %s", path)
return False, "Unknown Error while processing %s"%path
return False, "Unknown Error while processing %s" % path
IDs = []
numFits = len(fits)
@@ -1019,7 +1020,7 @@ class Fit(object):
wx.CallAfter(
callback, 1,
"Processing complete, saving fits to database\n(%d/%d)" %
(i+1, numFits)
(i + 1, numFits)
)
return True, fits
@@ -1122,7 +1123,7 @@ class Fit(object):
self.recalc(fit)
def recalc(self, fit, withBoosters=True):
logger.debug("="*10+"recalc"+"="*10)
logger.debug("=" * 10 + "recalc" + "=" * 10)
if fit.factorReload is not self.serviceFittingOptions["useGlobalForceReload"]:
fit.factorReload = self.serviceFittingOptions["useGlobalForceReload"]
fit.clear()

View File

@@ -22,7 +22,7 @@ import config
import os
import eos.types
import eos.db.migration as migration
import eos.db.saveddata.loadDefaultDatabaseValues as loadDefaultDatabaseValues
from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues
class PrefetchThread(threading.Thread):
def run(self):
@@ -52,17 +52,19 @@ if os.path.isfile(config.saveDB):
# If database exists, run migration after init'd database
eos.db.saveddata_meta.create_all()
migration.update(eos.db.saveddata_engine)
# Import default database values
# Import values that must exist otherwise Pyfa breaks
DefaultDatabaseValues.importRequiredDefaults()
else:
# If database does not exist, do not worry about migration. Simply
# create and set version
eos.db.saveddata_meta.create_all()
eos.db.saveddata_engine.execute('PRAGMA user_version = {}'.format(migration.getAppVersion()))
#Import default database values
importDBDefaults = loadDefaultDatabaseValues.defaultDatabaseValues()
#Import values that must exist otherwise Pyfa breaks
importDBDefaults.importRequiredDefaults()
#Import default values for damage profiles
importDBDefaults.importDamageProfileDefaults()
#Import default values for target resist profiles
importDBDefaults.importResistProfileDefaults()
# Import values that must exist otherwise Pyfa breaks
DefaultDatabaseValues.importRequiredDefaults()
# Import default values for damage profiles
DefaultDatabaseValues.importDamageProfileDefaults()
# Import default values for target resist profiles
DefaultDatabaseValues.importResistProfileDefaults()