From 3d4f9c413e8b41b3d3ffa6775ac10e90cc02b4cb Mon Sep 17 00:00:00 2001 From: seroy Date: Tue, 18 Jul 2017 13:52:17 +0300 Subject: [PATCH 1/2] Fix non-valid HTML tags attributes --- .../templates/localized_fields/admin/widget.html | 4 ++-- .../templates/localized_fields/multiwidget.html | 2 +- localized_fields/widgets.py | 12 +++++++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/localized_fields/templates/localized_fields/admin/widget.html b/localized_fields/templates/localized_fields/admin/widget.html index 2c14e03..90b35ca 100644 --- a/localized_fields/templates/localized_fields/admin/widget.html +++ b/localized_fields/templates/localized_fields/admin/widget.html @@ -3,12 +3,12 @@ {% for widget in widget.subwidgets %} -
+
{% include widget.template_name %}
{% endfor %} diff --git a/localized_fields/templates/localized_fields/multiwidget.html b/localized_fields/templates/localized_fields/multiwidget.html index b9a5719..859b25c 100644 --- a/localized_fields/templates/localized_fields/multiwidget.html +++ b/localized_fields/templates/localized_fields/multiwidget.html @@ -1,4 +1,4 @@ {% for widget in widget.subwidgets %} - + {% include widget.template_name %} {% endfor %} diff --git a/localized_fields/widgets.py b/localized_fields/widgets.py index 9163fcf..b8ba44a 100644 --- a/localized_fields/widgets.py +++ b/localized_fields/widgets.py @@ -23,8 +23,9 @@ class LocalizedFieldWidget(forms.MultiWidget): super().__init__(initial_widgets, *args, **kwargs) for ((lang_code, lang_name), widget) in zip(settings.LANGUAGES, self.widgets): - widget.attrs['lang_code'] = lang_code - widget.attrs['lang_name'] = lang_name + widget.attrs['lang'] = lang_code + widget.lang_code = lang_code + widget.lang_name = lang_name def decompress(self, value: LocalizedValue) -> List[str]: """Decompresses the specified value so @@ -76,7 +77,12 @@ class LocalizedFieldWidget(forms.MultiWidget): else: widget_attrs = final_attrs widget_attrs = self.build_widget_attrs(widget, widget_value, widget_attrs) - subwidgets.append(widget.get_context(widget_name, widget_value, widget_attrs)['widget']) + widget_context = widget.get_context(widget_name, widget_value, widget_attrs)['widget'] + widget_context.update(dict( + lang_code=widget.lang_code, + lang_name=widget.lang_name + )) + subwidgets.append(widget_context) context['widget']['subwidgets'] = subwidgets return context From 928c4c624d1338c7fb64a55ab831fc50d836a87e Mon Sep 17 00:00:00 2001 From: seroy Date: Tue, 18 Jul 2017 13:54:53 +0300 Subject: [PATCH 2/2] Add test whether get_context contains 'lang_code' and 'lang_name' attribute --- tests/test_widget.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/test_widget.py b/tests/test_widget.py index 192032b..4653e5a 100644 --- a/tests/test_widget.py +++ b/tests/test_widget.py @@ -45,7 +45,7 @@ class LocalizedFieldWidgetTestCase(TestCase): assert not value @staticmethod - def test_get_context(): + def test_get_context_required(): """Tests whether the :see:get_context correctly handles 'required' attribute, separately for each subwidget.""" @@ -57,6 +57,21 @@ class LocalizedFieldWidgetTestCase(TestCase): assert context['widget']['subwidgets'][0]['attrs']['required'] assert 'required' not in context['widget']['subwidgets'][1]['attrs'] + @staticmethod + def test_get_context_langs(): + """Tests whether the :see:get_context contains 'lang_code' and + 'lang_name' attribute for each subwidget.""" + + widget = LocalizedFieldWidget() + context = widget.get_context(name='test', value=LocalizedValue(), + attrs=dict()) + subwidgets_context = context['widget']['subwidgets'] + for widget, context in zip(widget.widgets, subwidgets_context): + assert 'lang_code' in context + assert 'lang_name' in context + assert widget.lang_code == context['lang_code'] + assert widget.lang_name == context['lang_name'] + @staticmethod def test_render(): """Tests whether the :see:LocalizedFieldWidget correctly