From 09d3fce02d27cc97ae6eee6cf2e9dff7fae646d3 Mon Sep 17 00:00:00 2001 From: Josh Burman Date: Wed, 23 Mar 2022 15:57:47 +0000 Subject: [PATCH] pre-filter 100% constraint items --- app/helpers/service_helper.py | 11 ++++++++++- app/services/loft_service.py | 4 +--- 2 files changed, 11 insertions(+), 4 deletions(-) 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...')