|
60 | 60 |
|
61 | 61 | from django.contrib import admin
|
62 | 62 | from django.db.models import QuerySet
|
63 |
| - from django.http import HttpRequest |
| 63 | + from django.http import FileResponse, HttpRequest, HttpResponse |
64 | 64 |
|
65 | 65 |
|
66 | 66 | class MyModel(models.Model): ...
|
|
73 | 73 | @admin.action(description="Some text here", permissions=["test"])
|
74 | 74 | def freestanding_action_fancy(modeladmin: "MyModelAdmin", request: HttpRequest, queryset: QuerySet[MyModel]) -> None: ...
|
75 | 75 |
|
| 76 | + @admin.action |
| 77 | + def freestanding_action_http_response(modeladmin: "MyModelAdmin", request: HttpRequest, queryset: QuerySet[MyModel]) -> HttpResponse: ... |
| 78 | +
|
| 79 | + @admin.action |
| 80 | + def freestanding_action_file_response(modeladmin: "MyModelAdmin", request: HttpRequest, queryset: QuerySet[MyModel]) -> FileResponse: ... |
| 81 | +
|
| 82 | + @admin.action # E: Value of type variable "_ModelAdmin" of "action" cannot be "int" |
| 83 | + def freestanding_action_invalid_bare(modeladmin: int, request: HttpRequest, queryset: QuerySet[MyModel]) -> None: ... |
| 84 | +
|
| 85 | + @admin.action(description="Some text here", permissions=["test"]) # E: Value of type variable "_ModelAdmin" of function cannot be "int" |
| 86 | + def freestanding_action_invalid_fancy(modeladmin: int, request: HttpRequest, queryset: QuerySet[MyModel]) -> None: ... |
76 | 87 |
|
77 | 88 | @admin.register(MyModel)
|
78 | 89 | class MyModelAdmin(admin.ModelAdmin[MyModel]):
|
79 |
| - actions = [freestanding_action_bare, freestanding_action_fancy, "method_action_bare", "method_action_fancy"] |
| 90 | + actions = [freestanding_action_bare, freestanding_action_fancy, "method_action_bare", "method_action_fancy", freestanding_action_http_response, freestanding_action_file_response] |
80 | 91 |
|
81 | 92 | @admin.action
|
82 | 93 | def method_action_bare(self, request: HttpRequest, queryset: QuerySet[MyModel]) -> None: ...
|
83 | 94 |
|
84 | 95 | @admin.action(description="Some text here", permissions=["test"])
|
85 | 96 | def method_action_fancy(self, request: HttpRequest, queryset: QuerySet[MyModel]) -> None: ...
|
86 | 97 |
|
| 98 | + @admin.action(description="Some text here", permissions=["test"]) |
| 99 | + def method_action_http_response(self, request: HttpRequest, queryset: QuerySet[MyModel]) -> HttpResponse: ... |
| 100 | +
|
| 101 | + @admin.action(description="Some text here", permissions=["test"]) |
| 102 | + def method_action_file_response(self, request: HttpRequest, queryset: QuerySet[MyModel]) -> FileResponse: ... |
| 103 | +
|
| 104 | + @admin.action # E: Value of type variable "_QuerySet" of "action" cannot be "int" |
| 105 | + def method_action_invalid_bare(self, request: HttpRequest, queryset: int) -> None: ... |
| 106 | +
|
| 107 | + @admin.action(description="Some text here", permissions=["test"]) # E: Value of type variable "_QuerySet" of function cannot be "int" |
| 108 | + def method_action_invalid_fancy(self, request: HttpRequest, queryset: int) -> None: ... |
| 109 | +
|
87 | 110 | def method(self) -> None:
|
88 | 111 | reveal_type(self.method_action_bare) # N: Revealed type is "def (django.http.request.HttpRequest, django.db.models.query._QuerySet[main.MyModel, main.MyModel])"
|
89 | 112 | reveal_type(self.method_action_fancy) # N: Revealed type is "def (django.http.request.HttpRequest, django.db.models.query._QuerySet[main.MyModel, main.MyModel])"
|
| 113 | + reveal_type(self.method_action_http_response) # N: Revealed type is "def (django.http.request.HttpRequest, django.db.models.query._QuerySet[main.MyModel, main.MyModel]) -> django.http.response.HttpResponse" |
| 114 | + reveal_type(self.method_action_file_response) # N: Revealed type is "def (django.http.request.HttpRequest, django.db.models.query._QuerySet[main.MyModel, main.MyModel]) -> django.http.response.FileResponse" |
0 commit comments