moved constraints to objects
This commit is contained in:
@ -1,22 +1,24 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import List, Literal, Optional
|
||||
from typing import List, Literal, Optional, Union
|
||||
|
||||
import logging
|
||||
import random
|
||||
|
||||
from models.item import Item
|
||||
from models.constraint import Constraint
|
||||
from models.metadata_constraint import MetadataConstraint
|
||||
from models.bundle_constraint import BundleConstraint
|
||||
# from models.irt_target_constraint import IrtTargetConstraint
|
||||
from models.irt_model import IRTModel
|
||||
from models.bundle import Bundle
|
||||
from models.objective_function import ObjectiveFunction
|
||||
from models.advanced_options import AdvancedOptions
|
||||
|
||||
|
||||
class SolverRun(BaseModel):
|
||||
items: List[Item] = []
|
||||
bundles: List[Bundle] = []
|
||||
bundle_first_ordering: bool = True
|
||||
constraints: List[Constraint]
|
||||
constraints: List[Union[Constraint, MetadataConstraint, BundleConstraint]]
|
||||
irt_model: IRTModel
|
||||
objective_function: ObjectiveFunction
|
||||
total_form_items: int
|
||||
@ -26,6 +28,28 @@ class SolverRun(BaseModel):
|
||||
advanced_options: Optional[AdvancedOptions]
|
||||
engine: str
|
||||
|
||||
def __init__(self, **data) -> None:
|
||||
super().__init__(**data)
|
||||
|
||||
# this is all a compensator for dynamically creating objects
|
||||
# ideally we'd change the payload to determine what type it is
|
||||
constraints: [Constraint|MetadataConstraint|BundleConstraint] = []
|
||||
|
||||
for constraint in self.constraints:
|
||||
if constraint.reference_attribute.type == 'metadata':
|
||||
constraints.append(MetadataConstraint(reference_attribute=constraint.reference_attribute, minimum=constraint.minimum, maximum=constraint.maximum))
|
||||
elif constraint.reference_attribute.type == 'bundle':
|
||||
constraints.append(BundleConstraint(reference_attribute=constraint.reference_attribute, minimum=constraint.minimum, maximum=constraint.maximum))
|
||||
|
||||
# constraints for tif and tcc targets
|
||||
# for target in self.objective_function.tif_targets:
|
||||
# constraints.append(IrtTargetConstraint(target=target, target_type='tif'))
|
||||
|
||||
# for target in self.objective_function.tcc_targets:
|
||||
# constraints.append(IrtTargetConstraint(target=target, target_type='tcc'))
|
||||
|
||||
self.constraints = constraints
|
||||
|
||||
def get_item(self, item_id: int) -> Item or None:
|
||||
for item in self.items:
|
||||
if item.id == item_id:
|
||||
|
Reference in New Issue
Block a user