Skip to content

Commit eba3f6c

Browse files
hannsemanmkurnikov
authored andcommitted
Update django.contrib.auth with Django 3.0 compatibility (#256)
* Add support for BaseBackend * Add User.get_user_permissions * Add support for UserManager.with_perm * Add support for reset_url_token
1 parent 5a45544 commit eba3f6c

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

django-stubs/contrib/auth/backends.pyi

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,34 @@
11
from typing import Any, Optional, Set, Union
22

33
from django.contrib.auth.base_user import AbstractBaseUser
4-
from django.contrib.auth.models import AnonymousUser, User
4+
from django.contrib.auth.models import AnonymousUser, User, Permission
55

66
from django.db.models.base import Model
77

88
_AnyUser = Union[Model, AnonymousUser]
99

1010
UserModel: Any
1111

12-
class ModelBackend:
12+
class BaseBackend:
1313
def authenticate(
1414
self, request: Any, username: Optional[str] = ..., password: Optional[str] = ..., **kwargs: Any
1515
) -> Optional[AbstractBaseUser]: ...
16-
def user_can_authenticate(self, user: Optional[_AnyUser]) -> bool: ...
16+
def get_user(self, user_id: int) -> Optional[AbstractBaseUser]: ...
1717
def get_user_permissions(self, user_obj: _AnyUser, obj: Optional[Model] = ...) -> Set[str]: ...
1818
def get_group_permissions(self, user_obj: _AnyUser, obj: Optional[Model] = ...) -> Set[str]: ...
1919
def get_all_permissions(self, user_obj: _AnyUser, obj: Optional[Model] = ...) -> Set[str]: ...
2020
def has_perm(self, user_obj: _AnyUser, perm: str, obj: Optional[Model] = ...) -> bool: ...
21+
22+
class ModelBackend(BaseBackend):
2123
def has_module_perms(self, user_obj: _AnyUser, app_label: str) -> bool: ...
22-
def get_user(self, user_id: int) -> AbstractBaseUser: ...
24+
def user_can_authenticate(self, user: Optional[_AnyUser]) -> bool: ...
25+
def with_perm(
26+
self,
27+
perm: Union[str, Permission],
28+
is_active: bool = ...,
29+
include_superusers: bool = ...,
30+
obj: Optional[Model] = ...,
31+
): ...
2332

2433
class AllowAllUsersModelBackend(ModelBackend): ...
2534

django-stubs/contrib/auth/models.pyi

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from typing import Any, Collection, Optional, Set, Tuple, Type, TypeVar, Union
22

3+
from django.contrib.auth.backends import ModelBackend
34
from django.contrib.auth.base_user import AbstractBaseUser as AbstractBaseUser, BaseUserManager as BaseUserManager
45
from django.contrib.auth.validators import UnicodeUsernameValidator
56
from django.contrib.contenttypes.models import ContentType
@@ -43,11 +44,20 @@ class UserManager(BaseUserManager[_T]):
4344
def create_superuser(
4445
self, username: str, email: Optional[str], password: Optional[str], **extra_fields: Any
4546
) -> _T: ...
47+
def with_perm(
48+
self,
49+
perm: Union[str, Permission],
50+
is_active: bool = ...,
51+
include_superusers: bool = ...,
52+
backend: Optional[Union[Type[ModelBackend], str]] = ...,
53+
obj: Optional[Model] = ...,
54+
): ...
4655

4756
class PermissionsMixin(models.Model):
4857
is_superuser = models.BooleanField()
4958
groups = models.ManyToManyField(Group)
5059
user_permissions = models.ManyToManyField(Permission)
60+
def get_user_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[str]: ...
5161
def get_group_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[str]: ...
5262
def get_all_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[str]: ...
5363
def has_perm(self, perm: str, obj: Optional[_AnyUser] = ...) -> bool: ...
@@ -88,6 +98,7 @@ class AnonymousUser:
8898
def groups(self) -> EmptyManager: ...
8999
@property
90100
def user_permissions(self) -> EmptyManager: ...
101+
def get_user_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[str]: ...
91102
def get_group_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[Any]: ...
92103
def get_all_permissions(self, obj: Optional[_AnyUser] = ...) -> Set[str]: ...
93104
def has_perm(self, perm: str, obj: Optional[_AnyUser] = ...) -> bool: ...

django-stubs/contrib/auth/views.pyi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class PasswordResetDoneView(PasswordContextMixin, TemplateView):
5555
class PasswordResetConfirmView(PasswordContextMixin, FormView):
5656
post_reset_login: bool = ...
5757
post_reset_login_backend: Any = ...
58+
reset_url_token: str = ...
5859
title: Any = ...
5960
token_generator: Any = ...
6061
validlink: bool = ...

0 commit comments

Comments
 (0)