from pylint import checkers, interfaces from pylint.checkers import utils from pylint_django.__pkginfo__ import BASE_ID class AuthUserChecker(checkers.BaseChecker): __implements__ = (interfaces.IAstroidChecker,) name = "auth-user-checker" msgs = { f"E{BASE_ID}41": ( "Hard-coded 'auth.User'", "hard-coded-auth-user", "Don't hard-code the auth.User model. Use settings.AUTH_USER_MODEL instead!", ), f"E{BASE_ID}42": ( "User model imported from django.contrib.auth.models", "imported-auth-user", "Don't import django.contrib.auth.models.User model. Use django.contrib.auth.get_user_model() instead!", ), } @utils.check_messages("hard-coded-auth-user") def visit_const(self, node): # for now we don't check if the parent is a ForeignKey field # because the user model should not be hard-coded anywhere if node.value == "auth.User": self.add_message("hard-coded-auth-user", node=node) @utils.check_messages("imported-auth-user") def visit_importfrom(self, node): if node.modname == "django.contrib.auth.models": for imported_names in node.names: if imported_names[0] in ["*", "User"]: self.add_message("imported-auth-user", node=node) break
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
__init__.py | File | 802 B | 0644 |
|
auth_user.py | File | 1.36 KB | 0644 |
|
django_installed.py | File | 1.29 KB | 0644 |
|
foreign_key_strings.py | File | 6.17 KB | 0644 |
|
forms.py | File | 1.48 KB | 0644 |
|
json_response.py | File | 2.64 KB | 0644 |
|
migrations.py | File | 6.28 KB | 0644 |
|
models.py | File | 4.5 KB | 0644 |
|