From f4a82557bad67b47ef27ffa5a903351078463513 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Fri, 21 Apr 2017 15:52:51 +0200 Subject: [PATCH] don't display portfolio pick link if it's not present (#15944) --- tests/test_form_pages.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ wcs/qommon/form.py | 4 +++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index d1c85fd5..fcb0eeea 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -1742,6 +1742,54 @@ def test_form_captcha_and_no_validation_page(pub): assert 'Check values then click submit.' in resp.body assert 'form_captcha' in resp.body +def test_form_file_field_with_fargo(pub, fargo_url): + user = create_user(pub) + formdef = create_formdef() + file_field = fields.FileField(id='0', label='file') + formdef.fields = [file_field] + formdef.store() + formdef.data_class().wipe() + + assert file_field.allow_portfolio_picking == True + + resp = get_app(pub).get('/test/') + assert 'f0$file' in resp.body + assert 'fargo.js' not in resp.body + assert 'use-file-from-fargo' not in resp.body + + resp = login(get_app(pub), username='foo', password='foo').get('/test/') + assert 'f0$file' in resp.body + assert 'fargo.js' in resp.body + assert 'use-file-from-fargo' in resp.body + + file_field.allow_portfolio_picking = False + formdef.store() + + resp = login(get_app(pub), username='foo', password='foo').get('/test/') + assert 'f0$file' in resp.body + assert 'fargo.js' not in resp.body + assert 'use-file-from-fargo' not in resp.body + +def test_form_file_field_without_fargo(pub): + user = create_user(pub) + formdef = create_formdef() + file_field = fields.FileField(id='0', label='file') + formdef.fields = [file_field] + formdef.store() + formdef.data_class().wipe() + + assert file_field.allow_portfolio_picking == True + + resp = get_app(pub).get('/test/') + assert 'f0$file' in resp.body + assert 'fargo.js' not in resp.body + assert 'use-file-from-fargo' not in resp.body + + resp = login(get_app(pub), username='foo', password='foo').get('/test/') + assert 'f0$file' in resp.body + assert 'fargo.js' not in resp.body + assert 'use-file-from-fargo' not in resp.body + def test_form_file_field_submit(pub): formdef = create_formdef() formdef.fields = [fields.FileField(id='0', label='file')] diff --git a/wcs/qommon/form.py b/wcs/qommon/form.py index f6da6097..1c3834a3 100644 --- a/wcs/qommon/form.py +++ b/wcs/qommon/form.py @@ -61,6 +61,8 @@ from quixote.form import * from quixote.html import htmltext, htmltag, htmlescape, TemplateIO from quixote.util import randbytes +from wcs.portfolio import has_portfolio + from qommon import _, ngettext import misc from strftime import strftime @@ -624,7 +626,7 @@ class FileWithPreviewWidget(CompositeWidget): self.value = value self.readonly = kwargs.get('readonly') self.max_file_size = kwargs.pop('max_file_size', None) - self.allow_portfolio_picking = kwargs.pop('allow_portfolio_picking', True) + self.allow_portfolio_picking = has_portfolio() and kwargs.pop('allow_portfolio_picking', True) if self.max_file_size: self.max_file_size_bytes = FileSizeWidget.parse_file_size(self.max_file_size) self.add(HiddenWidget, 'token') -- 2.11.0