mirror of
https://github.com/davidhalter/django-stubs.git
synced 2025-12-10 22:11:54 +08:00
change get_user to use a protocol requiring a session (#522)
* change get_user to use a protocol requiring a session define a "_HasSession" protocol, and update contrib.auth.get_user to use it get_user only requires a session field, and idiomatic django testing frequently calls get_user with a TestClient * run black * use union for get_user instead of a protocol * create tests for get_user typechecking * properly import test client
This commit is contained in:
@@ -7,12 +7,11 @@ from django.core.handlers.wsgi import WSGIRequest
|
|||||||
from django.db.models.base import Model
|
from django.db.models.base import Model
|
||||||
from django.db.models.options import Options
|
from django.db.models.options import Options
|
||||||
from django.http.request import HttpRequest
|
from django.http.request import HttpRequest
|
||||||
|
from django.test.client import Client
|
||||||
|
|
||||||
from .signals import (
|
from .signals import user_logged_in as user_logged_in
|
||||||
user_logged_in as user_logged_in,
|
from .signals import user_logged_out as user_logged_out
|
||||||
user_logged_out as user_logged_out,
|
from .signals import user_login_failed as user_login_failed
|
||||||
user_login_failed as user_login_failed,
|
|
||||||
)
|
|
||||||
|
|
||||||
SESSION_KEY: str
|
SESSION_KEY: str
|
||||||
BACKEND_SESSION_KEY: str
|
BACKEND_SESSION_KEY: str
|
||||||
@@ -27,7 +26,7 @@ def login(
|
|||||||
) -> None: ...
|
) -> None: ...
|
||||||
def logout(request: HttpRequest) -> None: ...
|
def logout(request: HttpRequest) -> None: ...
|
||||||
def get_user_model() -> Type[Model]: ...
|
def get_user_model() -> Type[Model]: ...
|
||||||
def get_user(request: HttpRequest) -> Union[AbstractBaseUser, AnonymousUser]: ...
|
def get_user(request: Union[HttpRequest, Client]) -> Union[AbstractBaseUser, AnonymousUser]: ...
|
||||||
def get_permission_codename(action: str, opts: Options) -> str: ...
|
def get_permission_codename(action: str, opts: Options) -> str: ...
|
||||||
def update_session_auth_hash(request: HttpRequest, user: AbstractBaseUser) -> None: ...
|
def update_session_auth_hash(request: HttpRequest, user: AbstractBaseUser) -> None: ...
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from typing_extensions import Literal
|
|||||||
|
|
||||||
from django.http import HttpRequest, HttpResponse
|
from django.http import HttpRequest, HttpResponse
|
||||||
|
|
||||||
_FormT = TypeVar('_FormT', bound=BaseForm)
|
_FormT = TypeVar("_FormT", bound=BaseForm)
|
||||||
|
|
||||||
class AbstractFormMixin(ContextMixin):
|
class AbstractFormMixin(ContextMixin):
|
||||||
initial: Dict[str, Any] = ...
|
initial: Dict[str, Any] = ...
|
||||||
|
|||||||
15
tests/typecheck/contrib/auth/test_misc.yml
Normal file
15
tests/typecheck/contrib/auth/test_misc.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
- case: test_request_session
|
||||||
|
main: |
|
||||||
|
from django.contrib.auth import get_user
|
||||||
|
from django.contrib.sessions.middleware import SessionMiddleware
|
||||||
|
from django.http import HttpRequest
|
||||||
|
|
||||||
|
request = HttpRequest()
|
||||||
|
SessionMiddleware().process_request(request)
|
||||||
|
get_user(request)
|
||||||
|
- case: test_client_session
|
||||||
|
main: |
|
||||||
|
from django.contrib.auth import get_user
|
||||||
|
from django.test import Client
|
||||||
|
|
||||||
|
get_user(Client())
|
||||||
Reference in New Issue
Block a user