[4.1.x] Refs #32987 -- Relaxed system check for template tag modules with the same name by turning into a warning.

Thanks Claude Paroz for the report.

Regression in 004b4620f6.
Backport of f71b0cf769 from main
This commit is contained in:
Mariusz Felisiak 2022-10-03 10:52:21 +02:00
parent f78314875f
commit 7843c43c49
4 changed files with 21 additions and 15 deletions

View File

@ -4,7 +4,7 @@ from collections import defaultdict
from django.conf import settings
from django.template.backends.django import get_template_tag_modules
from . import Error, Tags, register
from . import Error, Tags, Warning, register
E001 = Error(
"You have 'APP_DIRS': True in your TEMPLATES but also specify 'loaders' "
@ -15,7 +15,7 @@ E002 = Error(
"'string_if_invalid' in TEMPLATES OPTIONS must be a string but got: {} ({}).",
id="templates.E002",
)
E003 = Error(
W003 = Warning(
"{} is used for multiple template tag modules: {}",
id="templates.E003",
)
@ -63,12 +63,12 @@ def check_for_template_tags_with_the_same_name(app_configs, **kwargs):
for library_name, items in libraries.items():
if len(items) > 1:
errors.append(
Error(
E003.msg.format(
Warning(
W003.msg.format(
repr(library_name),
", ".join(repr(item) for item in sorted(items)),
),
id=E003.id,
id=W003.id,
)
)

View File

@ -550,6 +550,9 @@ configured:
:setting:`OPTIONS <TEMPLATES-OPTIONS>` must be a string but got: ``{value}``
(``{type}``).
* **templates.E003**:``<name>`` is used for multiple template tag modules:
``<module list>``. *This check was changed to* ``templates.W003`` *in Django
4.1.2*.
* **templates.W003**:``<name>`` is used for multiple template tag modules:
``<module list>``.
Translation

View File

@ -47,3 +47,6 @@ Bugfixes
* Reverted caching related managers for ``ForeignKey``, ``ManyToManyField``,
and ``GenericRelation`` that caused the incorrect refreshing of related
objects (:ticket:`33984`).
* Relaxed the system check added in Django 4.1 for the same name used for
multiple template tag modules to a warning (:ticket:`32987`).

View File

@ -1,10 +1,10 @@
from copy import copy, deepcopy
from django.core.checks import Error
from django.core.checks import Warning
from django.core.checks.templates import (
E001,
E002,
E003,
W003,
check_for_template_tags_with_the_same_name,
check_setting_app_dirs_loaders,
check_string_if_invalid_is_string,
@ -108,15 +108,15 @@ class CheckTemplateTagLibrariesWithSameName(SimpleTestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.error_same_tags = Error(
E003.msg.format(
cls.warning_same_tags = Warning(
W003.msg.format(
"'same_tags'",
"'check_framework.template_test_apps.same_tags_app_1."
"templatetags.same_tags', "
"'check_framework.template_test_apps.same_tags_app_2."
"templatetags.same_tags'",
),
id=E003.id,
id=W003.id,
)
@staticmethod
@ -139,7 +139,7 @@ class CheckTemplateTagLibrariesWithSameName(SimpleTestCase):
def test_template_tags_with_same_name(self):
self.assertEqual(
check_for_template_tags_with_the_same_name(None),
[self.error_same_tags],
[self.warning_same_tags],
)
def test_template_tags_with_same_library_name(self):
@ -155,7 +155,7 @@ class CheckTemplateTagLibrariesWithSameName(SimpleTestCase):
):
self.assertEqual(
check_for_template_tags_with_the_same_name(None),
[self.error_same_tags],
[self.warning_same_tags],
)
@override_settings(
@ -186,15 +186,15 @@ class CheckTemplateTagLibrariesWithSameName(SimpleTestCase):
self.assertEqual(
check_for_template_tags_with_the_same_name(None),
[
Error(
E003.msg.format(
Warning(
W003.msg.format(
"'same_tags'",
"'check_framework.template_test_apps.different_tags_app."
"templatetags.different_tags', "
"'check_framework.template_test_apps.same_tags_app_1."
"templatetags.same_tags'",
),
id=E003.id,
id=W003.id,
)
],
)