diff options
| author | Chris McDonough <chrism@plope.com> | 2010-12-22 22:34:20 -0500 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2010-12-22 22:34:20 -0500 |
| commit | 2a5ae0346df95e5b4f9a7d8531574dce70abe31f (patch) | |
| tree | 7b03626c0bb639e3432f9e5245b61327cbefc775 /docs/tutorials/wiki/src/authorization | |
| parent | 319793d9b3d127ba2a9245713ef4f01b32918e95 (diff) | |
| download | pyramid-2a5ae0346df95e5b4f9a7d8531574dce70abe31f.tar.gz pyramid-2a5ae0346df95e5b4f9a7d8531574dce70abe31f.tar.bz2 pyramid-2a5ae0346df95e5b4f9a7d8531574dce70abe31f.zip | |
- 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.
Diffstat (limited to 'docs/tutorials/wiki/src/authorization')
5 files changed, 58 insertions, 43 deletions
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 @@ -<configure xmlns="http://pylonshq.com/pyramid"> - - <!-- this must be included for the view declarations to work --> - <include package="pyramid.includes" /> - - <scan package="."/> - - <view - view=".login.login" - renderer="templates/login.pt" - context="pyramid.exceptions.Forbidden"/> - - <authtktauthenticationpolicy - secret="sosecret" - callback=".security.groupfinder" - /> - - <aclauthorizationpolicy/> - - <static - name="static" - path="static" - /> - -</configure> 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: |
