summaryrefslogtreecommitdiff
path: root/docs/tutorials/wiki
diff options
context:
space:
mode:
authorPatricio Paez <pp@pp.com.mx>2012-03-12 14:32:54 -0700
committerPatricio Paez <pp@pp.com.mx>2012-03-12 14:32:54 -0700
commitbb754144b1c0d3c75156385ea8c6e20ddda6d430 (patch)
tree5ff46129103d9413812ee6821e76c3b134b093a2 /docs/tutorials/wiki
parent352f6adf5e55b1c2f4a0332056a6ef31984b2d30 (diff)
downloadpyramid-bb754144b1c0d3c75156385ea8c6e20ddda6d430.tar.gz
pyramid-bb754144b1c0d3c75156385ea8c6e20ddda6d430.tar.bz2
pyramid-bb754144b1c0d3c75156385ea8c6e20ddda6d430.zip
Added the Design chapter on both wiki tutorials
Diffstat (limited to 'docs/tutorials/wiki')
-rw-r--r--docs/tutorials/wiki/design.rst134
-rw-r--r--docs/tutorials/wiki/index.rst1
2 files changed, 135 insertions, 0 deletions
diff --git a/docs/tutorials/wiki/design.rst b/docs/tutorials/wiki/design.rst
new file mode 100644
index 000000000..ea7076f60
--- /dev/null
+++ b/docs/tutorials/wiki/design.rst
@@ -0,0 +1,134 @@
+==========
+Design
+==========
+
+Following is a quick overview of our wiki application, to help
+us understand the changes that we will be doing next in our
+default files generated by the paster scafffold.
+
+Overall
+-------
+
+We choose to use ``reStructuredText`` markup in the wiki text.
+Translation from reStructuredText to HTML is provided by the
+widely used docutils Python module. We will add this module
+in the dependency list on the project ``setup.py`` file.
+
+Models
+------
+
+The root resource, named *Wiki*, will be a mapping of wiki page
+names to page resources. The page resources will be instances
+of a *Page* class and they store the text content.
+
+URLs like ``/PageName`` will be traversed using Wiki[
+*PageName* ] => page, and the context that results is the page
+resource of an existing page.
+
+To add a page to the wiki, a new instance of the page resource
+is created and its name and reference are added to the Wiki
+mapping.
+
+A page named *FrontPage* containing the text *This is the front
+page*, will be created when the storage is initialized, and will
+be used as the wiki home page.
+
+Views
+-----
+
+There will be four views to handle the normal operations of
+viewing, editing and adding wiki pages. Two additional views
+will handle the login and logout tasks related to security.
+
+Security
+--------
+
+- USERS, a dictionary mapping users names to their
+ corresponding passwords.
+- GROUPS, a dictionary mapping user names to a
+ list of groups they belong to.
+- *groupfinder*, an *authorization callback* that looks up
+ USERS and GROUPS. It will be provided in a new
+ *security.py* file.
+- An :term:`ACL` is attached to the root resource. Each
+ row below details an :term:`ACE`:
+
+ +----------+----------------+----------------+
+ | Action | Principal | Permission |
+ +==========+================+================+
+ | Allow | Everyone | View |
+ +----------+----------------+----------------+
+ | Allow | group:editors | Edit |
+ +----------+----------------+----------------+
+
+- Permission declarations for the views.
+
+
+Summary
+-------
+
+The URL, context, actions, template and permission associated to each view are
+listed in the following table:
+
++----------------------+-------------+-----------------+-----------------------+------------+------------+
+| URL | View | Context | Action | Template | Permission |
+| | | | | | |
++======================+=============+=================+=======================+============+============+
+| / | view_wiki | Wiki | Redirect to | | |
+| | | | /FrontPage | | |
++----------------------+-------------+-----------------+-----------------------+------------+------------+
+| /PageName | view_page | Page | Display existing | view.pt | view |
+| | [1]_ | | page [2]_ | | |
+| | | | | | |
+| | | | | | |
+| | | | | | |
++----------------------+-------------+-----------------+-----------------------+------------+------------+
+| /PageName/edit_page | edit_page | Page | Display edit form | edit.pt | edit |
+| | | | with existing | | |
+| | | | content. | | |
+| | | | | | |
+| | | | If the form was | | |
+| | | | submitted, redirect | | |
+| | | | to /PageName | | |
++----------------------+-------------+-----------------+-----------------------+------------+------------+
+| /add_page/PageName | add_page | Wiki | Create the page | edit.pt | edit |
+| | | | *PageName* in | | |
+| | | | storage, display | | |
+| | | | the edit form | | |
+| | | | without content. | | |
+| | | | | | |
+| | | | If the form was | | |
+| | | | submitted, | | |
+| | | | redirect to | | |
+| | | | /PageName | | |
++----------------------+-------------+-----------------+-----------------------+------------+------------+
+| /login | login | Wiki, | Display login form. | login.pt | |
+| | | Forbidden [3]_ | | | |
+| | | | If the form was | | |
+| | | | submitted, | | |
+| | | | authenticate. | | |
+| | | | | | |
+| | | | - If authentication | | |
+| | | | successful, | | |
+| | | | redirect to the | | |
+| | | | page that we | | |
+| | | | came from. | | |
+| | | | | | |
+| | | | - If authentication | | |
+| | | | fails, display | | |
+| | | | login form with | | |
+| | | | "login failed" | | |
+| | | | message. | | |
+| | | | | | |
++----------------------+-------------+-----------------+-----------------------+------------+------------+
+| /logout | logout | Wiki | Redirect to | | |
+| | | | /FrontPage | | |
++----------------------+-------------+-----------------+-----------------------+------------+------------+
+
+.. [1] This is the default view for a Page context
+ when there is no view name.
+.. [2] Pyramid will return a default 404 Not Found page
+ if the page *PageName* does not exist yet.
+.. [3] pyramid.exceptions.Forbidden is reached when a
+ user tries to invoke a view that is
+ not authorized by the authorization policy.
diff --git a/docs/tutorials/wiki/index.rst b/docs/tutorials/wiki/index.rst
index 3edc6ba04..f07f45bd0 100644
--- a/docs/tutorials/wiki/index.rst
+++ b/docs/tutorials/wiki/index.rst
@@ -18,6 +18,7 @@ tutorial can be browsed at
:maxdepth: 2
background
+ design
installation
basiclayout
definingmodels