From 32286738055167459ed9afa062d9f033560d2956 Mon Sep 17 00:00:00 2001 From: Bjoern Boschman Date: Thu, 28 May 2020 18:19:53 +0200 Subject: [PATCH 1/3] #6 move 'required' to self.extra dict --- django_mongoengine_filter/filters.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/django_mongoengine_filter/filters.py b/django_mongoengine_filter/filters.py index dbfd89c..307e74c 100644 --- a/django_mongoengine_filter/filters.py +++ b/django_mongoengine_filter/filters.py @@ -62,8 +62,8 @@ def __init__( self.filter = action self.lookup_type = lookup_type self.widget = widget - self.required = required self.extra = kwargs + self.extra.setdefault('required', False) self.distinct = distinct self.exclude = exclude @@ -103,6 +103,17 @@ def field(self): return self._field + @property + def field(self): + if not hasattr(self, '_field'): + field_kwargs = self.extra.copy() + + if settings.DISABLE_HELP_TEXT: + field_kwargs.pop('help_text', None) + + self._field = self.field_class(label=self.label, **field_kwargs) + return self._field + def filter(self, qs, value): if isinstance(value, Lookup): lookup = six.text_type(value.lookup_type) From efe9d0b6862811f6a679693120943d28d9f99631 Mon Sep 17 00:00:00 2001 From: Bjoern Boschman Date: Thu, 28 May 2020 18:24:43 +0200 Subject: [PATCH 2/3] copied `field` Property from django-filters --- django_mongoengine_filter/filters.py | 73 +++++++++++++++++----------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/django_mongoengine_filter/filters.py b/django_mongoengine_filter/filters.py index 307e74c..ce707f8 100644 --- a/django_mongoengine_filter/filters.py +++ b/django_mongoengine_filter/filters.py @@ -70,37 +70,54 @@ def __init__( self.creation_counter = Filter.creation_counter Filter.creation_counter += 1 + # FIXME: original field property + # there had been more logic to check lookup types + # django-filters has renamed lookup_type to lookup_expr + # yet in my case using that smaller `field` property from below works as a glance + # + # @property + # def field(self): + # if not hasattr(self, "_field"): + # help_text = _("This is an exclusion filter") if self.exclude else "" + # if self.lookup_type is None or isinstance( + # self.lookup_type, (list, tuple) + # ): + # if self.lookup_type is None: + # lookup = [(x, x) for x in LOOKUP_TYPES] + # else: + # lookup = [ + # (x, x) for x in LOOKUP_TYPES if x in self.lookup_type + # ] + # self._field = LookupTypeField( + # self.field_class( + # required=self.required, widget=self.widget, **self.extra + # ), + # lookup, + # required=self.required, + # label=self.label, + # help_text=help_text, + # ) + # else: + # self._field = self.field_class( + # required=self.required, + # label=self.label, + # widget=self.widget, + # help_text=help_text, + # **self.extra + # ) + + # return self._field + @property def field(self): - if not hasattr(self, "_field"): - help_text = _("This is an exclusion filter") if self.exclude else "" - if self.lookup_type is None or isinstance( - self.lookup_type, (list, tuple) - ): - if self.lookup_type is None: - lookup = [(x, x) for x in LOOKUP_TYPES] - else: - lookup = [ - (x, x) for x in LOOKUP_TYPES if x in self.lookup_type - ] - self._field = LookupTypeField( - self.field_class( - required=self.required, widget=self.widget, **self.extra - ), - lookup, - required=self.required, - label=self.label, - help_text=help_text, - ) - else: - self._field = self.field_class( - required=self.required, - label=self.label, - widget=self.widget, - help_text=help_text, - **self.extra - ) + if not hasattr(self, '_field'): + field_kwargs = self.extra.copy() + # TODO: not available in django_mongoengine_filter + # if settings.DISABLE_HELP_TEXT: + # field_kwargs.pop('help_text', None) + + self._field = self.field_class(label=self.label, **field_kwargs) return self._field @property From f3a20d61fac6012a12b7c2d2a7b5c2112d471931 Mon Sep 17 00:00:00 2001 From: Bjoern Boschman Date: Thu, 28 May 2020 18:50:16 +0200 Subject: [PATCH 3/3] no idea why I did this oO --- django_mongoengine_filter/filters.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/django_mongoengine_filter/filters.py b/django_mongoengine_filter/filters.py index ce707f8..e388447 100644 --- a/django_mongoengine_filter/filters.py +++ b/django_mongoengine_filter/filters.py @@ -120,17 +120,6 @@ def field(self): self._field = self.field_class(label=self.label, **field_kwargs) return self._field - @property - def field(self): - if not hasattr(self, '_field'): - field_kwargs = self.extra.copy() - - if settings.DISABLE_HELP_TEXT: - field_kwargs.pop('help_text', None) - - self._field = self.field_class(label=self.label, **field_kwargs) - return self._field - def filter(self, qs, value): if isinstance(value, Lookup): lookup = six.text_type(value.lookup_type)