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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
erp5
Commits
43ea8c0d
Commit
43ea8c0d
authored
Sep 01, 2021
by
Romain Courteaud
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
erp5_hal_json_style: keep group_by parameters in the select list
parent
2430e032
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
1 deletion
+29
-1
bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py
...rtal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py
+1
-1
bt5/erp5_hal_json_style/TestTemplateItem/portal_components/test.erp5.testHalJsonStyle.py
...plateItem/portal_components/test.erp5.testHalJsonStyle.py
+28
-0
No files found.
bt5/erp5_hal_json_style/SkinTemplateItem/portal_skins/erp5_hal_json_style/ERP5Document_getHateoas.py
View file @
43ea8c0d
...
@@ -1865,7 +1865,7 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
...
@@ -1865,7 +1865,7 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
catalog_kw
[
'group_by_list'
]
=
[
str
(
group_by
)]
catalog_kw
[
'group_by_list'
]
=
[
str
(
group_by
)]
# Include select, as user may want to count
# Include select, as user may want to count
# For now, consider only functions, for example, count(column_name) or COUNT(column name) or count(*)
# For now, consider only functions, for example, count(column_name) or COUNT(column name) or count(*)
catalog_kw
[
"select_list"
]
=
[
x
for
x
in
select_list
if
re
.
match
(
r"^\
D+
\(.*\
)$
", x
)]
catalog_kw
[
"select_list"
]
=
[
x
for
x
in
select_list
if
((
x
in
catalog_kw
[
'group_by_list'
])
or
re
.
match
(
r"^\
D+
\(.*\
)$
", x)
)]
if limit:
if limit:
catalog_kw["
limit
"] = limit
catalog_kw["
limit
"] = limit
...
...
bt5/erp5_hal_json_style/TestTemplateItem/portal_components/test.erp5.testHalJsonStyle.py
View file @
43ea8c0d
...
@@ -1455,6 +1455,34 @@ class TestERP5Document_getHateoas_mode_search(ERP5HALJSONStyleSkinsMixin):
...
@@ -1455,6 +1455,34 @@ class TestERP5Document_getHateoas_mode_search(ERP5HALJSONStyleSkinsMixin):
self.assertEqual(result_dict['
_embedded
']['
contents
'][0]["getTranslatedValidationStateTitle"], "Published")
self.assertEqual(result_dict['
_embedded
']['
contents
'][0]["getTranslatedValidationStateTitle"], "Published")
self.assertEqual(result_dict['
_embedded
']['
contents
'][0]["count(validation_state)"], 1)
self.assertEqual(result_dict['
_embedded
']['
contents
'][0]["count(validation_state)"], 1)
@simulate('
Base_getRequestUrl
', '
*
args
,
**
kwargs
',
'
return
"http://example.org/bar"')
@simulate('
Base_getRequestHeader
', '
*
args
,
**
kwargs
',
'
return
"application/hal+json"')
@changeSkin('
Hal
')
def test_getHateoas_select_list_keep_group_by(self):
fake_request = do_fake_request("GET")
result = self.portal.web_site_module.hateoas.ERP5Document_getHateoas(
REQUEST=fake_request,
mode="search",
query="id:=hateoas AND uid:=%s" % self.portal.web_site_module.hateoas.getUid(),
select_list=["count(*)",
"indexation_timestamp"],
group_by="indexation_timestamp"
)
self.assertEquals(fake_request.RESPONSE.status, 200)
self.assertEquals(fake_request.RESPONSE.getHeader('
Content
-
Type
'),
"application/hal+json"
)
result_dict = json.loads(result)
self.assertEqual(result_dict['
_links
']['
self
'], {"href": "http://example.org/bar"})
self.assertEqual(result_dict['
_select_list
'],
["count(*)", "indexation_timestamp"])
self.assertNotEqual(result_dict['
_embedded
']['
contents
'][0]["indexation_timestamp"], None)
self.assertEqual(result_dict['
_embedded
']['
contents
'][0]["count(*)"], 1)
@simulate('
Base_getRequestUrl
', '
*
args
,
**
kwargs
',
@simulate('
Base_getRequestUrl
', '
*
args
,
**
kwargs
',
'
return
"http://example.org/bar"')
'
return
"http://example.org/bar"')
@simulate('
Base_getRequestHeader
', '
*
args
,
**
kwargs
',
@simulate('
Base_getRequestHeader
', '
*
args
,
**
kwargs
',
...
...
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