summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/api.rst1
-rw-r--r--docs/api/flash.rst36
-rw-r--r--docs/api/interfaces.rst1
-rw-r--r--docs/index.rst1
-rw-r--r--docs/latexindex.rst2
-rw-r--r--docs/narr/flash.rst123
-rw-r--r--docs/narr/sessions.rst4
7 files changed, 168 insertions, 0 deletions
diff --git a/docs/api.rst b/docs/api.rst
index b650c8ded..4808a08b3 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -15,6 +15,7 @@ documentation is organized alphabetically by module name.
api/config
api/events
api/exceptions
+ api/flash
api/httpexceptions
api/i18n
api/interfaces
diff --git a/docs/api/flash.rst b/docs/api/flash.rst
new file mode 100644
index 000000000..94907958d
--- /dev/null
+++ b/docs/api/flash.rst
@@ -0,0 +1,36 @@
+.. _flash_module:
+
+:mod:`pyramid.flash`
+--------------------
+
+Flash Category Constants
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following attributes represent constants for use as flash messaging
+category values (see :ref:`flash_chapter`).
+
+.. attribute:: DEBUG
+
+ An alternate spelling for the string ``debug``. Represents development
+ debug messages.
+
+.. attribute:: INFO
+
+ An alternate spelling for the string ``info``. Represents messages that
+ are informational for user consumption.
+
+.. attribute:: SUCCESS
+
+ An alternate spelling for the string ``success``. Represents messages that
+ tell the user about a successful action.
+
+.. attribute:: WARNING
+
+ An alternate spelling for the string ``warning``. Represents messages
+ that tell the user about a condition that is not a success, but is neither
+ an error.
+
+.. attribute:: ERROR
+
+ An alternate spelling for the string ``success``. Represents messages
+ that tell the user about an unsuccessful action.
diff --git a/docs/api/interfaces.rst b/docs/api/interfaces.rst
index b3c14e5f7..dab64ba15 100644
--- a/docs/api/interfaces.rst
+++ b/docs/api/interfaces.rst
@@ -35,3 +35,4 @@ Other Interfaces
.. autointerface:: ITemplateRenderer
+ .. autointerface:: IFlashMessages
diff --git a/docs/index.rst b/docs/index.rst
index 4f484b0f9..fbf9de810 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -48,6 +48,7 @@ Narrative documentation in chapter form explaining how to use
narr/static
narr/webob
narr/sessions
+ narr/flash
narr/security
narr/hybrid
narr/i18n
diff --git a/docs/latexindex.rst b/docs/latexindex.rst
index f55e30aa8..6a1992ba4 100644
--- a/docs/latexindex.rst
+++ b/docs/latexindex.rst
@@ -41,6 +41,7 @@ Narrative Documentation
narr/static
narr/webob
narr/sessions
+ narr/flash
narr/security
narr/hybrid
narr/i18n
@@ -88,6 +89,7 @@ API Reference
api/config
api/events
api/exceptions
+ api/flash
api/httpexceptions
api/i18n
api/interfaces
diff --git a/docs/narr/flash.rst b/docs/narr/flash.rst
new file mode 100644
index 000000000..331793533
--- /dev/null
+++ b/docs/narr/flash.rst
@@ -0,0 +1,123 @@
+.. _flash_chapter:
+
+Flash Messages
+==============
+
+"Flash messages" are simply a queue of message strings stored in the
+:term:`session`. To use flash messaging, you must enable a :term:`session
+factory` as described in :ref:`using_the_default_session_factory` or
+:ref:`using_alternate_session_factories`.
+
+Flash messaging has two main uses: to display a status message only once to
+the user after performing an internal redirect, and to allow generic code to
+log messages for single-time display without having direct access to an HTML
+template. The user interface consists of two methods of the :term:`session`
+object.
+
+Using the ``session.flash`` Method
+----------------------------------
+
+To add a message to a flash queue, use a session object's ``flash`` method:
+
+.. code-block:: python
+ :linenos:
+
+ request.session.flash('mymessage')
+
+The ``.flash`` method appends a message to the queue, creating the queue if
+necessary. The message is not modified in any way.
+
+The ``category`` argument names a category or level. The library defines
+several default category names: ``debug``, ``info``, ``success``, ``warning``
+and ``error``. The default category level is ``info``.
+
+The ``queue_name`` argument allows you to define multiple message
+queues. This can be used to display different kinds of messages in different
+places on a page. You cam pass any name for your queue, but it must be a
+string. The default value is the empty string, which chooses the default
+queue. Each queue is independent, and can be popped by ``unflash``
+separately.
+
+Constant names for flash message category names are importable from the
+:mod:`pyramid.flash` module as ``DEBUG``, ``INFO``, ``SUCCESS``, ``WARNING``
+and ``ERROR``, which respectively name ``debug``, ``info``, ``success``,
+``warning`` and ``error`` strings. For example you can do this:
+
+.. code-block:: python
+
+ from pyramid import flash
+ request.session.flash(msg, flash.DEBUG)
+
+Or you can use the literal name ``debug``:
+
+.. code-block:: python
+
+ request.session.flash(msg, 'debug')
+
+Both examples do the same thing. The meanings of flash category names are
+detailed in :mod:`pyramid.flash`.
+
+To pop a particular queue of messages from the flash object, use the session
+object's ``unflash`` method.
+
+.. code-block:: python
+ :linenos:
+
+ >>> request.session.flash('info message', 'info')
+ >>> messages = request.session.unflash()
+ >>> messages['info']
+ ['info message']
+
+Using the ``session.unflash`` Method
+------------------------------------
+
+Once one or more messages has been added to a flash queue by the
+``session.flash`` API, the ``session.unflash`` API can be used to pop that
+queue and return it for use.
+
+For example some code that runs in a view callable might call the
+``session.flash`` API:
+
+.. code-block:: python
+ :linenos:
+
+ request.session.flash('mymessage')
+
+A corresponding ``session.unflash`` might be called on a subsequent request:
+
+.. code-block:: python
+ :linenos:
+
+ messages = request.session.unflash()
+
+Calling ``session.unflash`` again like above without a corresponding call to
+``session.flash`` will return an empty ``messages`` object, because the queue
+has already been popped.
+
+The ``messages`` object returned from ``unflash`` is a dictionary-like
+object. Its keys are category names, and its values are sequences of
+strings. For ease of use, the dict-like object returned by ``unflash`` isn't
+a "plain" dict: it's an object which has several helper methods, each named
+after a particular flash category level. These methods return all messages
+related to the category name:
+
+.. code-block:: python
+ :linenos:
+
+ >>> request.session.flash('debug message', 'debug')
+ >>> request.session.flash('info message', 'info')
+ >>> messages = request.session.unflash()
+ >>> info_messages = messages.debug()
+ ['debug message']
+ >>> info_messages = messages.info()
+ ['info message']
+
+The full API of the ``messages`` object returned by ``unflash`` is documented
+in :class:`pyramid.interfaces.IFlashMessages`.
+
+.. The ``ignore_duplicate`` flag tells whether to suppress duplicate
+.. messages. If true, and another message with identical text exists in the
+.. queue, don't add the new message. But if the existing message has a
+.. different category than the new message, change its category to match the
+.. new message.
+
diff --git a/docs/narr/sessions.rst b/docs/narr/sessions.rst
index 7a0a03384..de9add3b7 100644
--- a/docs/narr/sessions.rst
+++ b/docs/narr/sessions.rst
@@ -10,6 +10,8 @@ A :term:`session` is a namespace which is valid for some period of
continual activity that can be used to represent a user's interaction
with a web application.
+.. _using_the_default_session_factory:
+
Using The Default Session Factory
---------------------------------
@@ -131,6 +133,8 @@ Some gotchas:
single: pyramid_beaker
single: Beaker
+.. _using_alternate_session_factories:
+
Using Alternate Session Factories
---------------------------------