Projet

Général

Profil

0006-i18n-store-item-fields-display-value-in-original-lan.patch

Frédéric Péters, 26 décembre 2022 16:18

Télécharger (2,67 ko)

Voir les différences:

Subject: [PATCH 6/6] i18n: store item fields display value in original
 language (#71590)

 tests/form_pages/test_i18n.py | 7 +++++++
 wcs/fields.py                 | 6 ++++--
 wcs/qommon/publisher.py       | 2 ++
 3 files changed, 13 insertions(+), 2 deletions(-)
tests/form_pages/test_i18n.py
260 260
    # reload with different prefix
261 261
    resp = resp.test_app.get(resp.request.url.replace('/fr/', '/en/'))
262 262
    assert resp.pyquery('.field-type-item .value').text() == 'hello world'
263

  
264
    # check it's stored in original language in database
265
    assert formdef.data_class().select()[0].data == {
266
        '1': '1',
267
        '1_display': 'hello world',
268
        '1_structured': {'id': 1, 'text': 'hello world', 'foo': 'hello world'},
269
    }
wcs/fields.py
2398 2398
                        '%s_%s' % (real_data_source.get('value'), value)
2399 2399
                    ] = display_value
2400 2400
                return display_value
2401
        return self.get_display_value(value)
2401
        with get_publisher().with_language('default'):
2402
            return self.get_display_value(value)
2402 2403

  
2403 2404
    def store_structured_value(self, data, field_id, raise_on_error=False):
2404 2405
        data_source = data_sources.get_object(self.data_source)
......
2408 2409
        if data_source.type == 'jsonp':
2409 2410
            return
2410 2411

  
2411
        value = data_source.get_structured_value(data.get(field_id))
2412
        with get_publisher().with_language('default'):
2413
            value = data_source.get_structured_value(data.get(field_id))
2412 2414
        if value is None and raise_on_error:
2413 2415
            raise SetValueError('a datasource is unavailable')
2414 2416

  
wcs/qommon/publisher.py
375 375

  
376 376
    @contextmanager
377 377
    def with_language(self, language):
378
        if language == 'default':
379
            language = self.cfg.get('language', {}).get('language')
378 380
        if language is None or language == self.current_language:
379 381
            yield
380 382
        else:
381
-