diff --git a/app/helpers/service_helper.py b/app/helpers/service_helper.py index 7cee388..6800f8a 100644 --- a/app/helpers/service_helper.py +++ b/app/helpers/service_helper.py @@ -3,6 +3,7 @@ import io import re from tokenize import String +from models.item import Item def items_csv_to_dict(items_csv_reader, solver_run): items = [] @@ -41,7 +42,15 @@ def items_csv_to_dict(items_csv_reader, solver_run): if row[key]: item[col] = row[key] - items.append(item) + # confirm item is only added if it meets the criteria of 100% constraints as a pre-filter + valid_item = True + item = Item.parse_obj(item) + for constraint in solver_run.constraints: + attribute = item.get_attribute(constraint.reference_attribute) + if attribute and constraint.minimum == 100 and int(attribute.value) == 0: + valid_item = False + + if valid_item: items.append(item) return items diff --git a/app/services/loft_service.py b/app/services/loft_service.py index 32ea6f2..8a40bfd 100644 --- a/app/services/loft_service.py +++ b/app/services/loft_service.py @@ -53,9 +53,7 @@ class LoftService(Base): items_csv_reader = csv_helper.file_stream_reader(items_csv) # add items to solver run - for item in service_helper.items_csv_to_dict(items_csv_reader, - solver_run): - solver_run.items.append(Item.parse_obj(item)) + solver_run.items = service_helper.items_csv_to_dict(items_csv_reader, solver_run) logging.info('Processed Attributes...')