wcs: allow "in your care" cell to be used in frontoffice (#58851)

This commit is contained in:
Frédéric Péters 2022-02-11 10:08:16 +01:00
parent c7530e8813
commit 78394b3962
3 changed files with 33 additions and 5 deletions

View File

@ -35,6 +35,7 @@ from requests.exceptions import RequestException
from combo.data.library import register_cell_class
from combo.data.models import CellBase, Page
from combo.utils import requests
from combo.utils.misc import is_portal_agent
from .utils import get_wcs_json, get_wcs_services, is_wcs_enabled
@ -737,6 +738,7 @@ class WcsCareFormsCell(CategoriesAndWcsSiteValidityMixin, CategoriesFilteringMix
def get_cell_extra_context(self, context):
context = super().get_cell_extra_context(context)
context['is_portal_agent'] = is_portal_agent()
categories_filter = []
if self.categories:

View File

@ -17,7 +17,11 @@
{% for data in forms.data|dictsortreversed:"form_receipt_datetime" %}
<tr>
<td>{{ data.name }} {% if data.form_digest %}<br><small>{{ data.form_digest }}</small>{% endif %}</td>
{% if is_portal_agent %}
<td><a href="{{ data.form_url_backoffice }}">{{ data.form_number }}</a></td>
{% else %}
<td><a href="{{ data.form_url }}">{{ data.form_number }}</a></td>
{% endif %}
<td>{{ data.datetime|strptime:"%Y-%m-%d %H:%M:%S" }}</td>
<td>{{ data.last_update_time|strptime:"%Y-%m-%d %H:%M:%S" }}</td>
<td>{{ data.status }}</td>
@ -26,6 +30,8 @@
</tbody>
</table>
{% endif %}
{% if is_portal_agent %}
<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>
{% endif %}
{% endfor %}
{% endblock %}

View File

@ -86,10 +86,12 @@ WCS_USER_FORMS_DATA = [
WCS_FORMS_DATA = [
{
'form_receipt_datetime': '2019-10-17T16:46:03',
'form_url': '/foobar/1',
'form_url_backoffice': '/backoffice/management/foobar/1/',
},
{
'form_receipt_datetime': '2019-10-17T16:46:04',
'form_url': '/foobar/2',
'form_url_backoffice': '/backoffice/management/foobar/2/',
},
]
@ -433,7 +435,7 @@ def mocked_requests_send(request, **kwargs):
return MockedRequestResponse(content=json.dumps(data))
for elem in data:
for key in ['url', 'form_url_backoffice']:
for key in ['url', 'form_url', 'form_url_backoffice']:
if key not in elem:
continue
elem_url = elem[key]
@ -998,7 +1000,9 @@ def test_care_forms_cell_render(mock_send, context):
context['synchronous'] = True # to get fresh content
result = cell.render(context)
with mock.patch('combo.apps.wcs.models.is_portal_agent') as is_portal_agent:
is_portal_agent.return_value = True
result = cell.render(context)
assert 'http://127.0.0.1:8999/backoffice/management/foobar/1' in result
assert 'http://127.0.0.1:8999/backoffice/management/foobar/2' in result
@ -1007,6 +1011,16 @@ def test_care_forms_cell_render(mock_send, context):
assert 'http://127.0.0.2:8999/backoffice/management/foobar/2' in result
assert '"http://127.0.0.2:8999/backoffice/management/listing"' in result
with mock.patch('combo.apps.wcs.models.is_portal_agent') as is_portal_agent:
is_portal_agent.return_value = False
result = cell.render(context)
assert 'http://127.0.0.1:8999/foobar/1' in result
assert 'http://127.0.0.1:8999/foobar/2' in result
assert 'http://127.0.0.2:8999/foobar/1' in result
assert 'http://127.0.0.2:8999/foobar/2' in result
assert '/listing' not in result
data = cell.get_data(context)
assert 'default' in data
assert 'other' in data
@ -1021,7 +1035,9 @@ def test_care_forms_cell_render(mock_send, context):
# limit to a list of categories
cell.categories = {'data': ['default:test-3', 'other:test-4']}
result = cell.render(context)
with mock.patch('combo.apps.wcs.models.is_portal_agent') as is_portal_agent:
is_portal_agent.return_value = True
result = cell.render(context)
assert '"http://127.0.0.1:8999/backoffice/management/listing?category_slugs=test-3"' in result
assert '"http://127.0.0.2:8999/backoffice/management/listing?category_slugs=test-4"' in result
@ -1038,7 +1054,9 @@ def test_care_forms_cell_render(mock_send, context):
# limit to a single category
cell.categories = {'data': ['default:test-3']}
result = cell.render(context)
with mock.patch('combo.apps.wcs.models.is_portal_agent') as is_portal_agent:
is_portal_agent.return_value = True
result = cell.render(context)
assert '"http://127.0.0.1:8999/backoffice/management/listing?category_slugs=test-3"' in result
assert '"http://127.0.0.2:8999/backoffice/management/listing' not in result
@ -1173,7 +1191,9 @@ def test_care_forms_cell_render_single_site(mock_send, context):
context['synchronous'] = True # to get fresh content
result = cell.render(context)
with mock.patch('combo.apps.wcs.models.is_portal_agent') as is_portal_agent:
is_portal_agent.return_value = True
result = cell.render(context)
assert '"http://127.0.0.1:8999/backoffice/management/listing"' in result
assert '"http://127.0.0.2:8999/backoffice/management/listing"' not in result