Skip to content

Commit

Permalink
Make request arguments optional.
Browse files Browse the repository at this point in the history
  • Loading branch information
jaroel committed Feb 8, 2015
1 parent 52ddd43 commit 4f59894
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 20 deletions.
3 changes: 3 additions & 0 deletions docs/CHANGES.rst
Expand Up @@ -4,6 +4,9 @@ Changelog
1.3.3 (unreleased)
------------------

- Made the request argument optional.
[jaroel]

- Make Products.Archetypes dependency optional. Fixes #197
[jaroel]

Expand Down
6 changes: 1 addition & 5 deletions docs/content.rst
Expand Up @@ -358,11 +358,7 @@ To get a :class:`BrowserView` for your content, use :meth:`api.content.get_view`
from plone import api
portal = api.portal.get()
view = api.content.get_view(
name='plone',
context=portal['about'],
request=request,
)
view = api.content.get_view(name='plone', context=portal['about'])
.. invisible-code-block: python
Expand Down
2 changes: 1 addition & 1 deletion docs/portal.rst
Expand Up @@ -184,7 +184,7 @@ With :meth:`api.portal.show_message` you can show a notification message to the
.. code-block:: python
from plone import api
api.portal.show_message(message='Blueberries!', request=request)
api.portal.show_message(message='Blueberries!')
.. invisible-code-block: python
Expand Down
8 changes: 6 additions & 2 deletions src/plone/api/content.py
Expand Up @@ -14,6 +14,7 @@
from zope.component import getMultiAdapter
from zope.component import getSiteManager
from zope.container.interfaces import INameChooser
from zope.globalrequest import getRequest
from zope.interface import Interface
from zope.interface import providedBy

Expand Down Expand Up @@ -425,22 +426,25 @@ def transition(obj=None, transition=None, to_state=None):
)


@required_parameters('name', 'context', 'request')
@required_parameters('name', 'context')
def get_view(name=None, context=None, request=None):
"""Get a BrowserView object.
:param name: [required] Name of the view.
:type name: string
:param context: [required] Context on which to get view.
:type context: context object
:param request: [required] Request on which to get view.
:param request: Request on which to get view.
:type request: request object
:raises:
:class:`~plone.api.exc.MissingParameterError`,
:class:`~plone.api.exc.InvalidParameterError`
:Example: :ref:`content_get_view_example`
"""

if request is None:
request = getRequest()

try:
return getMultiAdapter((context, request), name=name)
except:
Expand Down
4 changes: 3 additions & 1 deletion src/plone/api/portal.py
Expand Up @@ -205,7 +205,7 @@ def get_localized_time(datetime=None, long_format=False, time_only=False):
)


@required_parameters('message', 'request')
@required_parameters('message')
def show_message(message=None, request=None, type='info'):
"""Display a status message.
Expand All @@ -219,6 +219,8 @@ def show_message(message=None, request=None, type='info'):
ValueError
:Example: :ref:`portal_show_message_example`
"""
if request is None:
request = getRequest()
IStatusMessage(request).add(message, type=type)


Expand Down
13 changes: 6 additions & 7 deletions src/plone/api/tests/test_content.py
Expand Up @@ -708,13 +708,6 @@ def test_get_view_constraints(self):
request=request,
)

# request is required
with self.assertRaises(MissingParameterError):
api.content.get_view(
name='plone',
context=self.blog,
)

def test_get_view(self):
"""Test the view."""
request = self.layer['request']
Expand All @@ -737,6 +730,12 @@ def test_get_view(self):
self.assertEqual(view.__name__, 'plone_context_state')
self.assertEqual(aq_base(view.canonical_object()), aq_base(self.blog))

def test_get_view_implicit_request(self):
"""Test that get_view gets a request if none is passed in."""
request = self.layer['request']
view = api.content.get_view(name='plone', context=self.blog)
self.assertEqual(view.request, request)

def test_get_uuid(self):
"""Test getting a content item's UUID."""
from plone.api.exc import MissingParameterError
Expand Down
15 changes: 11 additions & 4 deletions src/plone/api/tests/test_portal.py
Expand Up @@ -347,13 +347,10 @@ def test_show_message_constraints(self):
with self.assertRaises(MissingParameterError):
portal.show_message()

# message and request are required
# message is required
with self.assertRaises(MissingParameterError):
portal.show_message(request=self.layer['request'])

with self.assertRaises(MissingParameterError):
portal.show_message(message='Beer is brewing.')

def test_show_message(self):
"""Test to see if message appears."""

Expand All @@ -372,6 +369,16 @@ def test_show_message(self):
self.assertEqual(show[0].message, 'One')
self.assertEqual(show[1].message, 'Two')

def test_show_message_implicit_request(self):
from Products.statusmessages.interfaces import IStatusMessage
request = self.layer['request']

portal.show_message(message='Blueberries!')
messages = IStatusMessage(request)
show = messages.show()
self.assertEqual(len(show), 1)
self.assertIn('Blueberries!', show[0].message)

def test_get_navigation_root(self):
"""Test to see if the navigation_root is returned."""

Expand Down

0 comments on commit 4f59894

Please sign in to comment.