Projet

Général

Profil

0001-wcs-use-div-for-all-labels-and-values-61033.patch

Frédéric Péters, 24 janvier 2022 21:06

Télécharger (16,7 ko)

Voir les différences:

Subject: [PATCH] wcs: use <div> for all labels and values (#61033)

 .../combo/wcs/card-field-as-text.html         |   2 +-
 .../templates/combo/wcs/card-field-value.html |   4 +-
 combo/apps/wcs/templates/combo/wcs/card.html  |   4 +-
 tests/test_wcs.py                             | 109 +++++++++---------
 4 files changed, 58 insertions(+), 61 deletions(-)
combo/apps/wcs/templates/combo/wcs/card-field-as-text.html
1 1
{% if item.field_content == "label" or item.field_content == "label-and-value" %}
2
  <p class="label">{{ field.label }}</p>
2
  <div class="label">{{ field.label }}</div>
3 3
{% endif %}
4 4
{% if item.field_content == "value" or item.field_content == "label-and-value" %}
5 5
  {% include "combo/wcs/card-field-value.html" %}
combo/apps/wcs/templates/combo/wcs/card-field-value.html
2 2
{% if field.type == "text" and mode != 'inline' and value %}
3 3
<div class="value">{{ field|format_text:value }}</div>
4 4
{% else %}
5
{% if not mode == 'inline' %}<span class="value">{% endif %}
5
{% if not mode == 'inline' %}<div class="value">{% endif %}
6 6
{% if field.type == "date" %}
7 7
  {{ value|date }}
8 8
{% elif field.type == "bool" and value is not None %}
......
18 18
{% else %}
19 19
  {{ value|default:""|urlize }}
20 20
{% endif %}
21
{% if not mode == 'inline' %}</span>{% endif %}
21
{% if not mode == 'inline' %}</div>{% endif %}
22 22
{% endif %}
23 23
{% endspaceless %}
combo/apps/wcs/templates/combo/wcs/card.html
24 24
          {% elif item.display_mode == "subtitle" %}
25 25
            <h4>{{ value }}</h4>
26 26
          {% elif item.display_mode == "label" %}
27
            <p class="label">{{ value }}</p>
27
            <div class="label">{{ value }}</div>
28 28
          {% elif item.display_mode == "text" %}
29 29
            <div class="value">{{ value }}</div>
30 30
          {% endif %}
......
67 67
  {% if 'varname' in field and field.varname %}
68 68
  {% with card.fields|get:field.varname as value %}
69 69
  <div class="card--auto-field">
70
    <span class="label">{{ field.label }}</span>
70
    <div class="label">{{ field.label }}</div>
71 71
    {% include "combo/wcs/card-field-value.html" %}
72 72
  </div>
73 73
  {% endwith %}
tests/test_wcs.py
2344 2344
    mock_send.reset_mock()
2345 2345
    result = cell.render(context)
2346 2346
    assert '<h2>Card Model 1 - aa</h2>' in result
2347
    assert PyQuery(result).find('span.label:contains("Field A") + span').text() == 'a'
2348
    assert PyQuery(result).find('span.label:contains("Field B") + span').text() == 'yes'
2349
    assert PyQuery(result).find('span.label:contains("Field C") + span').text() == 'Sept. 28, 2020'
2350
    assert PyQuery(result).find('span.label:contains("Related") + span').text() == 'Foo Bar'
2347
    assert PyQuery(result).find('.label:contains("Field A") + .value').text() == 'a'
2348
    assert PyQuery(result).find('.label:contains("Field B") + .value').text() == 'yes'
2349
    assert PyQuery(result).find('.label:contains("Field C") + .value').text() == 'Sept. 28, 2020'
2350
    assert PyQuery(result).find('.label:contains("Related") + .value').text() == 'Foo Bar'
2351 2351
    assert 'related_raw' not in result
2352 2352
    assert 'related_structured' not in result
2353
    assert PyQuery(result).find('span.label:contains("Field D") + span a').text() == 'file.pdf'
2353
    assert PyQuery(result).find('.label:contains("Field D") + .value a').text() == 'file.pdf'
2354 2354

  
2355 2355
    context.pop('title')
2356 2356
    cell.title_type = 'manual'
......
2427 2427

  
2428 2428
    # field E is split in paragraphs
2429 2429
    assert (
2430
        PyQuery(result).find('span.label:contains("Field E") + div.value p:first-child').text().strip()
2430
        PyQuery(result).find('.label:contains("Field E") + .value p:first-child').text().strip()
2431 2431
        == 'lorem<strong>ipsum'
2432 2432
    )
2433 2433
    assert (
2434
        PyQuery(result).find('span.label:contains("Field E") + div.value p:last-child').text().strip()
2434
        PyQuery(result).find('.label:contains("Field E") + .value p:last-child').text().strip()
2435 2435
        == 'hello world'
2436 2436
    )
2437 2437

  
2438 2438
    # field F is put in a <pre>
2439 2439
    assert (
2440
        PyQuery(result).find('span.label:contains("Field F") + div.value pre').text()
2440
        PyQuery(result).find('.label:contains("Field F") + .value pre').text()
2441 2441
        == 'lorem<strong>ipsum hello world'
2442 2442
    )
2443 2443

  
......
2457 2457

  
2458 2458
    result = cell.render(context)
2459 2459

  
2460
    assert PyQuery(result).find('span.label:contains("Field G") + .value a').text() == 'test@localhost'
2460
    assert PyQuery(result).find('.label:contains("Field G") + .value a').text() == 'test@localhost'
2461 2461

  
2462 2462
    assert (
2463
        PyQuery(result).find('span.label:contains("Field G") + .value a').attr['href']
2464
        == 'mailto:test@localhost'
2463
        PyQuery(result).find('.label:contains("Field G") + .value a').attr['href'] == 'mailto:test@localhost'
2465 2464
    )
2466 2465

  
2467 2466

  
......
2481 2480

  
2482 2481
    result = cell.render(context)
2483 2482

  
2484
    assert (
2485
        PyQuery(result).find('span.label:contains("Field H") + .value a').text() == 'https://www.example.net/'
2486
    )
2483
    assert PyQuery(result).find('.label:contains("Field H") + .value a').text() == 'https://www.example.net/'
2487 2484

  
2488 2485
    assert (
2489
        PyQuery(result).find('span.label:contains("Field H") + .value a').attr['href']
2486
        PyQuery(result).find('.label:contains("Field H") + .value a').attr['href']
2490 2487
        == 'https://www.example.net/'
2491 2488
    )
2492 2489

  
......
2537 2534
    cell.custom_schema['cells'][0] = {'varname': 'fielda', 'field_content': 'label', 'display_mode': 'text'}
2538 2535
    cell.save()
2539 2536
    result = cell.render(context)
2540
    assert PyQuery(result).find('p.label').text() == 'Field A'
2537
    assert PyQuery(result).find('.label').text() == 'Field A'
2541 2538

  
2542 2539
    cell.custom_schema['cells'][0] = {'varname': 'fielda', 'field_content': 'value', 'display_mode': 'text'}
2543 2540
    cell.save()
2544 2541
    result = cell.render(context)
2545
    assert PyQuery(result).find('span.value').text() == 'a'
2542
    assert PyQuery(result).find('.value').text() == 'a'
2546 2543

  
2547 2544
    cell.custom_schema['cells'][0] = {
2548 2545
        'varname': 'fielda',
......
2551 2548
    }
2552 2549
    cell.save()
2553 2550
    result = cell.render(context)
2554
    assert PyQuery(result).find('p.label').text() == 'Field A'
2555
    assert PyQuery(result).find('span.value').text() == 'a'
2551
    assert PyQuery(result).find('.label').text() == 'Field A'
2552
    assert PyQuery(result).find('.value').text() == 'a'
2556 2553

  
2557 2554
    cell.custom_schema['cells'][0] = {
2558 2555
        'varname': 'fieldb',
......
2561 2558
    }
2562 2559
    cell.save()
2563 2560
    result = cell.render(context)
2564
    assert PyQuery(result).find('p.label').text() == 'Field B'
2565
    assert PyQuery(result).find('span.value').text() == 'yes'
2561
    assert PyQuery(result).find('.label').text() == 'Field B'
2562
    assert PyQuery(result).find('.value').text() == 'yes'
2566 2563

  
2567 2564
    cell.custom_schema['cells'][0] = {
2568 2565
        'varname': 'fieldc',
......
2571 2568
    }
2572 2569
    cell.save()
2573 2570
    result = cell.render(context)
2574
    assert PyQuery(result).find('p.label').text() == 'Field C'
2575
    assert PyQuery(result).find('span.value').text() == 'Sept. 28, 2020'
2571
    assert PyQuery(result).find('.label').text() == 'Field C'
2572
    assert PyQuery(result).find('.value').text() == 'Sept. 28, 2020'
2576 2573

  
2577 2574
    cell.custom_schema['cells'][0] = {
2578 2575
        'varname': 'related',
......
2581 2578
    }
2582 2579
    cell.save()
2583 2580
    result = cell.render(context)
2584
    assert PyQuery(result).find('p.label').text() == 'Related'
2585
    assert PyQuery(result).find('span.value').text() == 'Foo Bar'
2581
    assert PyQuery(result).find('.label').text() == 'Related'
2582
    assert PyQuery(result).find('.value').text() == 'Foo Bar'
2586 2583

  
2587 2584
    cell.custom_schema['cells'][0] = {
2588 2585
        'varname': 'fieldd',
......
2591 2588
    }
2592 2589
    cell.save()
2593 2590
    result = cell.render(context)
2594
    assert PyQuery(result).find('p.label').text() == 'Field D'
2595
    assert PyQuery(result).find('span.value').text() == 'file.pdf'
2591
    assert PyQuery(result).find('.label').text() == 'Field D'
2592
    assert PyQuery(result).find('.value').text() == 'file.pdf'
2596 2593

  
2597 2594
    cell.custom_schema['cells'][0] = {
2598 2595
        'varname': 'fielde',
......
2601 2598
    }
2602 2599
    cell.save()
2603 2600
    result = cell.render(context)
2604
    assert PyQuery(result).find('p.label').text() == 'Field E'
2605
    assert PyQuery(result).find('div.value p:first-child').text().strip() == 'lorem<strong>ipsum'
2606
    assert PyQuery(result).find('div.value p:last-child').text().strip() == 'hello world'
2601
    assert PyQuery(result).find('.label').text() == 'Field E'
2602
    assert PyQuery(result).find('.value p:first-child').text().strip() == 'lorem<strong>ipsum'
2603
    assert PyQuery(result).find('.value p:last-child').text().strip() == 'hello world'
2607 2604

  
2608 2605
    cell.custom_schema['cells'][0] = {
2609 2606
        'varname': 'fieldf',
......
2612 2609
    }
2613 2610
    cell.save()
2614 2611
    result = cell.render(context)
2615
    assert PyQuery(result).find('p.label').text() == 'Field F'
2616
    assert PyQuery(result).find('div.value pre').text() == 'lorem<strong>ipsum hello world'
2612
    assert PyQuery(result).find('.label').text() == 'Field F'
2613
    assert PyQuery(result).find('.value pre').text() == 'lorem<strong>ipsum hello world'
2617 2614

  
2618 2615
    cell.custom_schema['cells'][0] = {
2619 2616
        'varname': 'fieldg',
......
2622 2619
    }
2623 2620
    cell.save()
2624 2621
    result = cell.render(context)
2625
    assert PyQuery(result).find('p.label').text() == 'Field G'
2626
    assert PyQuery(result).find('span.value a').text() == 'test@localhost'
2627
    assert PyQuery(result).find('span.value a').attr['href'] == 'mailto:test@localhost'
2622
    assert PyQuery(result).find('.label').text() == 'Field G'
2623
    assert PyQuery(result).find('.value a').text() == 'test@localhost'
2624
    assert PyQuery(result).find('.value a').attr['href'] == 'mailto:test@localhost'
2628 2625

  
2629 2626
    cell.custom_schema['cells'][0] = {
2630 2627
        'varname': 'fieldh',
......
2633 2630
    }
2634 2631
    cell.save()
2635 2632
    result = cell.render(context)
2636
    assert PyQuery(result).find('p.label').text() == 'Field H'
2637
    assert PyQuery(result).find('span.value a').text() == 'https://www.example.net/'
2638
    assert PyQuery(result).find('span.value a').attr['href'] == 'https://www.example.net/'
2633
    assert PyQuery(result).find('.label').text() == 'Field H'
2634
    assert PyQuery(result).find('.value a').text() == 'https://www.example.net/'
2635
    assert PyQuery(result).find('.value a').attr['href'] == 'https://www.example.net/'
2639 2636

  
2640 2637

  
2641 2638
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
......
2665 2662
    context['synchronous'] = True  # to get fresh content
2666 2663

  
2667 2664
    result = cell.render(context)
2668
    assert PyQuery(result).find('p.label') == []
2669
    assert PyQuery(result).find('span.value') == []
2665
    assert PyQuery(result).find('.label') == []
2666
    assert PyQuery(result).find('.value') == []
2670 2667

  
2671 2668
    cell.custom_schema['cells'][0] = {
2672 2669
        'varname': 'empty',
......
2676 2673
    }
2677 2674
    cell.save()
2678 2675
    result = cell.render(context)
2679
    assert PyQuery(result).find('p.label').text() == 'Empty'
2680
    assert PyQuery(result).find('span.value').text() == ''
2676
    assert PyQuery(result).find('.label').text() == 'Empty'
2677
    assert PyQuery(result).find('.value').text() == ''
2681 2678

  
2682 2679
    cell.custom_schema['cells'][0] = {
2683 2680
        'varname': 'empty',
......
2687 2684
    }
2688 2685
    cell.save()
2689 2686
    result = cell.render(context)
2690
    assert PyQuery(result).find('p.label').text() == 'Empty'
2691
    assert PyQuery(result).find('span.value').text() == 'Custom text'
2687
    assert PyQuery(result).find('.label').text() == 'Empty'
2688
    assert PyQuery(result).find('.value').text() == 'Custom text'
2692 2689

  
2693 2690
    for field_content in ['label', 'value']:
2694 2691
        for display_mode in ['text', 'title', 'subtitle']:
......
2697 2694
            elif display_mode == 'subtitle':
2698 2695
                html_tag = 'h4'
2699 2696
            elif display_mode == 'text' and field_content == 'label':
2700
                html_tag = 'p.label'
2697
                html_tag = '.label'
2701 2698
            elif display_mode == 'text' and field_content == 'value':
2702
                html_tag = 'span.value'
2699
                html_tag = '.value'
2703 2700
            cell.custom_schema['cells'][0] = {
2704 2701
                'varname': 'empty',
2705 2702
                'field_content': field_content,
......
2780 2777
    }
2781 2778
    cell.save()
2782 2779
    result = cell.render(context)
2783
    assert PyQuery(result).find('p.label').text() == 'Foo bar baz'
2784
    assert PyQuery(result).find('div.value').text() == 'Foo,Bar'
2780
    assert PyQuery(result).find('.label').text() == 'Foo bar baz'
2781
    assert PyQuery(result).find('.value').text() == 'Foo,Bar'
2785 2782

  
2786 2783
    # test available context
2787 2784
    cell.card_ids = '11'
......
2799 2796
        kwargs={'page_pk': page.pk, 'cell_reference': cell.get_reference()},
2800 2797
    )
