1
1
from collections .abc import Callable , Iterable , Iterator
2
- from typing import Any
2
+ from datetime import date , datetime
3
+ from typing import Any , ClassVar
3
4
4
5
from django .contrib .admin .options import ModelAdmin
6
+ from django .contrib .admin .views .main import ChangeList
7
+ from django .db .models .aggregates import Count
5
8
from django .db .models .base import Model
6
9
from django .db .models .fields import Field
7
10
from django .db .models .fields .related import RelatedField
8
11
from django .db .models .query import QuerySet
12
+ from django .db .models .query_utils import Q
9
13
from django .http .request import HttpRequest
14
+ from django .utils .datastructures import _ListOrTuple
10
15
from django .utils .functional import _StrOrPromise
16
+ from django .utils .safestring import SafeString
17
+ from typing_extensions import TypedDict
18
+
19
+ class _ListFilterChoices (TypedDict ):
20
+ selected : bool
21
+ query_string : str
22
+ display : _StrOrPromise
11
23
12
24
class ListFilter :
13
25
title : _StrOrPromise | None
14
26
template : str
15
- used_parameters : Any
27
+ request : HttpRequest
28
+ used_parameters : dict [str , bool | datetime | str ]
16
29
def __init__ (
17
30
self , request : HttpRequest , params : dict [str , str ], model : type [Model ], model_admin : ModelAdmin
18
31
) -> None : ...
19
32
def has_output (self ) -> bool : ...
20
- def choices (self , changelist : Any ) -> Iterator [dict [ str , Any ] ]: ...
33
+ def choices (self , changelist : ChangeList ) -> Iterator [_ListFilterChoices ]: ...
21
34
def queryset (self , request : HttpRequest , queryset : QuerySet ) -> QuerySet | None : ...
22
35
def expected_parameters (self ) -> list [str | None ]: ...
23
36
24
- class SimpleListFilter (ListFilter ):
37
+ class FacetsMixin :
38
+ def get_facet_counts (self , pk_attname : str , filtered_qs : QuerySet [Model ]) -> dict [str , Count ]: ...
39
+ def get_facet_queryset (self , changelist : ChangeList ) -> dict [str , int ]: ...
40
+
41
+ class SimpleListFilter (FacetsMixin , ListFilter ):
25
42
parameter_name : str | None
26
- lookup_choices : Any
43
+ lookup_choices : list [ tuple [ str , _StrOrPromise ]]
27
44
def value (self ) -> str | None : ...
28
- def lookups (self , request : HttpRequest , model_admin : ModelAdmin ) -> Iterable [tuple [Any , str ]] | None : ...
29
- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
45
+ def lookups (self , request : HttpRequest , model_admin : ModelAdmin ) -> Iterable [tuple [str , _StrOrPromise ]] | None : ...
30
46
31
- class FieldListFilter (ListFilter ):
47
+ class FieldListFilter (FacetsMixin , ListFilter ):
48
+ list_separator : ClassVar [str ]
32
49
field : Field
33
50
field_path : str
34
- title : str
51
+ title : _StrOrPromise
35
52
def __init__ (
36
53
self ,
37
54
field : Field ,
@@ -42,7 +59,9 @@ class FieldListFilter(ListFilter):
42
59
field_path : str ,
43
60
) -> None : ...
44
61
@classmethod
45
- def register (cls , test : Callable , list_filter_class : type [FieldListFilter ], take_priority : bool = ...) -> None : ...
62
+ def register (
63
+ cls , test : Callable [[Field ], Any ], list_filter_class : type [FieldListFilter ], take_priority : bool = ...
64
+ ) -> None : ...
46
65
@classmethod
47
66
def create (
48
67
cls ,
@@ -55,67 +74,53 @@ class FieldListFilter(ListFilter):
55
74
) -> FieldListFilter : ...
56
75
57
76
class RelatedFieldListFilter (FieldListFilter ):
58
- used_parameters : dict [Any , Any ]
59
77
lookup_kwarg : str
60
78
lookup_kwarg_isnull : str
61
- lookup_val : Any
62
- lookup_val_isnull : Any
63
- lookup_choices : Any
64
- lookup_title : str
65
- title : str
66
- empty_value_display : Any
79
+ lookup_val : str | None
80
+ lookup_val_isnull : str | None
81
+ lookup_choices : list [tuple [str , _StrOrPromise ]]
82
+ lookup_title : _StrOrPromise
83
+ empty_value_display : SafeString
67
84
@property
68
85
def include_empty_choice (self ) -> bool : ...
86
+ def field_admin_ordering (
87
+ self , field : RelatedField , request : HttpRequest , model_admin : ModelAdmin
88
+ ) -> _ListOrTuple [str ]: ...
69
89
def field_choices (
70
90
self , field : RelatedField , request : HttpRequest , model_admin : ModelAdmin
71
- ) -> list [tuple [str , str ]]: ...
72
- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
91
+ ) -> list [tuple [str , _StrOrPromise ]]: ...
73
92
74
93
class BooleanFieldListFilter (FieldListFilter ):
75
94
lookup_kwarg : str
76
95
lookup_kwarg2 : str
77
- lookup_val : Any
78
- lookup_val2 : Any
79
- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
96
+ lookup_val : str | None
97
+ lookup_val2 : str | None
80
98
81
99
class ChoicesFieldListFilter (FieldListFilter ):
82
- title : str
83
- used_parameters : dict [Any , Any ]
84
100
lookup_kwarg : str
85
101
lookup_kwarg_isnull : str
86
- lookup_val : Any
87
- lookup_val_isnull : Any
88
- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
102
+ lookup_val : str | None
103
+ lookup_val_isnull : str | None
89
104
90
105
class DateFieldListFilter (FieldListFilter ):
91
- field_generic : Any
92
- date_params : Any
93
- lookup_kwarg_since : Any
94
- lookup_kwarg_until : Any
95
- links : Any
96
- lookup_kwarg_isnull : Any
97
- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
106
+ field_generic : str
107
+ date_params : dict [str , str ]
108
+ lookup_kwarg_since : str
109
+ lookup_kwarg_until : str
110
+ links : tuple [tuple [_StrOrPromise , dict [str , bool | date | datetime ]], ...]
111
+ lookup_kwarg_isnull : str
98
112
99
113
class AllValuesFieldListFilter (FieldListFilter ):
100
- title : str
101
- used_parameters : dict [Any , Any ]
102
114
lookup_kwarg : str
103
115
lookup_kwarg_isnull : str
104
- lookup_val : Any
105
- lookup_val_isnull : Any
106
- empty_value_display : str
116
+ lookup_val : str | None
117
+ lookup_val_isnull : str | None
118
+ empty_value_display : SafeString
107
119
lookup_choices : QuerySet
108
- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
109
120
110
- class RelatedOnlyFieldListFilter (RelatedFieldListFilter ):
111
- lookup_kwarg : str
112
- lookup_kwarg_isnull : str
113
- lookup_val : Any
114
- lookup_val_isnull : Any
115
- title : str
116
- used_parameters : dict [Any , Any ]
121
+ class RelatedOnlyFieldListFilter (RelatedFieldListFilter ): ...
117
122
118
123
class EmptyFieldListFilter (FieldListFilter ):
119
124
lookup_kwarg : str
120
- lookup_val : Any
121
- def choices (self , changelist : Any ) -> Iterator [ dict [ str , Any ]] : ...
125
+ lookup_val : str | None
126
+ def get_lookup_condition (self ) -> Q : ...
0 commit comments