| 1234567891011121314151617181920212223242526272829303132333435363738 |
- 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
|