diff options
| author | Casey Duncan <casey.duncan@gmail.com> | 2010-12-31 13:48:13 -0700 |
|---|---|---|
| committer | Casey Duncan <casey.duncan@gmail.com> | 2010-12-31 13:48:13 -0700 |
| commit | 22642d73056f06a1834dce8970922951fa18c5a1 (patch) | |
| tree | e56037a9d48e7900b5ec3396b1ae28a2723ca623 /docs/tutorials/cmf/catalog.rst | |
| parent | f4c5f1a60612749ef36aae01d9a3a559b6acdfff (diff) | |
| parent | adfcf6d579496495fb71f8c1af293a953b3a13cb (diff) | |
| download | pyramid-22642d73056f06a1834dce8970922951fa18c5a1.tar.gz pyramid-22642d73056f06a1834dce8970922951fa18c5a1.tar.bz2 pyramid-22642d73056f06a1834dce8970922951fa18c5a1.zip | |
Merge https://github.com/Pylons/pyramid
Diffstat (limited to 'docs/tutorials/cmf/catalog.rst')
| -rw-r--r-- | docs/tutorials/cmf/catalog.rst | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/docs/tutorials/cmf/catalog.rst b/docs/tutorials/cmf/catalog.rst deleted file mode 100644 index d5e9534ae..000000000 --- a/docs/tutorials/cmf/catalog.rst +++ /dev/null @@ -1,73 +0,0 @@ -.. _catalog_chapter: - -======= -Catalog -======= - -The main feature of the CMF catalog is that it filters search results -from the Zope 2 "catalog" based on the requesting user's ability to -view a particular cataloged object. - -:app:`Pyramid` itself has no cataloging facility, but an addon -package named :term:`repoze.catalog` offers similar functionality. - -Creating an Allowed Index -------------------------- - -In CMF, a catalog index named ``getAllowedRolesAndUsers`` along with -application indexing code allows for filtered search results. It's -reasonably easy to reproduce this pattern using some custom code. - -Creating The ``allowed`` Index -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Here's some code which creates an ``allowed`` index for use in a -``repoze.catalog`` catalog:: - - from pyramid.security import principals_allowed_by_permission - from repoze.catalog.indexes.keyword import CatalogKeywordIndex - from repoze.catalog.catalog import Catalog - - class Allowed: - def __init__(self, permission): - self.permission = permission - - def __call__(self, context, default): - principals = principals_allowed_by_permission(context, - self.permission) - return principals - - def make_allowed_index(permission='View'): - index = CatalogKeywordIndex(Allowed(permission)) - return index - - index = make_allowed_index() - catalog = Catalog() - catalog['allowed'] = index - -When you index an item, the allowed index will be populated with all -the principal ids which have the 'View' permission. - -Using the ``allowed`` Index -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Here's how you might use the ``allowed`` index within a query:: - - from pyramid.security import effective_principals - principals = effective_principals(request) - catalog.searchResults(allowed={'operator':'or', 'query':principals}) - -The above query will return all document ids that the current user has -the 'View' permission against. Add other indexes to the query to get -a useful result. - -See the `repoze.catalog package -<http://svn.repoze.org/repoze.catalog/trunk>`_ for more information. - - - - - - - - |
