Skip to content

Commit 11fcf56

Browse files
committed
feat: all values checkbox filter
1 parent 9c6d22e commit 11fcf56

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/unfold/contrib/filters/admin/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
AutocompleteSelectMultipleFilter,
44
)
55
from unfold.contrib.filters.admin.choice_filters import (
6+
AllValuesCheckboxFilter,
67
BooleanRadioFilter,
78
CheckboxFilter,
89
ChoicesCheckboxFilter,
@@ -30,6 +31,7 @@
3031
from unfold.contrib.filters.admin.text_filters import FieldTextFilter, TextFilter
3132

3233
__all__ = [
34+
"AllValuesCheckboxFilter",
3335
"BooleanRadioFilter",
3436
"CheckboxFilter",
3537
"ChoicesCheckboxFilter",

src/unfold/contrib/filters/admin/choice_filters.py

+15
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,18 @@ def choices(self, changelist: ChangeList) -> Generator[dict[str, Any], None, Non
112112
data={self.lookup_kwarg: self.value()},
113113
),
114114
}
115+
116+
117+
class AllValuesCheckboxFilter(MultiValueMixin, admin.AllValuesFieldListFilter):
118+
template = "unfold/filters/filters_field.html"
119+
form_class = CheckboxForm
120+
121+
def choices(self, changelist: ChangeList) -> Generator[dict[str, Any], None, None]:
122+
yield {
123+
"form": self.form_class(
124+
label=_(" By %(filter_title)s ") % {"filter_title": self.title},
125+
name=self.lookup_kwarg,
126+
choices=[[i, val] for i, val in enumerate(self.lookup_choices)],
127+
data={self.lookup_kwarg: self.value()},
128+
),
129+
}

0 commit comments

Comments
 (0)