Fixed #18394 -- Added error for invalid JavaScriptCatalog packages
Thanks Tim Graham for the review.
This commit is contained in:
parent
41e02ab368
commit
23142eea85
|
@ -232,6 +232,11 @@ class JavaScriptCatalog(View):
|
|||
def get_paths(self, packages):
|
||||
allowable_packages = {app_config.name: app_config for app_config in apps.get_app_configs()}
|
||||
app_configs = [allowable_packages[p] for p in packages if p in allowable_packages]
|
||||
if len(app_configs) < len(packages):
|
||||
excluded = [p for p in packages if p not in allowable_packages]
|
||||
raise ValueError(
|
||||
'Invalid package(s) provided to JavaScriptCatalog: %s' % ','.join(excluded)
|
||||
)
|
||||
# paths of requested packages
|
||||
return [os.path.join(app.path, 'locale') for app in app_configs]
|
||||
|
||||
|
|
|
@ -420,6 +420,10 @@ Miscellaneous
|
|||
|
||||
Book.objects.iterator(chunk_size=100)
|
||||
|
||||
* Providing unknown package names in the ``packages`` argument of the
|
||||
:class:`~django.views.i18n.JavaScriptCatalog` view now raises ``ValueError``
|
||||
instead of passing silently.
|
||||
|
||||
.. _deprecated-features-2.0:
|
||||
|
||||
Features deprecated in 2.0
|
||||
|
|
|
@ -4,14 +4,15 @@ from os import path
|
|||
|
||||
from django.conf import settings
|
||||
from django.test import (
|
||||
SimpleTestCase, TestCase, modify_settings, override_settings,
|
||||
RequestFactory, SimpleTestCase, TestCase, modify_settings,
|
||||
override_settings,
|
||||
)
|
||||
from django.test.selenium import SeleniumTestCase
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import (
|
||||
LANGUAGE_SESSION_KEY, get_language, override,
|
||||
)
|
||||
from django.views.i18n import get_formats
|
||||
from django.views.i18n import JavaScriptCatalog, get_formats
|
||||
|
||||
from ..urls import locale_dir
|
||||
|
||||
|
@ -397,6 +398,16 @@ class I18NViewTests(SimpleTestCase):
|
|||
response = self.client.get('/jsi18n/')
|
||||
self.assertContains(response, 'este texto de app3 debe ser traducido')
|
||||
|
||||
def test_i18n_unknown_package_error(self):
|
||||
view = JavaScriptCatalog.as_view()
|
||||
request = RequestFactory().get('/')
|
||||
msg = 'Invalid package(s) provided to JavaScriptCatalog: unknown_package'
|
||||
with self.assertRaisesMessage(ValueError, msg):
|
||||
view(request, packages='unknown_package')
|
||||
msg += ',unknown_package2'
|
||||
with self.assertRaisesMessage(ValueError, msg):
|
||||
view(request, packages='unknown_package+unknown_package2')
|
||||
|
||||
|
||||
@override_settings(ROOT_URLCONF='view_tests.urls')
|
||||
class I18nSeleniumTests(SeleniumTestCase):
|
||||
|
|
Loading…
Reference in New Issue