Skip to content

Commit 71b38d0

Browse files
authored
fix: dataset custom params (#1680)
1 parent 81d0aa3 commit 71b38d0

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

src/unfold/forms.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,9 @@ class PaginationGenericInlineFormSet(PaginationFormSetMixin, BaseGenericInlineFo
252252

253253
class DatasetChangeListSearchForm(ChangeListSearchForm):
254254
def __init__(self, *args: Any, **kwargs: Any) -> None:
255+
search_var = kwargs.pop("search_var")
255256
super().__init__(*args, **kwargs)
256257

257-
from django.contrib.admin.views.main import SEARCH_VAR
258-
259258
self.fields = {
260-
SEARCH_VAR: forms.CharField(required=False, strip=False),
259+
search_var: forms.CharField(required=False, strip=False),
261260
}

src/unfold/views.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import Any
22

33
import django
4-
from django.contrib.admin.views import main
4+
from django.contrib import messages
55
from django.contrib.admin.views.main import ERROR_FLAG, PAGE_VAR
66
from django.contrib.admin.views.main import ChangeList as BaseChangeList
77
from django.contrib.auth.mixins import PermissionRequiredMixin
@@ -23,14 +23,29 @@ def __init__(self, request: HttpRequest, *args: Any, **kwargs: Any) -> None:
2323

2424
class DatasetChangeList(ChangeList):
2525
is_dataset = True
26-
search_form_class = DatasetChangeListSearchForm
2726

2827
def __init__(self, request: HttpRequest, *args: Any, **kwargs: Any) -> None:
29-
# Monkeypatch SEARCH_VAR and PAGE_VAR for custom datasets
30-
main.SEARCH_VAR = f"{kwargs.get('model')._meta.model_name}-q"
31-
main.PAGE_VAR = f"{kwargs.get('model')._meta.model_name}-p"
28+
search_var = f"{kwargs.get('model')._meta.model_name}-q"
29+
page_var = f"{kwargs.get('model')._meta.model_name}-p"
30+
31+
_search_form = DatasetChangeListSearchForm(request.GET, search_var=search_var)
32+
if not _search_form.is_valid():
33+
for error in _search_form.errors.values():
34+
messages.error(request, ", ".join(error))
35+
36+
self.dataset_search_query = _search_form.cleaned_data.get(search_var) or ""
37+
3238
super().__init__(request, *args, **kwargs)
3339

40+
try:
41+
self.page_num = int(request.GET.get(page_var, 1))
42+
except ValueError:
43+
self.page_num = 1
44+
45+
def get_queryset(self, request, exclude_parameters=None):
46+
self.query = self.dataset_search_query
47+
return super().get_queryset(request, exclude_parameters)
48+
3449

3550
class UnfoldModelAdminViewMixin(PermissionRequiredMixin):
3651
"""

0 commit comments

Comments
 (0)