From 8196b1f265da31af04edc7b9347539a162c5553a Mon Sep 17 00:00:00 2001 From: TheAfroOfDoom Date: Fri, 3 Jun 2022 21:48:28 -0400 Subject: [PATCH 1/2] Set undefined env variables using CLI arguments Both `DJANGO_SETTINGS_MODULE` and `DJANGO_CONFIGURATION` are required for `django.configurations.importer` to install, else it throws an exception. If the `importer` is not installed, `django.setup()` fails on `configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)` when trying to access uninitialized settings. fixes #309 (https://github.com/PyCQA/pylint-django/issues/309#issuecomment-817098961) fixes #325 might relate to #362 --- CONTRIBUTORS.md | 1 + pylint_django/checkers/foreign_key_strings.py | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 07160217..5fdc3150 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -20,3 +20,4 @@ * [naquiroz](https://github.com/naquiroz) * [john-sandall](https://github.com/john-sandall) * [dineshtrivedi](https://github.com/dineshtrivedi) +* [TheAfroOfDoom](https://github.com/TheAfroOfDoom) diff --git a/pylint_django/checkers/foreign_key_strings.py b/pylint_django/checkers/foreign_key_strings.py index c145301e..c5400454 100644 --- a/pylint_django/checkers/foreign_key_strings.py +++ b/pylint_django/checkers/foreign_key_strings.py @@ -1,6 +1,9 @@ from __future__ import absolute_import +import os + import astroid +from configurations import importer from pylint.checkers import BaseChecker from pylint.checkers.utils import check_messages from pylint.interfaces import IAstroidChecker @@ -41,6 +44,15 @@ class ForeignKeyStringsChecker(BaseChecker): "help": "A module containing Django settings to be used while linting.", }, ), + ( + "django-configuration", + { + "default": None, + "type": "string", + "metavar": "", + "help": "The configuration for Django to use while linting.", + }, + ), ) msgs = { @@ -89,6 +101,32 @@ def open(self): try: import django # pylint: disable=import-outside-toplevel + if ( + os.environ.get("DJANGO_SETTINGS_MODULE") is None + or os.environ.get("DJANGO_CONFIGURATION") is None + ): + try: + os.environ.setdefault( + "DJANGO_SETTINGS_MODULE", + os.environ.get("DJANGO_SETTINGS_MODULE") + or self.config.django_settings_module, + ) + os.environ.setdefault( + "DJANGO_CONFIGURATION", + os.environ.get("DJANGO_CONFIGURATION") + or self.config.django_configuration, + ) + except TypeError as ex: + missing_module = "" + if self.config.django_settings_module is None: + missing_module = "DJANGO_SETTINGS_MODULE" + else: + missing_module = "DJANGO_CONFIGURATION" + raise RuntimeError( + f"{missing_module} required to initialize Django project settings" + ) from ex + importer.install() + django.setup() from django.apps import ( # noqa pylint: disable=import-outside-toplevel,unused-import apps, From ec3bcf6156788c97e26939f90a1d8aed8f56b755 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 4 Jun 2022 01:55:04 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pylint_django/checkers/foreign_key_strings.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/pylint_django/checkers/foreign_key_strings.py b/pylint_django/checkers/foreign_key_strings.py index c5400454..477c4958 100644 --- a/pylint_django/checkers/foreign_key_strings.py +++ b/pylint_django/checkers/foreign_key_strings.py @@ -101,20 +101,15 @@ def open(self): try: import django # pylint: disable=import-outside-toplevel - if ( - os.environ.get("DJANGO_SETTINGS_MODULE") is None - or os.environ.get("DJANGO_CONFIGURATION") is None - ): + if os.environ.get("DJANGO_SETTINGS_MODULE") is None or os.environ.get("DJANGO_CONFIGURATION") is None: try: os.environ.setdefault( "DJANGO_SETTINGS_MODULE", - os.environ.get("DJANGO_SETTINGS_MODULE") - or self.config.django_settings_module, + os.environ.get("DJANGO_SETTINGS_MODULE") or self.config.django_settings_module, ) os.environ.setdefault( "DJANGO_CONFIGURATION", - os.environ.get("DJANGO_CONFIGURATION") - or self.config.django_configuration, + os.environ.get("DJANGO_CONFIGURATION") or self.config.django_configuration, ) except TypeError as ex: missing_module = "" @@ -122,9 +117,7 @@ def open(self): missing_module = "DJANGO_SETTINGS_MODULE" else: missing_module = "DJANGO_CONFIGURATION" - raise RuntimeError( - f"{missing_module} required to initialize Django project settings" - ) from ex + raise RuntimeError(f"{missing_module} required to initialize Django project settings") from ex importer.install() django.setup() pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy