def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) for instance_type in instance_type_choices: for score_type in score_types: field_name = str(instance_type[0]).replace( '-', '_') + '_' + str(score_type[0]) for lookup_expr in ['gte', 'lte']: self.filters[field_name + '__' + lookup_expr] = NumberFilter( field_name=field_name, label=str(instance_type[1]) + ' ' + str(score_type[1]) + ' ' + verbose_lookup_expr(lookup_expr), lookup_expr=lookup_expr) self.filters[field_name + '__isnull'] = BooleanFilter( field_name=field_name, label=str(instance_type[1]) + ' ' + str(score_type[1]) + ' ' + verbose_lookup_expr('isnull'), lookup_expr='isnull')
def test_overridden_settings(self): verbose_lookup = verbose_lookup_expr('exact') self.assertEqual(verbose_lookup, 'is equal to')
def test_missing_keys(self): verbose_lookup = verbose_lookup_expr('foo__bar__lt') self.assertEqual(verbose_lookup, 'foo bar is less than')
def test_verbose_expression(self): verbose_lookup = verbose_lookup_expr('date__lt') self.assertEqual(verbose_lookup, 'date is less than')
def test_exact(self): # Exact should default to empty. A verbose expression is unnecessary, # and this behavior works well with list syntax for `Meta.fields`. verbose_lookup = verbose_lookup_expr('exact') self.assertEqual(verbose_lookup, '')