def _build_boolean_indicator(spec, context): wrapped = BooleanIndicatorSpec.wrap(spec) return BooleanIndicator( wrapped.display_name, wrapped.column_id, FilterFactory.from_spec(wrapped.filter, context), )
def _build_choice_list_indicator(spec, context): wrapped_spec = ChoiceListIndicatorSpec.wrap(spec) base_display_name = wrapped_spec.display_name def _construct_display(choice): return '{base} ({choice})'.format(base=base_display_name, choice=choice) def _construct_column(choice): return '{col}_{choice}'.format(col=spec['column_id'], choice=choice) choice_indicators = [ BooleanIndicator( display_name=_construct_display(choice), column_id=_construct_column(choice), filter=SinglePropertyValueFilter( expression=wrapped_spec.getter, operator=wrapped_spec.get_operator(), reference_expression=ExpressionFactory.from_spec(choice), ), wrapped_spec=None, ) for choice in spec['choices'] ] return CompoundIndicator(base_display_name, choice_indicators, wrapped_spec)
def _build_count_indicator(spec, context): wrapped = IndicatorSpecBase.wrap(spec) return BooleanIndicator( wrapped.display_name, wrapped.column_id, CustomFilter(lambda item, context=None: True), )