Projet

Général

Profil

0001-wcs-method-to-get-migrated-custom_schema-58800.patch

Lauréline Guérin, 06 janvier 2022 18:00

Télécharger (5,31 ko)

Voir les différences:

Subject: [PATCH 1/3] wcs: method to get migrated custom_schema (#58800)

 combo/apps/wcs/forms.py  |  1 +
 combo/apps/wcs/models.py | 18 +++++++++++++++
 tests/test_wcs.py        | 50 ++++++++++++++++++++++++++++++++++++++--
 3 files changed, 67 insertions(+), 2 deletions(-)
combo/apps/wcs/forms.py
85 85
        self.fields['carddef_reference'].widget = forms.Select(choices=card_models)
86 86
        if self.instance.custom_schema:
87 87
            self.initial['customize_display'] = True
88
            self.initial['custom_schema'] = self.instance.get_custom_schema()
88 89
        if not self.instance.cached_json:
89 90
            del self.fields['customize_display']
90 91
            del self.fields['custom_schema']
combo/apps/wcs/models.py
1076 1076

  
1077 1077
        return WcsCardInfoCellForm
1078 1078

  
1079
    def get_custom_schema(self):
1080
        custom_schema = self.custom_schema or {}
1081

  
1082
        # migrate old formats
1083
        for cell in custom_schema.get('cells') or []:
1084
            if cell.get('varname') == '@custom@':
1085
                if cell.get('display_mode') == 'value':
1086
                    cell['display_mode'] = 'text'
1087
            elif not cell.get('field_content'):
1088
                if cell.get('display_mode') == 'title':
1089
                    cell['field_content'] = 'value'
1090
                else:
1091
                    cell['field_content'] = cell.get('display_mode') or 'value'
1092
                if cell.get('display_mode') in ['label', 'value', 'label-and-value']:
1093
                    cell['display_mode'] = 'text'
1094

  
1095
        return custom_schema
1096

  
1079 1097

  
1080 1098
@register_cell_class
1081 1099
class TrackingCodeInputCell(CellBase):
tests/test_wcs.py
1705 1705
    assert 'customize_display' not in form.initial
1706 1706
    assert form.initial['custom_schema'] == {}
1707 1707

  
1708
    cell.custom_schema = {'foo': 'bar'}
1708
    cell.custom_schema = {'cells': [{'varname': 'foo', 'display_mode': 'value'}]}
1709 1709
    cell.save()
1710 1710
    form = form_class(instance=cell)
1711 1711
    assert 'customize_display' in form.fields
1712 1712
    assert 'custom_schema' in form.fields
1713 1713
    assert form.initial['customize_display'] is True
1714
    assert form.initial['custom_schema'] == {'foo': 'bar'}
1714
    assert form.initial['custom_schema'] == {
1715
        'cells': [{'varname': 'foo', 'field_content': 'value', 'display_mode': 'text'}]
1716
    }
1715 1717

  
1716 1718
    app = login(app)
1717 1719
    resp = app.get('/manage/pages/%s/' % page.pk)
......
1722 1724
    assert cell.custom_schema == {}
1723 1725

  
1724 1726

  
1727
def test_card_cell_custom_schema_migration():
1728
    cell = WcsCardInfosCell()
1729

  
1730
    cell.custom_schema = {
1731
        'cells': [{'varname': 'some-field', 'display_mode': 'label', 'cell_size': 'foobar'}]
1732
    }
1733
    assert cell.get_custom_schema() == {
1734
        'cells': [
1735
            {'varname': 'some-field', 'field_content': 'label', 'display_mode': 'text', 'cell_size': 'foobar'}
1736
        ]
1737
    }
1738
    cell.custom_schema = {'cells': [{'varname': 'some-field', 'display_mode': 'value'}]}
1739
    assert cell.get_custom_schema() == {
1740
        'cells': [{'varname': 'some-field', 'field_content': 'value', 'display_mode': 'text'}]
1741
    }
1742
    cell.custom_schema = {'cells': [{'varname': 'some-field', 'display_mode': 'label-and-value'}]}
1743
    assert cell.get_custom_schema() == {
1744
        'cells': [{'varname': 'some-field', 'field_content': 'label-and-value', 'display_mode': 'text'}]
1745
    }
1746
    cell.custom_schema = {'cells': [{'varname': 'some-field', 'display_mode': 'title'}]}
1747
    assert cell.get_custom_schema() == {
1748
        'cells': [{'varname': 'some-field', 'field_content': 'value', 'display_mode': 'title'}]
1749
    }
1750

  
1751
    cell.custom_schema = {
1752
        'cells': [
1753
            {'varname': '@custom@', 'template': 'foobar', 'display_mode': 'label', 'cell_size': 'foobar'}
1754
        ]
1755
    }
1756
    assert cell.get_custom_schema() == {
1757
        'cells': [
1758
            {'varname': '@custom@', 'template': 'foobar', 'display_mode': 'label', 'cell_size': 'foobar'}
1759
        ]
1760
    }
1761
    cell.custom_schema = {'cells': [{'varname': '@custom@', 'template': 'foobar', 'display_mode': 'value'}]}
1762
    assert cell.get_custom_schema() == {
1763
        'cells': [{'varname': '@custom@', 'template': 'foobar', 'display_mode': 'text'}]
1764
    }
1765
    cell.custom_schema = {'cells': [{'varname': '@custom@', 'template': 'foobar', 'display_mode': 'title'}]}
1766
    assert cell.get_custom_schema() == {
1767
        'cells': [{'varname': '@custom@', 'template': 'foobar', 'display_mode': 'title'}]
1768
    }
1769

  
1770

  
1725 1771
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
1726 1772
def test_card_cell_save_cache(mock_send):
1727 1773
    page = Page.objects.create(title='xxx', slug='test_card_cell_save_cache', template_name='standard')
1728
-