From 2a5ae0346df95e5b4f9a7d8531574dce70abe31f Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Wed, 22 Dec 2010 22:34:20 -0500 Subject: - The ``pyramid_zodb`` Paster template no longer employs ZCML. Instead, it is based on scanning. - Changed the "ZODB + Traversal Wiki Tutorial" based on changes to ``pyramid_zodb`` Paster template. --- .../wiki/src/authorization/development.ini | 30 +++++++++++++++++++++- .../wiki/src/authorization/tutorial/__init__.py | 17 +++++++++--- .../wiki/src/authorization/tutorial/configure.zcml | 25 ------------------ .../wiki/src/authorization/tutorial/login.py | 13 +++++----- .../wiki/src/authorization/tutorial/views.py | 16 ++++++------ 5 files changed, 58 insertions(+), 43 deletions(-) delete mode 100644 docs/tutorials/wiki/src/authorization/tutorial/configure.zcml (limited to 'docs/tutorials/wiki/src/authorization') diff --git a/docs/tutorials/wiki/src/authorization/development.ini b/docs/tutorials/wiki/src/authorization/development.ini index a102b721b..6f4c33d93 100644 --- a/docs/tutorials/wiki/src/authorization/development.ini +++ b/docs/tutorials/wiki/src/authorization/development.ini @@ -4,12 +4,14 @@ reload_templates = true debug_authorization = false debug_notfound = false debug_routematch = false +debug_templates = true +default_locale_name = en zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000 [pipeline:main] pipeline = + egg:WebError#evalerror egg:repoze.zodbconn#closer - egg:Paste#evalerror egg:repoze.tm#tm tutorial @@ -17,3 +19,29 @@ pipeline = use = egg:Paste#http host = 0.0.0.0 port = 6543 + +# Begin logging configuration + +[loggers] +keys = root + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/docs/tutorials/wiki/src/authorization/tutorial/__init__.py b/docs/tutorials/wiki/src/authorization/tutorial/__init__.py index 742627a3f..3e9266754 100644 --- a/docs/tutorials/wiki/src/authorization/tutorial/__init__.py +++ b/docs/tutorials/wiki/src/authorization/tutorial/__init__.py @@ -1,6 +1,11 @@ -from pyramid.config import Configurator from repoze.zodbconn.finder import PersistentApplicationFinder + +from pyramid.config import Configurator +from pyramid.authentication import AuthTktAuthenticationPolicy +from pyramid.authorization import ACLAuthorizationPolicy + from tutorial.models import appmaker +from tutorial.security import groupfinder def main(global_config, **settings): """ This function returns a WSGI application. @@ -8,6 +13,9 @@ def main(global_config, **settings): It is usually called by the PasteDeploy framework during ``paster serve``. """ + authn_policy = AuthTktAuthenticationPolicy(secret='sosecret', + callback=groupfinder) + authz_policy = ACLAuthorizationPolicy() zodb_uri = settings.get('zodb_uri') if zodb_uri is None: raise ValueError("No 'zodb_uri' in application configuration.") @@ -15,6 +23,9 @@ def main(global_config, **settings): finder = PersistentApplicationFinder(zodb_uri, appmaker) def get_root(request): return finder(request.environ) - config = Configurator(root_factory=get_root, settings=settings) - config.load_zcml('configure.zcml') + config = Configurator(root_factory=get_root, settings=settings, + authentication_policy=authn_policy, + authorization_policy=authz_policy) + config.add_static_view('static', 'tutorial:static') + config.scan('tutorial') return config.make_wsgi_app() diff --git a/docs/tutorials/wiki/src/authorization/tutorial/configure.zcml b/docs/tutorials/wiki/src/authorization/tutorial/configure.zcml deleted file mode 100644 index d0e65516e..000000000 --- a/docs/tutorials/wiki/src/authorization/tutorial/configure.zcml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/tutorials/wiki/src/authorization/tutorial/login.py b/docs/tutorials/wiki/src/authorization/tutorial/login.py index a1194feb0..59e71a1d9 100644 --- a/docs/tutorials/wiki/src/authorization/tutorial/login.py +++ b/docs/tutorials/wiki/src/authorization/tutorial/login.py @@ -1,15 +1,16 @@ from pyramid.httpexceptions import HTTPFound -from pyramid.view import view_config -from pyramid.url import resource_url - from pyramid.security import remember from pyramid.security import forget +from pyramid.view import view_config +from pyramid.url import resource_url -from tutorial.models import Wiki from tutorial.security import USERS -@view_config(context=Wiki, name='login', renderer='templates/login.pt') +@view_config(context='pyramid.exceptions.Forbidden', + renderer='templates/login.pt') +@view_config(context='tutorial.models.Wiki', name='login', + renderer='templates/login.pt') def login(request): login_url = resource_url(request.context, request, 'login') referrer = request.url @@ -36,7 +37,7 @@ def login(request): password = password, ) -@view_config(context=Wiki, name='logout') +@view_config(context='tutorial.models.Wiki', name='logout') def logout(request): headers = forget(request) return HTTPFound(location = resource_url(request.context, request), diff --git a/docs/tutorials/wiki/src/authorization/tutorial/views.py b/docs/tutorials/wiki/src/authorization/tutorial/views.py index 3143ab552..183cb2a8d 100644 --- a/docs/tutorials/wiki/src/authorization/tutorial/views.py +++ b/docs/tutorials/wiki/src/authorization/tutorial/views.py @@ -3,22 +3,20 @@ import re from pyramid.httpexceptions import HTTPFound from pyramid.url import resource_url - -from pyramid.security import authenticated_userid - from pyramid.view import view_config +from pyramid.security import authenticated_userid from tutorial.models import Page -from tutorial.models import Wiki # regular expression used to find WikiWords wikiwords = re.compile(r"\b([A-Z]\w+[A-Z]+\w+)") -@view_config(context=Wiki, permission='view') +@view_config(context='tutorial.models.Wiki', permission='view') def view_wiki(context, request): return HTTPFound(location = resource_url(context, request, 'FrontPage')) -@view_config(context=Page, renderer='templates/view.pt', permission='view') +@view_config(context='tutorial.models.Page', + renderer='templates/view.pt', permission='view') def view_page(context, request): wiki = context.__parent__ @@ -41,7 +39,8 @@ def view_page(context, request): return dict(page = context, content = content, edit_url = edit_url, logged_in = logged_in) -@view_config(context=Wiki, name='add_page', renderer='templates/edit.pt', +@view_config(name='add_page', context='tutorial.models.Wiki', + renderer='templates/edit.pt', permission='edit') def add_page(context, request): name = request.subpath[0] @@ -61,7 +60,8 @@ def add_page(context, request): return dict(page = page, save_url = save_url, logged_in = logged_in) -@view_config(context=Page, name='edit_page', renderer='templates/edit.pt', +@view_config(name='edit_page', context='tutorial.models.Page', + renderer='templates/edit.pt', permission='edit') def edit_page(context, request): if 'form.submitted' in request.params: -- cgit v1.2.3