Skip to content

Commit f849395

Browse files
Merge pull request #481 from plone/412-get_view-request-not-required
Do not require the request parameter to be specified
2 parents 3183dac + 2bda193 commit f849395

7 files changed

Lines changed: 39 additions & 13 deletions

File tree

docs/content.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,22 @@ view = api.content.get_view(
497497
%
498498
% self.assertEqual(view.__name__, u'plone')
499499

500+
Since version `2.0.0`, the `request` argument can be omitted.
501+
In that case the global request will be used.
502+
503+
```python
504+
from plone import api
505+
portal = api.portal.get()
506+
view = api.content.get_view(
507+
name='plone',
508+
context=portal['about'],
509+
)
510+
```
511+
512+
% invisible-code-block: python
513+
%
514+
% self.assertEqual(view.__name__, u'plone')
515+
500516
## Further reading
501517

502518
For more information on possible flags and usage options please see the full {ref}`plone-api-content` specification.

docs/portal.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,20 @@ api.portal.show_message(message='Blueberries!', request=request)
271271
% self.assertEqual(len(show), 1)
272272
% self.assertTrue('Blueberries!' in show[0].message)
273273

274+
Since version `2.0.0`, the `request` argument can be omitted.
275+
In that case the global request will be used.
276+
277+
```python
278+
api.portal.show_message(message='Cranberries!')
279+
```
280+
281+
% invisible-code-block: python
282+
%
283+
% from Products.statusmessages.interfaces import IStatusMessage
284+
% messages = IStatusMessage(request)
285+
% show = messages.show()
286+
% self.assertTrue('Cranberries!' in show[-1].message)
287+
274288
(portal-get-registry-record-example)=
275289

276290
## Get plone.app.registry record

news/412.feature

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Do not require the request parameter to be specified. If not specify fallback to the global request [ale-rt]

src/plone/api/content.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from zope.component import getMultiAdapter
1414
from zope.component import getSiteManager
1515
from zope.container.interfaces import INameChooser
16+
from zope.globalrequest import getRequest
1617
from zope.interface import Interface
1718
from zope.interface import providedBy
1819

@@ -495,7 +496,7 @@ def enable_roles_acquisition(obj=None):
495496
plone_utils.acquireLocalRoles(obj, status=1)
496497

497498

498-
@required_parameters("name", "context", "request")
499+
@required_parameters("name", "context")
499500
def get_view(name=None, context=None, request=None):
500501
"""Get a BrowserView object.
501502
@@ -510,6 +511,8 @@ def get_view(name=None, context=None, request=None):
510511
:class:`~plone.api.exc.InvalidParameterError`
511512
:Example: :ref:`content-get-view-example`
512513
"""
514+
if request is None:
515+
request = getRequest()
513516
# We do not use exceptionhandling to detect if the requested view is
514517
# available, because the __init__ of said view will contain
515518
# errors in client code.

src/plone/api/portal.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ def get_localized_time(datetime=None, long_format=False, time_only=False):
232232
)
233233

234234

235-
@required_parameters("message", "request")
235+
@required_parameters("message")
236236
def show_message(message=None, request=None, type="info"):
237237
"""Display a status message.
238238
@@ -246,6 +246,8 @@ def show_message(message=None, request=None, type="info"):
246246
ValueError
247247
:Example: :ref:`portal-show-message-example`
248248
"""
249+
if request is None:
250+
request = getRequest()
249251
IStatusMessage(request).add(message, type=type)
250252

251253

src/plone/api/tests/test_content.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1330,13 +1330,6 @@ def test_get_view_constraints(self):
13301330
request=request,
13311331
)
13321332

1333-
# request is required
1334-
with self.assertRaises(MissingParameterError):
1335-
api.content.get_view(
1336-
name="plone",
1337-
context=self.blog,
1338-
)
1339-
13401333
def test_get_view(self):
13411334
"""Test the view."""
13421335
request = self.layer["request"]

src/plone/api/tests/test_portal.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -451,13 +451,10 @@ def test_show_message_constraints(self):
451451
with self.assertRaises(MissingParameterError):
452452
portal.show_message()
453453

454-
# message and request are required
454+
# message is a required parameter
455455
with self.assertRaises(MissingParameterError):
456456
portal.show_message(request=self.layer["request"])
457457

458-
with self.assertRaises(MissingParameterError):
459-
portal.show_message(message="Beer is brewing.")
460-
461458
def test_show_message(self):
462459
"""Test to see if message appears."""
463460

0 commit comments

Comments
 (0)