From a9db667c9c79b451b515c117467a4f616e62dc3e Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sat, 24 Feb 2018 02:01:23 -0500 Subject: [PATCH] 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: