def queryset(self, request, queryset): if self.form.is_valid(): # get no null params filter_params = clean_input_prefix( dict( filter(lambda x: bool(x[1]), self.form.cleaned_data.items()))) filter_params['timestamp__lte'] = filter_params.pop( 'fake_date_event__lte', None) filter_params['timestamp__gte'] = filter_params.pop( 'fake_date_event__gte', None) if filter_params['timestamp__lte'] is None: filter_params.pop('timestamp__lte', None) if filter_params['timestamp__gte'] is None: filter_params.pop('timestamp__gte', None) if filter_params: # filter by upto included # lookup_upto = self.lookup_kwarg_upto.lstrip(FILTER_PREFIX) # if filter_params.get(lookup_upto) is not None: # lookup_kwarg_upto_value = filter_params.pop(lookup_upto) # filter_params['timestamp__lt'] = lookup_kwarg_upto_value + datetime.timedelta(days=1) affected_pks = Log.objects.filter(**filter_params).values_list( 'object_id', flat=True).distinct() return queryset.filter(pk__in=affected_pks) else: return queryset
def test_doesnt_raise_error_if_dict_key_doesnt_start_with_prefix(self): input_ = {'some_field__gte': None} self.assertEquals(clean_input_prefix(input_), {'some_field__gte': None})
def test_removes_prefix(self): input_ = {'MY_CUSTOM_PREFIX___some_field__gte': None} self.assertEquals(clean_input_prefix(input_), {'some_field__gte': None})