def get_filtered_datatypes(self, dt_module, dt_class, filters, has_all_option, has_none_option): """ Given the name from the input tree, the dataType required and a number of filters, return the available dataType that satisfy the conditions imposed. """ index_class = getattr(sys.modules[dt_module], dt_class)() filters_dict = json.loads(filters) fields = [] operations = [] values = [] for idx in range(len(filters_dict['fields'])): fields.append(filters_dict['fields'][idx]) operations.append(filters_dict['operations'][idx]) values.append(filters_dict['values'][idx]) filter = FilterChain(fields=fields, operations=operations, values=values) project = common.get_current_project() form = Form(project_id=project.id, draw_ranges=True) data_type_gid_attr = DataTypeGidAttr( linked_datatype=REGISTRY.get_datatype_for_index(index_class)) data_type_gid_attr.required = not string2bool(has_none_option) select_field = TraitDataTypeSelectField( data_type_gid_attr, form, conditions=filter, has_all_option=string2bool(has_all_option)) return {'options': select_field.options()}
def get_filtered_datatypes(self, dt_module, dt_class, filters, has_all_option, has_none_option): """ Given the name from the input tree, the dataType required and a number of filters, return the available dataType that satisfy the conditions imposed. """ index_class = getattr(sys.modules[dt_module], dt_class)() filters_dict = json.loads(filters) for idx in range(len(filters_dict['fields'])): if filters_dict['values'][idx] in ['True', 'False']: filters_dict['values'][idx] = string2bool( filters_dict['values'][idx]) filter = FilterChain(fields=filters_dict['fields'], operations=filters_dict['operations'], values=filters_dict['values']) project = common.get_current_project() data_type_gid_attr = DataTypeGidAttr( linked_datatype=REGISTRY.get_datatype_for_index(index_class)) data_type_gid_attr.required = not string2bool(has_none_option) select_field = TraitDataTypeSelectField( data_type_gid_attr, conditions=filter, has_all_option=string2bool(has_all_option)) self.algorithm_service.fill_selectfield_with_datatypes( select_field, project.id) return {'options': select_field.options()}
def test_datatype_select_field(self, connectivity_index_factory): trait_attribute = SimulatorAdapterModel.connectivity connectivity_1 = connectivity_index_factory(2) connectivity_2 = connectivity_index_factory(2) connectivity_3 = connectivity_index_factory(2) op_1 = dao.get_operation_by_id(connectivity_1.fk_from_operation) op_1.fk_launched_in = self.test_project.id dao.store_entity(op_1) op_2 = dao.get_operation_by_id(connectivity_2.fk_from_operation) op_2.fk_launched_in = self.test_project.id dao.store_entity(op_2) op_3 = dao.get_operation_by_id(connectivity_3.fk_from_operation) op_3.fk_launched_in = self.test_project.id dao.store_entity(op_3) datatype_select_field = TraitDataTypeSelectField(trait_attribute, self.name, None, has_all_option=True) AlgorithmService().fill_selectfield_with_datatypes( datatype_select_field, self.test_project.id) post_data = {self.name: connectivity_1.gid} datatype_select_field.fill_from_post(post_data) options = datatype_select_field.options() conn_1 = next(options) conn_2 = next(options) conn_3 = next(options) next(options) with pytest.raises(StopIteration): next(options) assert conn_1.value == connectivity_3.gid assert conn_2.value == connectivity_2.gid assert conn_3.value == connectivity_1.gid assert uuid.UUID(post_data[self.name]) == datatype_select_field.data, "UUID data was not set correctly on" \ " TraitDataTypeSelectField"