From 362086cc834b5df55ce106c42f5efd4cbd7d452b Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sat, 24 Feb 2018 01:47:05 -0500 Subject: [PATCH 1/3] Fix type in database default for damage types --- eos/db/saveddata/loadDefaultDatabaseValues.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eos/db/saveddata/loadDefaultDatabaseValues.py b/eos/db/saveddata/loadDefaultDatabaseValues.py index befaad44b..51f497cc6 100644 --- a/eos/db/saveddata/loadDefaultDatabaseValues.py +++ b/eos/db/saveddata/loadDefaultDatabaseValues.py @@ -68,7 +68,7 @@ class DefaultDatabaseValues(object): ["[Hybrid Charges]Uranium", "0", "38.4", "57.6", "0"], ["[Missiles]Mjolnir", "100", "0", "0", "0"], ["[Missiles]Inferno", "0", "100", "0", "0"], ["[Missiles]Scourge", "0", "0", "100", "0"], ["[Missiles]Nova", "0", "0", "0", "100"], - ["[Missiles][Structure) Standup Missile", "100", "100", "100", "100"], + ["[Missiles][Structure] Standup Missile", "100", "100", "100", "100"], ["[Projectile Ammo][T2] Tremor", "0", "0", "24", "40"], ["[Projectile Ammo][T2] Quake", "0", "0", "40", "72"], ["[Projectile Ammo][T2] Hail", "0", "0", "26.4", "96.8"], From f442632fbcd2bae114572ead8ab4842dd6ebfbbe Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sat, 24 Feb 2018 01:49:09 -0500 Subject: [PATCH 2/3] Fix importing damage profiles which included overwriting existing ones and then performing a delete on one of them. #1416 --- eos/saveddata/damagePattern.py | 26 +++++++++++++++++++++++--- service/damagePattern.py | 14 +------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/eos/saveddata/damagePattern.py b/eos/saveddata/damagePattern.py index 2d32de6a2..d7889f131 100644 --- a/eos/saveddata/damagePattern.py +++ b/eos/saveddata/damagePattern.py @@ -18,12 +18,16 @@ # =============================================================================== import re +import eos.db class DamagePattern(object): DAMAGE_TYPES = ("em", "thermal", "kinetic", "explosive") - def __init__(self, emAmount=25, thermalAmount=25, kineticAmount=25, explosiveAmount=25): + def __init__(self, *args, **kwargs): + self.update(*args, **kwargs) + + def update(self, emAmount=25, thermalAmount=25, kineticAmount=25, explosiveAmount=25): self.emAmount = emAmount self.thermalAmount = thermalAmount self.kineticAmount = kineticAmount @@ -74,6 +78,14 @@ class DamagePattern(object): lines = re.split('[\n\r]+', text) patterns = [] numPatterns = 0 + + # When we import damage profiles, we create new ones and update old ones. To do this, get a list of current + # patterns to allow lookup + lookup = {} + current = eos.db.getDamagePatternList() + for pattern in current: + lookup[pattern.name] = pattern + for line in lines: try: if line.strip()[0] == "#": # comments @@ -99,10 +111,18 @@ class DamagePattern(object): continue if len(fields) == 4: # Avoid possible blank lines - pattern = DamagePattern(**fields) - pattern.name = name.strip() + if name.strip() in lookup: + pattern = lookup[name.strip()] + pattern.update(**fields) + eos.db.save(pattern) + else: + pattern = DamagePattern(**fields) + pattern.name = name.strip() + eos.db.save(pattern) patterns.append(pattern) + eos.db.commit() + return patterns, numPatterns EXPORT_FORMAT = "DamageProfile = %s,%d,%d,%d,%d\n" diff --git a/service/damagePattern.py b/service/damagePattern.py index 5a169734c..7e9e579fc 100644 --- a/service/damagePattern.py +++ b/service/damagePattern.py @@ -72,21 +72,9 @@ class DamagePattern(object): eos.db.save(p) def importPatterns(self, text): - lookup = {} - current = self.getDamagePatternList() - for pattern in current: - lookup[pattern.name] = pattern - imports, num = es_DamagePattern.importPatterns(text) - for pattern in imports: - if pattern.name in lookup: - match = lookup[pattern.name] - match.__dict__.update(pattern.__dict__) - else: - eos.db.save(pattern) - eos.db.commit() - lenImports = len(imports) + if lenImports == 0: raise ImportError("No patterns found for import") if lenImports != num: From a9db667c9c79b451b515c117467a4f616e62dc3e Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sat, 24 Feb 2018 02:01:23 -0500 Subject: [PATCH 3/3] Do the same treatment to Target Resists as Damage Patterns --- eos/saveddata/targetResists.py | 26 +++++++++++++++++++++++--- service/targetResists.py | 14 +------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/eos/saveddata/targetResists.py b/eos/saveddata/targetResists.py index e50c13791..63b64afef 100644 --- a/eos/saveddata/targetResists.py +++ b/eos/saveddata/targetResists.py @@ -19,6 +19,7 @@ import re from logbook import Logger +import eos.db pyfalog = Logger(__name__) @@ -27,7 +28,10 @@ class TargetResists(object): # also determined import/export order - VERY IMPORTANT DAMAGE_TYPES = ("em", "thermal", "kinetic", "explosive") - def __init__(self, emAmount=0, thermalAmount=0, kineticAmount=0, explosiveAmount=0): + def __init__(self, *args, **kwargs): + self.update(*args, **kwargs) + + def update(self, emAmount=0, thermalAmount=0, kineticAmount=0, explosiveAmount=0): self.emAmount = emAmount self.thermalAmount = thermalAmount self.kineticAmount = kineticAmount @@ -38,6 +42,14 @@ class TargetResists(object): lines = re.split('[\n\r]+', text) patterns = [] numPatterns = 0 + + # When we import damage profiles, we create new ones and update old ones. To do this, get a list of current + # patterns to allow lookup + lookup = {} + current = eos.db.getTargetResistsList() + for pattern in current: + lookup[pattern.name] = pattern + for line in lines: try: if line.strip()[0] == "#": # comments @@ -66,10 +78,18 @@ class TargetResists(object): continue if len(fields) == 4: # Avoid possible blank lines - pattern = TargetResists(**fields) - pattern.name = name.strip() + if name.strip() in lookup: + pattern = lookup[name.strip()] + pattern.update(**fields) + eos.db.save(pattern) + else: + pattern = TargetResists(**fields) + pattern.name = name.strip() + eos.db.save(pattern) patterns.append(pattern) + eos.db.commit() + return patterns, numPatterns EXPORT_FORMAT = "TargetResists = %s,%.1f,%.1f,%.1f,%.1f\n" diff --git a/service/targetResists.py b/service/targetResists.py index 06df8c8c6..ca4ed57e7 100644 --- a/service/targetResists.py +++ b/service/targetResists.py @@ -72,21 +72,9 @@ class TargetResists(object): db.save(p) def importPatterns(self, text): - lookup = {} - current = self.getTargetResistsList() - for pattern in current: - lookup[pattern.name] = pattern - imports, num = es_TargetResists.importPatterns(text) - for pattern in imports: - if pattern.name in lookup: - match = lookup[pattern.name] - match.__dict__.update(pattern.__dict__) - else: - db.save(pattern) - db.commit() - lenImports = len(imports) + if lenImports == 0: raise ImportError("No patterns found for import") if lenImports != num: