From 700fb6aeae375b1d9645221e3e3b22c2a1560dc6 Mon Sep 17 00:00:00 2001 From: Thiago Bellini Ribeiro Date: Sun, 6 Oct 2024 21:18:05 -0300 Subject: [PATCH] fix: Check permissions methods expects any model, not a user model only (#270) Those checks were wrongly typed as it as those methods accept any model. It also makes no sense to limit the objects to the user as it's the user itself checking for a permission in a given object. Reference: https://docs.djangoproject.com/en/5.1/ref/contrib/auth/#available-authentication-backends --- django-stubs/contrib/auth/models.pyi | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/django-stubs/contrib/auth/models.pyi b/django-stubs/contrib/auth/models.pyi index 5d101ded2..a72273a27 100644 --- a/django-stubs/contrib/auth/models.pyi +++ b/django-stubs/contrib/auth/models.pyi @@ -56,14 +56,14 @@ class UserManager(BaseUserManager[_T]): username: str, email: str | None = ..., password: str | None = ..., - **extra_fields: Any + **extra_fields: Any, ) -> _T: ... def create_superuser( self, username: str, email: str | None, password: str | None, - **extra_fields: Any + **extra_fields: Any, ) -> _T: ... def with_perm( self, @@ -78,13 +78,11 @@ class PermissionsMixin(models.Model): is_superuser = models.BooleanField() groups = models.ManyToManyField[Group, Any](Group) user_permissions = models.ManyToManyField[Permission, Any](Permission) - def get_user_permissions(self, obj: _AnyUser | None = ...) -> set[str]: ... - def get_group_permissions(self, obj: _AnyUser | None = ...) -> set[str]: ... - def get_all_permissions(self, obj: _AnyUser | None = ...) -> set[str]: ... - def has_perm(self, perm: str, obj: _AnyUser | None = ...) -> bool: ... - def has_perms( - self, perm_list: Iterable[str], obj: _AnyUser | None = ... - ) -> bool: ... + def get_user_permissions(self, obj: Model | None = ...) -> set[str]: ... + def get_group_permissions(self, obj: Model | None = ...) -> set[str]: ... + def get_all_permissions(self, obj: Model | None = ...) -> set[str]: ... + def has_perm(self, perm: str, obj: Model | None = ...) -> bool: ... + def has_perms(self, perm_list: Iterable[str], obj: Model | None = ...) -> bool: ... def has_module_perms(self, app_label: str) -> bool: ... class AbstractUser(AbstractBaseUser, PermissionsMixin):