Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Rafael Monnerat
erp5
Commits
066bf86c
Commit
066bf86c
authored
Jun 09, 2020
by
Jérome Perrin
Browse files
Options
Browse Files
Download
Plain Diff
ERP5JS: Support None in listbox URL columns
See merge request
!1150
parents
316caef6
711c04bb
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
23 deletions
+53
-23
bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py
...rtal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py
+18
-18
bt5/erp5_hal_json_style/TestTemplateItem/portal_components/test.erp5.testHalJsonStyle.py
...plateItem/portal_components/test.erp5.testHalJsonStyle.py
+35
-5
No files found.
bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py
View file @
066bf86c
...
...
@@ -2015,25 +2015,25 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
url_parameter_dict
=
None
if
select
in
url_column_dict
:
# Check if we get URL parameters using listbox field `url_columns`
try
:
# XXX call on aq_base?
url_column_method
=
getattr
(
brain
,
url_column_dict
[
select
])
# Result of `url_column_method` must be a dictionary in the format
# {'command': <command_name, ex: 'raw', 'push_history'>,
# 'options': {'url': <Absolute URL>, 'jio_key': <Relative URL of object>, 'view': <id of the view>}}
url_parameter_dict
=
url_column_method
(
url_dict
=
True
,
brain
=
brain
,
selection
=
catalog_kw
[
'selection'
],
selection_name
=
catalog_kw
[
'selection_name'
],
column_id
=
select
)
except
AttributeError
:
# In case the URL method is invalid or empty, we expect to have no link
# for the column to maintain compatibility with old UI, hence we create
# an empty url_parameter_dict for these cases.
url_parameter_dict
=
{}
if
url_column_dict
[
select
]:
url_parameter_dict
=
{}
url_column_method_id
=
url_column_dict
[
select
]
if
url_column_method_id
:
try
:
url_column_method
=
getattr
(
brain
,
url_column_method_id
)
except
AttributeError
:
# In case the URL method is invalid or empty, we expect to have no link
# for the column to maintain compatibility with old UI, hence we create
# an empty url_parameter_dict for these cases.
log
(
"Invalid URL method {!s} on column {}"
.
format
(
url_column_dict
[
select
],
select
),
level
=
800
)
else
:
# Result of `url_column_method` must be a dictionary in the format
# {'command': <command_name, ex: 'raw', 'push_history'>,
# 'options': {'url': <Absolute URL>, 'jio_key': <Relative URL of object>, 'view': <id of the view>}}
url_parameter_dict
=
url_column_method
(
url_dict
=
True
,
brain
=
brain
,
selection
=
catalog_kw
[
'selection'
],
selection_name
=
catalog_kw
[
'selection_name'
],
column_id
=
select
)
else
:
if
not
is_getListItemUrlDict_calculated
:
# XXX If only available on brains, maybe better to call on aq_self
...
...
bt5/erp5_hal_json_style/TestTemplateItem/portal_components/test.erp5.testHalJsonStyle.py
View file @
066bf86c
...
...
@@ -1679,7 +1679,6 @@ return '%s/Base_viewMetadata?reset:int=1' % context.getRelativeUrl()
@changeSkin('
Hal
')
def test_getHateoasDocument_listbox_check_url_column_different_view(self):
self._makeDocument()
# pass custom list method which expect input arguments
self.portal.foo_module.FooModule_viewFooList.listbox.ListBox_setPropertyList(
field_url_columns = ['
modification_date
|
Base_getUrl
',])
...
...
@@ -1729,7 +1728,6 @@ return url
""")
@changeSkin('
Hal
')
def test_getHateoasDocument_listbox_check_url_column_absolute_url_with_field_rendering(self):
# pass custom list method which expect input arguments
self.portal.foo_module.FooModule_viewFooList.listbox.ListBox_setPropertyList(
field_url_columns = ['
modification_date
|
Base_getUrl
',])
...
...
@@ -1774,7 +1772,6 @@ return url
@changeSkin('
Hal
')
def test_getHateoasDocument_listbox_check_url_column_absolute_url_without_field_rendering(self):
self._makeDocument()
# pass custom list method which expect input arguments
self.portal.foo_module.FooModule_viewFooList.listbox.ListBox_setPropertyList(
field_url_columns = ['
title
|
Base_getUrl
',])
...
...
@@ -1816,7 +1813,6 @@ return url
@
changeSkin
(
'Hal'
)
def
test_getHateoasDocument_listbox_check_url_column_no_url
(
self
):
self
.
_makeDocument
()
# pass custom list method which expect input arguments
self
.
portal
.
foo_module
.
FooModule_viewFooList
.
listbox
.
ListBox_setPropertyList
(
field_url_columns
=
[
'title|'
,])
...
...
@@ -1843,6 +1839,41 @@ return url
self
.
portal
.
foo_module
.
FooModule_viewFooList
.
listbox
.
ListBox_setPropertyList
(
field_url_columns
=
''
)
@
simulate
(
'Base_getRequestUrl'
,
'*args, **kwargs'
,
'return "http://example.org/bar"'
)
@
simulate
(
'Base_getRequestHeader'
,
'*args, **kwargs'
,
'return "application/hal+json"'
)
@
changeSkin
(
'Hal'
)
def
test_getHateoasDocument_listbox_check_url_column_no_url_None
(
self
):
# variation of test_getHateoasDocument_listbox_check_url_column_no_url here the
# "no url" is done by setting `None` in TALES expression, instead of '' that get
# set by formulator `key | value` syntax.
self
.
_makeDocument
()
self
.
portal
.
foo_module
.
FooModule_viewFooList
.
listbox
.
manage_tales_xmlrpc
(
dict
(
url_columns
=
'python: [("title", None), ]'
))
fake_request
=
do_fake_request
(
"GET"
)
result
=
self
.
portal
.
web_site_module
.
hateoas
.
ERP5Document_getHateoas
(
REQUEST
=
fake_request
,
mode
=
"search"
,
list_method
=
'contentValues'
,
relative_url
=
'foo_module'
,
select_list
=
[
'id'
,
'title'
,
'creation_date'
,
'modification_date'
],
form_relative_url
=
'portal_skins/erp5_ui_test/FooModule_viewFooList/listbox'
)
result_dict
=
json
.
loads
(
result
)
# Test the listbox_uid parameter
self
.
assertEqual
(
result_dict
[
'_embedded'
][
'contents'
][
0
][
'listbox_uid:list'
][
'key'
],
'listbox_uid:list'
)
# Test the URL value
self
.
assertEqual
(
result_dict
[
'_embedded'
][
'contents'
][
0
][
'title'
][
'url_value'
],
{})
# Test if the value of the column is with right key
self
.
assertTrue
(
result_dict
[
'_embedded'
][
'contents'
][
0
][
'title'
][
'default'
])
# Reset the url_columns of the listbox
self
.
portal
.
foo_module
.
FooModule_viewFooList
.
listbox
.
manage_tales_xmlrpc
(
dict
(
url_columns
=
''
))
@
simulate
(
'Base_getRequestUrl'
,
'*args, **kwargs'
,
'return "http://example.org/bar"'
)
@
simulate
(
'Base_getRequestHeader'
,
'*args, **kwargs'
,
...
...
@@ -1861,7 +1892,6 @@ return url
@
changeSkin
(
'Hal'
)
def
test_getHateoasDocument_listbox_check_url_column_option_parameters
(
self
):
self
.
_makeDocument
()
# pass custom list method which expect input arguments
self
.
portal
.
foo_module
.
FooModule_viewFooList
.
listbox
.
ListBox_setPropertyList
(
field_url_columns
=
[
'title | Base_getUrl'
,])
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment