Projet

Général

Profil

0001-data-inject-computed-variables-in-context-for-cell-c.patch

Lauréline Guérin, 27 juin 2022 16:45

Télécharger (4,28 ko)

Voir les différences:

Subject: [PATCH] data: inject computed variables in context for cell condition
 (#66632)

 combo/data/models.py |  5 ++---
 tests/test_wcs.py    | 36 +++++++++++++++++++++++++++++++-----
 2 files changed, 33 insertions(+), 8 deletions(-)
combo/data/models.py
1331 1331
        condition = self.condition
1332 1332
        if not condition:
1333 1333
            return True
1334
        context = RequestContext(request)
1335
        if condition in self.page.extra_variables:
1336
            condition = self.page.extra_variables[condition].strip('{ }')
1334
        context = self.page.get_extra_variables(request, {})
1335
        context = RequestContext(request, context)
1337 1336
        try:
1338 1337
            return Template('{%% if %s %%}OK{%% endif %%}' % condition).render(context) == 'OK'
1339 1338
        except (TemplateSyntaxError, VariableDoesNotExist):
tests/test_wcs.py
430 430
        return WCS_CARDS_CUSTOM_VIEW_DATA
431 431
    m_list = re.match(r'/api/cards/([a-z0-9_]+)/list', url)
432 432
    if m_list:
433
        return WCS_CARDS_DATA[m_list.group(1)]
433
        return WCS_CARDS_DATA.get(m_list.group(1)) or []
434 434
    return []
435 435

  
436 436

  
......
4249 4249
    resp = app.get(page.get_online_url())
4250 4250
    assert len(resp.context.get('cells') or []) == 0
4251 4251

  
4252
    page.extra_variables = {'var1': 'cards|objects:"card_model_1"|getlist:"id"|list'}
4252
    page.extra_variables = {'var1': '{{ cards|objects:"card_model_1"|getlist:"id"|list }}'}
4253 4253
    page.save()
4254 4254
    cell.condition = 'var1'
4255 4255
    cell.save()
4256 4256
    resp = app.get(page.get_online_url())
4257 4257
    assert len(resp.context['cells']) == 1
4258 4258

  
4259
    page.extra_variables = {'var1': 'cards|objects:"card_model_1"|getlist:"id"|get:42'}
4259
    page.extra_variables = {'var1': '{{ cards|objects:"card_model_1"|getlist:"id"|get:42|default:"" }}'}
4260 4260
    page.save()
4261 4261
    resp = app.get(page.get_online_url())
4262 4262
    assert len(resp.context.get('cells') or []) == 0
4263 4263

  
4264
    page.extra_variables = {
4265
        'var1': '{{ cards|objects:"unknown"|first|get:"id"|default:"" }}',
4266
        'var2': '{{ cards|objects:"card_model_1"|first|get:"id"|default:"" }}',
4267
    }
4268
    page.save()
4269
    cell.condition = 'not var1'
4270
    cell.save()
4271
    resp = app.get(page.get_online_url())
4272
    assert len(resp.context['cells']) == 1
4273
    cell.condition = 'var2'
4274
    cell.save()
4275
    resp = app.get(page.get_online_url())
4276
    assert len(resp.context['cells']) == 1
4277
    cell.condition = 'not var2'
4278
    cell.save()
4279
    resp = app.get(page.get_online_url())
4280
    assert len(resp.context.get('cells') or []) == 0
4281
    cell.condition = 'not var1 and not var2'
4282
    cell.save()
4283
    resp = app.get(page.get_online_url())
4284
    assert len(resp.context.get('cells') or []) == 0
4285
    cell.condition = 'not var1 and var2'
4286
    cell.save()
4287
    resp = app.get(page.get_online_url())
4288
    assert len(resp.context['cells']) == 1
4289

  
4264 4290

  
4265 4291
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
4266 4292
def test_link_list_cell_condition(mock_send, nocache, app):
......
4286 4312
    assert len(resp.context['cells']) == 1
4287 4313
    assert 'Example Site' not in resp
4288 4314

  
4289
    page.extra_variables = {'var1': 'cards|objects:"card_model_1"|getlist:"id"'}
4315
    page.extra_variables = {'var1': '{{ cards|objects:"card_model_1"|getlist:"id"|list }}'}
4290 4316
    page.save()
4291 4317
    link_cell.condition = 'var1'
4292 4318
    link_cell.save()
......
4294 4320
    assert len(resp.context['cells']) == 1
4295 4321
    assert 'Example Site' in resp
4296 4322

  
4297
    page.extra_variables = {'var1': 'cards|objects:"card_model_1"|getlist:"id"|get:42'}
4323
    page.extra_variables = {'var1': '{{ cards|objects:"card_model_1"|getlist:"id"|get:42|default:"" }}'}
4298 4324
    page.save()
4299 4325
    resp = app.get(page.get_online_url())
4300 4326
    assert len(resp.context['cells']) == 1
4301
-