2801 2798
    cell_resp = app.get(cell_url + '?ctx=' + extra_ctx[0])
2802
    assert '<p class="label">Foo bar baz Xhttp://testserverY</p>' in cell_resp
2799
    assert PyQuery(cell_resp.text).find('.label').text() == 'Foo bar baz Xhttp://testserverY'
2803 2800

  
2804 2801
    cell.card_ids = '{{ cards|objects:"card_model_1"|getlist:"id"|join:"," }}'
2805 2802
    cell.custom_schema = {
......
2817 2814
    )
2818 2815
    for i in range(0, 3):
2819 2816
        cell_resp = app.get(cell_url + '?ctx=' + extra_ctx[i])
2820
        assert '<p class="label">Foo bar baz X%sY</p>' % i in cell_resp
2817
        assert PyQuery(cell_resp.text).find('.label').text() == 'Foo bar baz X%sY' % i
2821 2818

  
2822 2819
    # custom schema but empty
2823 2820
    cell.custom_schema = {'cells': []}
......
2853 2850
    context['synchronous'] = True  # to get fresh content
2854 2851

  
2855 2852
    result = cell.render(context)
2856
    assert PyQuery(result).find('div.value a').text() == 'a - Foo Bar'
2857
    assert PyQuery(result).find('div.value a').attr['href'] == '/foo/bar/42/'
2858
    assert PyQuery(result).find('div.value a').attr['class'] is None
2853
    assert PyQuery(result).find('.value a').text() == 'a - Foo Bar'
2854
    assert PyQuery(result).find('.value a').attr['href'] == '/foo/bar/42/'
2855
    assert PyQuery(result).find('.value a').attr['class'] is None
2859 2856

  
2860 2857
    cell.custom_schema['cells'][0]['display_mode'] = 'button'
2861 2858
    cell.save()
2862 2859
    result = cell.render(context)
2863
    assert PyQuery(result).find('div.value a').text() == 'a - Foo Bar'
2864
    assert PyQuery(result).find('div.value a').attr['href'] == '/foo/bar/42/'
2865
    assert PyQuery(result).find('div.value a').attr['class'] == 'pk-button'
2860
    assert PyQuery(result).find('.value a').text() == 'a - Foo Bar'
2861
    assert PyQuery(result).find('.value a').attr['href'] == '/foo/bar/42/'
2862
    assert PyQuery(result).find('.value a').attr['class'] == 'pk-button'
2866 2863

  
2867 2864
    cell.custom_schema['cells'][0][
2868 2865
        'url_template'
2869
-