Projet

Général

Profil

0002-wcs-allow-in-your-care-cell-to-be-used-in-frontoffic.patch

Frédéric Péters, 11 février 2022 11:08

Télécharger (6,19 ko)

Voir les différences:

Subject: [PATCH 2/2] wcs: allow "in your care" cell to be used in frontoffice
 (#58851)

 combo/apps/wcs/models.py                      |  2 ++
 .../wcs/templates/combo/wcs/care_forms.html   |  6 ++++
 tests/test_wcs.py                             | 30 +++++++++++++++----
 3 files changed, 33 insertions(+), 5 deletions(-)
combo/apps/wcs/models.py
34 34
from combo.data.library import register_cell_class
35 35
from combo.data.models import CellBase, Page
36 36
from combo.utils import requests
37
from combo.utils.misc import is_portal_agent
37 38

  
38 39
from .utils import get_wcs_json, get_wcs_services, is_wcs_enabled
39 40

  
......
736 737

  
737 738
    def get_cell_extra_context(self, context):
738 739
        context = super().get_cell_extra_context(context)
740
        context['is_portal_agent'] = is_portal_agent()
739 741

  
740 742
        categories_filter = []
741 743
        if self.categories:
combo/apps/wcs/templates/combo/wcs/care_forms.html
17 17
    {% for data in forms.data|dictsortreversed:"form_receipt_datetime" %}
18 18
    <tr>
19 19
      <td>{{ data.name }} {% if data.form_digest %}<br><small>{{ data.form_digest }}</small>{% endif %}</td>
20
      {% if is_portal_agent %}
20 21
      <td><a href="{{ data.form_url_backoffice }}">{{ data.form_number }}</a></td>
22
      {% else %}
23
      <td><a href="{{ data.form_url }}">{{ data.form_number }}</a></td>
24
      {% endif %}
21 25
      <td>{{ data.datetime|strptime:"%Y-%m-%d %H:%M:%S" }}</td>
22 26
      <td>{{ data.last_update_time|strptime:"%Y-%m-%d %H:%M:%S" }}</td>
23 27
      <td>{{ data.status }}</td>
......
26 30
    </tbody>
27 31
  </table>
28 32
  {% endif %}
33
  {% if is_portal_agent %}
29 34
  <p><a class="pk-button" href="{{ forms.url }}backoffice/management/listing{% if forms.categories %}?category_slugs={{ forms.categories|join:"," }}{% endif %}">{% trans "See all forms" %}</a></p>
35
  {% endif %}
30 36
{% endfor %}
31 37
{% endblock %}
tests/test_wcs.py
86 86
WCS_FORMS_DATA = [
87 87
    {
88 88
        'form_receipt_datetime': '2019-10-17T16:46:03',
89
        'form_url': '/foobar/1',
89 90
        'form_url_backoffice': '/backoffice/management/foobar/1/',
90 91
    },
91 92
    {
92 93
        'form_receipt_datetime': '2019-10-17T16:46:04',
94
        'form_url': '/foobar/2',
93 95
        'form_url_backoffice': '/backoffice/management/foobar/2/',
94 96
    },
95 97
]
......
433 435
        return MockedRequestResponse(content=json.dumps(data))
434 436

  
435 437
    for elem in data:
436
        for key in ['url', 'form_url_backoffice']:
438
        for key in ['url', 'form_url', 'form_url_backoffice']:
437 439
            if key not in elem:
438 440
                continue
439 441
            elem_url = elem[key]
......
998 1000

  
999 1001
    context['synchronous'] = True  # to get fresh content
1000 1002

  
1001
    result = cell.render(context)
1003
    with mock.patch('combo.apps.wcs.models.is_portal_agent') as is_portal_agent:
1004
        is_portal_agent.return_value = True
1005
        result = cell.render(context)
1002 1006

  
1003 1007
    assert 'http://127.0.0.1:8999/backoffice/management/foobar/1' in result
1004 1008
    assert 'http://127.0.0.1:8999/backoffice/management/foobar/2' in result
......
1007 1011
    assert 'http://127.0.0.2:8999/backoffice/management/foobar/2' in result
1008 1012
    assert '"http://127.0.0.2:8999/backoffice/management/listing"' in result
1009 1013

  
1014
    with mock.patch('combo.apps.wcs.models.is_portal_agent') as is_portal_agent:
1015
        is_portal_agent.return_value = False
1016
        result = cell.render(context)
1017

  
1018
    assert 'http://127.0.0.1:8999/foobar/1' in result
1019
    assert 'http://127.0.0.1:8999/foobar/2' in result
1020
    assert 'http://127.0.0.2:8999/foobar/1' in result
1021
    assert 'http://127.0.0.2:8999/foobar/2' in result
1022
    assert '/listing' not in result
1023

  
1010 1024
    data = cell.get_data(context)
1011 1025
    assert 'default' in data
1012 1026
    assert 'other' in data
......
1021 1035
    # limit to a list of categories
1022 1036
    cell.categories = {'data': ['default:test-3', 'other:test-4']}
1023 1037

  
1024
    result = cell.render(context)
1038
    with mock.patch('combo.apps.wcs.models.is_portal_agent') as is_portal_agent:
1039
        is_portal_agent.return_value = True
1040
        result = cell.render(context)
1025 1041
    assert '"http://127.0.0.1:8999/backoffice/management/listing?category_slugs=test-3"' in result
1026 1042
    assert '"http://127.0.0.2:8999/backoffice/management/listing?category_slugs=test-4"' in result
1027 1043

  
......
1038 1054
    # limit to a single category
1039 1055
    cell.categories = {'data': ['default:test-3']}
1040 1056

  
1041
    result = cell.render(context)
1057
    with mock.patch('combo.apps.wcs.models.is_portal_agent') as is_portal_agent:
1058
        is_portal_agent.return_value = True
1059
        result = cell.render(context)
1042 1060
    assert '"http://127.0.0.1:8999/backoffice/management/listing?category_slugs=test-3"' in result
1043 1061
    assert '"http://127.0.0.2:8999/backoffice/management/listing' not in result
1044 1062

  
......
1173 1191

  
1174 1192
    context['synchronous'] = True  # to get fresh content
1175 1193

  
1176
    result = cell.render(context)
1194
    with mock.patch('combo.apps.wcs.models.is_portal_agent') as is_portal_agent:
1195
        is_portal_agent.return_value = True
1196
        result = cell.render(context)
1177 1197
    assert '"http://127.0.0.1:8999/backoffice/management/listing"' in result
1178 1198
    assert '"http://127.0.0.2:8999/backoffice/management/listing"' not in result
1179 1199

  
1180
-