diff --git a/django-stubs/contrib/auth/backends.pyi b/django-stubs/contrib/auth/backends.pyi index 5dfd3de..3dbd88d 100644 --- a/django-stubs/contrib/auth/backends.pyi +++ b/django-stubs/contrib/auth/backends.pyi @@ -1,7 +1,7 @@ from typing import Any, Optional, Set, Union from django.contrib.auth.base_user import AbstractBaseUser -from django.contrib.auth.models import AnonymousUser, User +from django.contrib.auth.models import AnonymousUser, User, Permission from django.db.models.base import Model @@ -9,17 +9,26 @@ _AnyUser = Union[Model, AnonymousUser] UserModel: Any -class ModelBackend: +class BaseBackend: def authenticate( self, request: Any, username: Optional[str] = ..., password: Optional[str] = ..., **kwargs: Any ) -> Optional[AbstractBaseUser]: ... - def user_can_authenticate(self, user: Optional[_AnyUser]) -> bool: ... + def get_user(self, user_id: int) -> Optional[AbstractBaseUser]: ... def get_user_permissions(self, user_obj: _AnyUser, obj: Optional[Model] = ...) -> Set[str]: ... def get_group_permissions(self, user_obj: _AnyUser, obj: Optional[Model] = ...) -> Set[str]: ... def get_all_permissions(self, user_obj: _AnyUser, obj: Optional[Model] = ...) -> Set[str]: ... def has_perm(self, user_obj: _AnyUser, perm: str, obj: Optional[Model] = ...) -> bool: ... + +class ModelBackend(BaseBackend): def has_module_perms(self, user_obj: _AnyUser, app_label: str) -> bool: ... - def get_user(self, user_id: int) -> AbstractBaseUser: ... + def user_can_authenticate(self, user: Optional[_AnyUser]) -> bool: ... + def with_perm( + self, + perm: Union[str, Permission], + is_active: bool = ..., + include_superusers: bool = ..., + obj: Optional[Model] = ..., + ): ... class AllowAllUsersModelBackend(ModelBackend): ... diff --git a/django-stubs/contrib/auth/models.pyi b/django-stubs/contrib/auth/models.pyi index 53a987d..2068c8a 100644 --- a/django-stubs/contrib/auth/models.pyi +++ b/django-stubs/contrib/auth/models.pyi @@ -1,5 +1,6 @@ from typing import Any, Collection, Optional, Set, Tuple, Type, TypeVar, Union +from django.contrib.auth.backends import ModelBackend from django.contrib.auth.base_user import AbstractBaseUser as AbstractBaseUser, BaseUserManager as BaseUserManager from django.contrib.auth.validators import UnicodeUsernameValidator from django.contrib.contenttypes.models import ContentType @@ -43,11 +44,20 @@ class UserManager(BaseUserManager[_T]): def create_superuser( self, username: str, email: Optional[str], password: Optional[str], **extra_fields: Any ) -> _T: ... + def with_perm( + self, + perm: Union[str, Permission], + is_active: bool = ..., + include_superusers: bool = ..., + backend: Optional[Union[Type[ModelBackend], str]] = ..., + obj: Optional[Model] = ..., + ): ... class PermissionsMixin(models.Model): is_superuser = models.BooleanField() groups = models.ManyToManyField(Group) user_permissions = models.ManyToManyField(Permission) + def get_user_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[str]: ... def get_group_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[str]: ... def get_all_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[str]: ... def has_perm(self, perm: str, obj: Optional[_AnyUser] = ...) -> bool: ... @@ -88,6 +98,7 @@ class AnonymousUser: def groups(self) -> EmptyManager: ... @property def user_permissions(self) -> EmptyManager: ... + def get_user_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[str]: ... def get_group_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[Any]: ... def get_all_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[str]: ... def has_perm(self, perm: str, obj: Optional[_AnyUser] = ...) -> bool: ... diff --git a/django-stubs/contrib/auth/views.pyi b/django-stubs/contrib/auth/views.pyi index 4c741f5..124c01c 100644 --- a/django-stubs/contrib/auth/views.pyi +++ b/django-stubs/contrib/auth/views.pyi @@ -55,6 +55,7 @@ class PasswordResetDoneView(PasswordContextMixin, TemplateView): class PasswordResetConfirmView(PasswordContextMixin, FormView): post_reset_login: bool = ... post_reset_login_backend: Any = ... + reset_url_token: str = ... title: Any = ... token_generator: Any = ... validlink: bool = ...