diff --git a/app/helpers/service_helper.py b/app/helpers/service_helper.py index 4f7f23c..ea9eb5e 100644 --- a/app/helpers/service_helper.py +++ b/app/helpers/service_helper.py @@ -34,7 +34,8 @@ def solution_to_file(buffer, total_form_items, forms): # write header row for first row utilizing the total items all forms will have # fill the rows with the targets and cut score then the items - header = [] + header = ['status'] + for result in forms[0].tif_results: header += [f'tif @ {round(result.theta, 2)}'] @@ -46,7 +47,7 @@ def solution_to_file(buffer, total_form_items, forms): # add each form as row to processed csv for form in forms: - row = [] + row = [form.status] for result in form.tif_results: row += [f'value - {result.value}\nresult - {round(result.result, 2)}'] diff --git a/app/models/form.py b/app/models/form.py index cae4073..72863ae 100644 --- a/app/models/form.py +++ b/app/models/form.py @@ -13,12 +13,14 @@ class Form(BaseModel): cut_score: float tif_results: List[Target] tcc_results: List[Target] + status: str = 'Not Optimized' @classmethod - def create(cls, items, solver_run): + def create(cls, items, solver_run, status): return cls( items=items, cut_score=TestResponseFunction(solver_run.irt_model).calculate(items, theta=solver_run.theta_cut_score), tif_results=irt_helper.generate_tif_results(items, solver_run), - tcc_results=irt_helper.generate_tcc_results(items, solver_run) + tcc_results=irt_helper.generate_tcc_results(items, solver_run), + status=status ) diff --git a/app/services/loft_service.py b/app/services/loft_service.py index dea817a..de0f363 100644 --- a/app/services/loft_service.py +++ b/app/services/loft_service.py @@ -84,13 +84,12 @@ class LoftService(Base): # solve problem problem.sequentialSolve(problem_objection_functions) - if LpStatus[problem.status] == 'Optimized': - # add return items and create as a form - form_items = service_helper.solution_items(problem.variables(), self.solver_run) - # remove items - self.solver_run.remove_items(form_items) - # add form to solution - solution.forms.append(Form.create(form_items, self.solver_run)) + # add return items and create as a form + form_items = service_helper.solution_items(problem.variables(), self.solver_run) + # remove items + self.solver_run.remove_items(form_items) + # add form to solution + solution.forms.append(Form.create(form_items, self.solver_run, LpStatus[problem.status])) # successfull form, increment f += 1