From ad3019e4787c1dcc69edbd2ed17375bbd6488b50 Mon Sep 17 00:00:00 2001 From: Adrian Manteza Date: Wed, 23 Mar 2022 16:32:33 +0000 Subject: [PATCH] prefiltering of items --- app/helpers/service_helper.py | 7 +++---- app/models/item.py | 10 +++++----- app/services/loft_service.py | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/helpers/service_helper.py b/app/helpers/service_helper.py index 6800f8a..7d252c8 100644 --- a/app/helpers/service_helper.py +++ b/app/helpers/service_helper.py @@ -5,7 +5,7 @@ from tokenize import String from models.item import Item -def items_csv_to_dict(items_csv_reader, solver_run): +def csv_to_item(items_csv_reader, solver_run): items = [] headers = [] @@ -46,9 +46,8 @@ def items_csv_to_dict(items_csv_reader, solver_run): 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 item.attribute_exists(constraint.reference_attribute) == False and constraint.minimum == 100: + valid_item = False if valid_item: items.append(item) diff --git a/app/models/item.py b/app/models/item.py index 66b6914..260d612 100644 --- a/app/models/item.py +++ b/app/models/item.py @@ -19,12 +19,12 @@ class Item(BaseModel): def irf(self, solver_run, theta): return ItemResponseFunction(solver_run.irt_model).calculate(b_param=self.b_param, theta=theta) - def get_attribute(self, ref_attribute): + def get_attribute(self, ref_attribute: Attribute) -> Attribute or None: for attribute in self.attributes: - if attribute.id == ref_attribute.id and attribute.value.lower( - ) == ref_attribute.value.lower(): - return attribute.value - return False + if self.attribute_exists(ref_attribute): + return attribute + + return None def attribute_exists(self, ref_attribute: Attribute) -> bool: for attribute in self.attributes: diff --git a/app/services/loft_service.py b/app/services/loft_service.py index 8a40bfd..7eebd8c 100644 --- a/app/services/loft_service.py +++ b/app/services/loft_service.py @@ -53,7 +53,7 @@ class LoftService(Base): items_csv_reader = csv_helper.file_stream_reader(items_csv) # add items to solver run - solver_run.items = service_helper.items_csv_to_dict(items_csv_reader, solver_run) + solver_run.items = service_helper.csv_to_item(items_csv_reader, solver_run) logging.info('Processed Attributes...')