updated bundles process

This commit is contained in:
Josh Burman
2021-12-15 17:36:03 +00:00
parent a827312ef5
commit 4afe81e15b
2 changed files with 16 additions and 8 deletions

View File

@ -1,4 +1,5 @@
from lib.irt.models.three_parameter_logistic import ThreeParameterLogistic
from lib.errors.item_generation_error import ItemGenerationError
class ItemResponseFunction():
def __init__(self, irt_model):
@ -8,5 +9,4 @@ class ItemResponseFunction():
if self.model_data.model == '3PL':
return ThreeParameterLogistic(self.model_data, kwargs).result()
else:
# potentially error out
return None
raise ItemGenerationError("irt model not supported or provided")

View File

@ -32,11 +32,19 @@ class SolverRun(BaseModel):
bundles = []
for item in self.items:
attribute_id = getattr(item, type_attribute)()
# dynamically get the attribute that will be used as an identifier to bundle like items
attribute_id = getattr(item, type_attribute, None)()
# make sure the item has said attribute
if attribute_id != None:
# get index of the bundle in the bundles list
bundle_index = next((index for (index, bundle) in enumerate(bundles) if bundle['id'] == attribute_id), None)
# if the bundle index isn't found then the bundle hasn't been created
# and added to the list and needs to be, else increment the count of items
# in the bundle
if bundle_index == None:
bundles.append({ 'id': item.passage, 'count': 1, 'type': type_attribute })
bundles.append({ 'id': attribute_id, 'count': 1, 'type': type_attribute })
else:
bundles[bundle_index]['count'] += 1