summaryrefslogtreecommitdiff
path: root/docs/tutorials/wiki/src/authorization
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2010-12-22 22:34:20 -0500
committerChris McDonough <chrism@plope.com>2010-12-22 22:34:20 -0500
commit2a5ae0346df95e5b4f9a7d8531574dce70abe31f (patch)
tree7b03626c0bb639e3432f9e5245b61327cbefc775 /docs/tutorials/wiki/src/authorization
parent319793d9b3d127ba2a9245713ef4f01b32918e95 (diff)
downloadpyramid-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')
-rw-r--r--docs/tutorials/wiki/src/authorization/development.ini30
-rw-r--r--docs/tutorials/wiki/src/authorization/tutorial/__init__.py17
-rw-r--r--docs/tutorials/wiki/src/authorization/tutorial/configure.zcml25
-rw-r--r--docs/tutorials/wiki/src/authorization/tutorial/login.py13
-rw-r--r--docs/tutorials/wiki/src/authorization/tutorial/views.py16
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: