from dataclasses import dataclass from project.main.views.complex_form.state_models import CheckboxState, SelectState @dataclass class RouteModuleState: enabled: CheckboxState smart_routing: CheckboxState predictive_pickup: CheckboxState automatic_planning: CheckboxState geo_routing: CheckboxState packing_model: SelectState prekitting_to_box: CheckboxState prekitting_to_pallet: CheckboxState real_time_stock: CheckboxState warehouse: CheckboxState end_warehouse_tracking: CheckboxState pick_and_pack_application: CheckboxState custom_forms_in_routing: CheckboxState money_bag_tracking: CheckboxState @staticmethod def from_form(values: dict[str, str]) -> "RouteModuleState": return RouteModuleState( enabled=CheckboxState(checked=values.get("route_module") == "on"), smart_routing=CheckboxState(checked=values.get("smart_routing") == "on"), predictive_pickup=CheckboxState( checked=values.get("predictive_pickup") == "on" ), automatic_planning=CheckboxState( checked=values.get("automatic_planning") == "on" ), geo_routing=CheckboxState(checked=values.get("geo_routing") == "on"), packing_model=SelectState(value=values.get("packing_model")), prekitting_to_box=CheckboxState( checked=values.get("prekitting_to_box") == "on" ), prekitting_to_pallet=CheckboxState( checked=values.get("prekitting_to_pallet") == "on" ), real_time_stock=CheckboxState( checked=values.get("real_time_stock") == "on" ), warehouse=CheckboxState(checked=values.get("warehouse") == "on"), end_warehouse_tracking=CheckboxState( checked=values.get("end_warehouse_tracking") == "on" ), pick_and_pack_application=CheckboxState( checked=values.get("pick_and_pack_application") == "on" ), custom_forms_in_routing=CheckboxState( checked=values.get("custom_forms_in_routing") == "on" ), money_bag_tracking=CheckboxState( checked=values.get("money_bag_tracking") == "on" ), ) def control_state(self) -> None: self.smart_routing.enabled = self.enabled.checked self.geo_routing.enabled = self.enabled.checked self.warehouse.enabled = self.enabled.checked self.custom_forms_in_routing.enabled = self.enabled.checked self.predictive_pickup.visible = ( self.smart_routing.checked and self.smart_routing.enabled ) self.automatic_planning.visible = ( self.smart_routing.checked and self.smart_routing.enabled ) self.end_warehouse_tracking.visible = ( self.warehouse.checked and self.warehouse.enabled ) self.pick_and_pack_application.visible = ( self.warehouse.checked and self.warehouse.enabled ) if not self.enabled.checked: self.packing_model.value = None self.packing_model.enabled = self.enabled.checked self.prekitting_to_box.visible = ( self.packing_model.enabled and self.packing_model.value ) self.prekitting_to_pallet.visible = ( self.packing_model.enabled and self.packing_model.value ) self.real_time_stock.visible = ( self.packing_model.enabled and self.packing_model.value ) self.money_bag_tracking.enabled = self.enabled.checked