mirror of
https://github.com/davidhalter/django-stubs.git
synced 2025-12-08 13:04:47 +08:00
add proper stubs for django.contrib.auth.models model fields (#170)
This commit is contained in:
@@ -13,14 +13,12 @@ class BaseUserManager(models.Manager[_T]):
|
|||||||
def get_by_natural_key(self, username: Optional[str]) -> _T: ...
|
def get_by_natural_key(self, username: Optional[str]) -> _T: ...
|
||||||
|
|
||||||
class AbstractBaseUser(models.Model):
|
class AbstractBaseUser(models.Model):
|
||||||
password: models.CharField = ...
|
password = models.CharField(max_length=128)
|
||||||
last_login: models.DateTimeField = ...
|
last_login = models.DateTimeField(blank=True, null=True)
|
||||||
is_active: models.BooleanField = ...
|
|
||||||
REQUIRED_FIELDS: List[str] = ...
|
REQUIRED_FIELDS: List[str] = ...
|
||||||
class Meta: ...
|
class Meta: ...
|
||||||
def get_username(self) -> str: ...
|
def get_username(self) -> str: ...
|
||||||
def clean(self) -> None: ...
|
|
||||||
def save(self, *args: Any, **kwargs: Any) -> None: ...
|
|
||||||
def natural_key(self) -> Tuple[str]: ...
|
def natural_key(self) -> Tuple[str]: ...
|
||||||
@property
|
@property
|
||||||
def is_anonymous(self) -> bool: ...
|
def is_anonymous(self) -> bool: ...
|
||||||
|
|||||||
@@ -15,17 +15,17 @@ class PermissionManager(models.Manager):
|
|||||||
|
|
||||||
class Permission(models.Model):
|
class Permission(models.Model):
|
||||||
content_type_id: int
|
content_type_id: int
|
||||||
name: models.CharField = ...
|
name = models.CharField(max_length=255)
|
||||||
content_type: models.ForeignKey = models.ForeignKey(ContentType, on_delete=models.CASCADE)
|
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
|
||||||
codename: models.CharField = ...
|
codename = models.CharField(max_length=100)
|
||||||
def natural_key(self) -> Tuple[str, str, str]: ...
|
def natural_key(self) -> Tuple[str, str, str]: ...
|
||||||
|
|
||||||
class GroupManager(models.Manager):
|
class GroupManager(models.Manager):
|
||||||
def get_by_natural_key(self, name: str) -> Group: ...
|
def get_by_natural_key(self, name: str) -> Group: ...
|
||||||
|
|
||||||
class Group(models.Model):
|
class Group(models.Model):
|
||||||
name: models.CharField = ...
|
name = models.CharField(max_length=150)
|
||||||
permissions: models.ManyToManyField = models.ManyToManyField(Permission)
|
permissions = models.ManyToManyField(Permission)
|
||||||
def natural_key(self): ...
|
def natural_key(self): ...
|
||||||
|
|
||||||
_T = TypeVar("_T", bound=Model)
|
_T = TypeVar("_T", bound=Model)
|
||||||
@@ -39,7 +39,7 @@ class UserManager(BaseUserManager[_T]):
|
|||||||
) -> _T: ...
|
) -> _T: ...
|
||||||
|
|
||||||
class PermissionsMixin(models.Model):
|
class PermissionsMixin(models.Model):
|
||||||
is_superuser: models.BooleanField = ...
|
is_superuser = models.BooleanField()
|
||||||
groups: models.ManyToManyField = models.ManyToManyField(Group)
|
groups: models.ManyToManyField = models.ManyToManyField(Group)
|
||||||
user_permissions: models.ManyToManyField = models.ManyToManyField(Permission)
|
user_permissions: models.ManyToManyField = models.ManyToManyField(Permission)
|
||||||
def get_group_permissions(self, obj: None = ...) -> Set[str]: ...
|
def get_group_permissions(self, obj: None = ...) -> Set[str]: ...
|
||||||
@@ -50,15 +50,17 @@ class PermissionsMixin(models.Model):
|
|||||||
|
|
||||||
class AbstractUser(AbstractBaseUser, PermissionsMixin): # type: ignore
|
class AbstractUser(AbstractBaseUser, PermissionsMixin): # type: ignore
|
||||||
username_validator: UnicodeUsernameValidator = ...
|
username_validator: UnicodeUsernameValidator = ...
|
||||||
username: models.CharField = ...
|
|
||||||
first_name: models.CharField = ...
|
username = models.CharField(max_length=150)
|
||||||
last_name: models.CharField = ...
|
first_name = models.CharField(max_length=30, blank=True)
|
||||||
email: models.EmailField = ...
|
last_name = models.CharField(max_length=150, blank=True)
|
||||||
is_staff: models.BooleanField = ...
|
email = models.EmailField(blank=True)
|
||||||
date_joined: models.DateTimeField = ...
|
is_staff = models.BooleanField()
|
||||||
|
is_active = models.BooleanField()
|
||||||
|
date_joined = models.DateTimeField()
|
||||||
|
|
||||||
EMAIL_FIELD: str = ...
|
EMAIL_FIELD: str = ...
|
||||||
USERNAME_FIELD: str = ...
|
USERNAME_FIELD: str = ...
|
||||||
def clean(self) -> None: ...
|
|
||||||
def get_full_name(self) -> str: ...
|
def get_full_name(self) -> str: ...
|
||||||
def get_short_name(self) -> str: ...
|
def get_short_name(self) -> str: ...
|
||||||
def email_user(self, subject: str, message: str, from_email: str = ..., **kwargs: Any) -> None: ...
|
def email_user(self, subject: str, message: str, from_email: str = ..., **kwargs: Any) -> None: ...
|
||||||
|
|||||||
22
test-data/typecheck/models/test_contrib_models.yml
Normal file
22
test-data/typecheck/models/test_contrib_models.yml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
- case: contrib_auth_model_fields
|
||||||
|
main: |
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
reveal_type(User().username) # N: Revealed type is 'builtins.str*'
|
||||||
|
reveal_type(User().password) # N: Revealed type is 'builtins.str*'
|
||||||
|
reveal_type(User().first_name) # N: Revealed type is 'builtins.str*'
|
||||||
|
reveal_type(User().last_name) # N: Revealed type is 'builtins.str*'
|
||||||
|
reveal_type(User().email) # N: Revealed type is 'builtins.str*'
|
||||||
|
reveal_type(User().is_staff) # N: Revealed type is 'builtins.bool*'
|
||||||
|
reveal_type(User().is_active) # N: Revealed type is 'builtins.bool*'
|
||||||
|
reveal_type(User().date_joined) # N: Revealed type is 'datetime.datetime*'
|
||||||
|
reveal_type(User().last_login) # N: Revealed type is 'Union[datetime.datetime, None]'
|
||||||
|
|
||||||
|
from django.contrib.auth.models import Permission
|
||||||
|
reveal_type(Permission().name) # N: Revealed type is 'builtins.str*'
|
||||||
|
reveal_type(Permission().codename) # N: Revealed type is 'builtins.str*'
|
||||||
|
|
||||||
|
from django.contrib.auth.models import PermissionsMixin
|
||||||
|
reveal_type(PermissionsMixin().is_superuser) # N: Revealed type is 'builtins.bool*'
|
||||||
|
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
|
reveal_type(Group().name) # N: Revealed type is 'builtins.str*'
|
||||||
Reference in New Issue
Block a user