[Checkins] SVN: z3c.layer.pagelet/trunk/ - change view for zope.publisher.interfaces.ITraversalException from system
Roger Ineichen
roger at projekt01.ch
Mon Nov 30 10:27:10 EST 2009
Log message for revision 106121:
- change view for zope.publisher.interfaces.ITraversalException from system
error pagelet to not found pagelet
- move authentication viewlets to z3c.authviewlet.
- cleanup dependencies, reflect changes in zope packages
- cleanup test dependencies
Changed:
U z3c.layer.pagelet/trunk/CHANGES.txt
U z3c.layer.pagelet/trunk/setup.py
U z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/README.txt
U z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/__init__.py
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/auth.py
U z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/configure.zcml
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_failed.pt
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_success.pt
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout.pt
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout_head.pt
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect.pt
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect_head.pt
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/session_cred_loginform.pt
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/zope.authentication.zcml
U z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/configure.zcml
A z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/interfaces.py
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/login.txt
U z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/__init__.py
U z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/ftesting.zcml
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/login-logout-template.pt
U z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/test_layer.py
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.http.exception.zcml
D z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.publisher.browser.zcml
A z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.browserresource.zcml
-=-
Modified: z3c.layer.pagelet/trunk/CHANGES.txt
===================================================================
--- z3c.layer.pagelet/trunk/CHANGES.txt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/CHANGES.txt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -2,12 +2,19 @@
CHANGES
=======
-1.5.1 (unreleased)
+1.6.0 (2009-11-30)
------------------
-- Nothing changed yet.
+- change view for zope.publisher.interfaces.ITraversalException from system
+ error pagelet to not found pagelet
+- move authentication viewlets to z3c.authviewlet.
+- cleanup dependencies, reflect changes in zope packages
+
+- cleanup test dependencies
+
+
1.5.0 (2009-05-28)
------------------
Modified: z3c.layer.pagelet/trunk/setup.py
===================================================================
--- z3c.layer.pagelet/trunk/setup.py 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/setup.py 2009-11-30 15:27:09 UTC (rev 106121)
@@ -19,11 +19,10 @@
def read(*rnames):
return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
-version = '1.5.1dev'
setup(
name='z3c.layer.pagelet',
- version=version,
+ version='1.6.0',
author='Zope Foundation and Contributors',
author_email='zope-dev at zope.org',
description = "Pagelet layer setup for Zope3",
@@ -34,8 +33,6 @@
+ '\n\n' +
read('src', 'z3c', 'layer', 'pagelet', 'README.txt')
+ '\n\n' +
- read('src', 'z3c', 'layer', 'pagelet', 'login.txt')
- + '\n\n' +
read('CHANGES.txt')
),
keywords = "z3c pagelet layer zope zope3",
@@ -58,24 +55,26 @@
extras_require = dict(
test = [
'zope.testbrowser',
- 'zope.securitypolicy',
- 'zope.app.testing',
- 'zope.app.i18n',
- 'zope.configuration>=3.5.0',
- 'zope.component',
'zope.app.authentication',
+ 'zope.app.testing',
+ 'zope.browserresource',
+ 'zope.exceptions',
'zope.principalregistry',
+ 'zope.publisher',
+ 'zope.security',
+ 'zope.securitypolicy',
+ 'zope.testing',
],
),
install_requires = [
'setuptools',
'z3c.pagelet',
- 'zope.app.publisher',
+ 'z3c.template',
'zope.authentication',
'zope.browser>=1.2',
- 'zope.configuration',
- 'zope.traversing',
- 'zope.viewlet',
+ 'zope.component',
+ 'zope.interface',
+ 'zope.publisher',
],
zip_safe = False,
)
Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/README.txt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/README.txt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/README.txt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -24,15 +24,21 @@
This layer is *NOT* derived from ``IDefaultBrowserLayer`` layer. Therefore it
provides only a minimal set of the most important public views such as
-``@@absolute_url``. The following packages are accounted:
+``@@absolute_url`` which get registered in zope packages for the IHTTPRequest
+and IBrowserRequest. Next to this views, this package will only provide error
+views and traversers which are normaly regsitered in the following zope
+packages:
- ``zope.app.http.exception``
- ``zope.app.publication``
-- ``zope.app.publisher.browser``
-- ``zope.app.traversing``
-- ``zope.app.traversing.browser``
+- ``zope.browserresource``
+- ``zope.traversing``
+Note, this package does not depend on all the packages described above. We only
+need to depend on the same interfaces where this package will define views and
+traversers for.
+
Testing
-------
Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/__init__.py
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/__init__.py 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/__init__.py 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,6 +1,6 @@
##############################################################################
#
-# Copyright (c) 2007-2009 Zope Foundation and Contributors.
+# Copyright (c) 2007 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
@@ -15,18 +15,19 @@
$Id: __init__.py 97 2007-03-29 22:58:27Z rineichen $
"""
+import zope.interface
+import zope.component
import z3c.pagelet.browser
import z3c.template.interfaces
import zope.authentication.interfaces
-import zope.browser.interfaces
-import zope.component
-import zope.interface
+from z3c.layer.pagelet import interfaces
+
class SystemErrorPagelet(z3c.pagelet.browser.BrowserPagelet):
"""SystemError pagelet."""
- zope.interface.implements(zope.browser.interfaces.ISystemErrorView)
+ zope.interface.implements(interfaces.ISystemErrorPagelet)
def isSystemError(self):
return True
@@ -35,6 +36,8 @@
class UnauthorizedPagelet(z3c.pagelet.browser.BrowserPagelet):
"""Unauthorized pagelet."""
+ zope.interface.implements(interfaces.IUnauthorizedPagelet)
+
def render(self):
# Set the error status to 403 (Forbidden) in the case when we don't
# challenge the user
@@ -60,10 +63,17 @@
class UserErrorPagelet(z3c.pagelet.browser.BrowserPagelet):
"""UserError pagelet."""
+ zope.interface.implements(interfaces.IUserErrorPagelet)
+ def title(self):
+ return self.context.__class__.__name__
+
+
class NotFoundPagelet(z3c.pagelet.browser.BrowserPagelet):
"""NotFound pagelet."""
+ zope.interface.implements(interfaces.INotFoundPagelet)
+
def render(self):
self.request.response.setStatus(404)
template = zope.component.getMultiAdapter(
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/auth.py
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/auth.py 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/auth.py 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,173 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2003-2009 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Login and Logout screens
-
-$Id$
-"""
-import urllib
-import z3c.pagelet.interfaces
-import zope.app.publisher.interfaces.http
-import zope.authentication.interfaces
-import zope.component
-import zope.i18n
-import zope.i18nmessageid
-import zope.interface
-import zope.viewlet.interfaces
-import zope.viewlet.manager
-import zope.viewlet.viewlet
-
-_ = zope.i18nmessageid.MessageFactory("z3c")
-
-
-class ILoginLogoutHeadViewletManager(zope.viewlet.interfaces.IViewletManager):
- """ViewletManager for supporting header contents (e. g. JavaScript)."""
-
-
-LoginLogoutHeadViewletManager = zope.viewlet.manager.ViewletManager(
- 'login-logout-head', ILoginLogoutHeadViewletManager)
-
-
-class ILoginLogoutViewletManager(zope.viewlet.interfaces.IViewletManager):
- """ViewletManager for login and logout viewlets."""
-
-
-LoginLogoutViewletManager = zope.viewlet.manager.ViewletManager(
- 'login-logout', ILoginLogoutViewletManager,
- bases=(zope.viewlet.manager.ConditionalViewletManager,))
-
-
-def authenticated(principal):
- "Tell whether the principal is authenticated."
- unauthenticated = zope.authentication.interfaces.IUnauthenticatedPrincipal
- return not unauthenticated.providedBy(principal)
-
-
-def logout_supported(request):
- "Tell whether logout is supported."
- logout = zope.authentication.interfaces.ILogoutSupported(request, None)
- return logout is not None
-
-
-def get_view_url(context, request, view_name):
- "Compute the url of a view."
- view_name_truncated = False
- if view_name.startswith('@@'):
- view_name = view_name[2:]
- view_name_truncated = True
- view = zope.component.getMultiAdapter((context, request), name=view_name)
- view_url = zope.component.getMultiAdapter(
- (view, request), name='absolute_url')()
- if view_name_truncated:
- view_url = view_url.replace(view_name, '@@'+view_name)
- return view_url
-
-
-def render_pagelet(context, request, view_name):
- "Render a pagelet."
- pagelet = zope.component.getMultiAdapter(
- (context, request), z3c.pagelet.interfaces.IPagelet, name=view_name)
- return pagelet()
-
-
-class LoginViewlet(zope.viewlet.viewlet.ViewletBase):
- """Display login link when user is not logged in."""
-
- @property
- def available(self):
- return not authenticated(self.request.principal)
-
- def render(self):
- return u'<a href="%s?nextURL=%s">%s</a>' % (
- get_view_url(self. context, self.request, self.viewName),
- urllib.quote(self.request.getURL()),
- zope.i18n.translate(
- _('[Login]', default='Login'), context=self.request))
-
-
-class LogoutViewlet(zope.viewlet.viewlet.ViewletBase):
- """Display logout link when user is logged in and logout is supported."""
-
- @property
- def available(self):
- return (
- authenticated(self.request.principal)
- and
- logout_supported(self.request))
-
- def render(self):
- return u'<a href="%s?nextURL=%s">%s</a>' % (
- get_view_url(self. context, self.request, self.viewName),
- urllib.quote(self.request.getURL()),
- zope.i18n.translate(
- _('[Logout]', default='Logout'), context=self.request))
-
-
-class HTTPAuthenticationLogin(object):
-
- zope.interface.implements(zope.app.publisher.interfaces.http.ILogin)
-
- def login(self, nextURL=None):
- # we don't want to keep challenging if we're authenticated
- if not authenticated(self.request.principal):
- auth = zope.component.getUtility(
- zope.authentication.interfaces.IAuthentication)
- auth.unauthorized(
- self.request.principal.id, self.request)
- return render_pagelet(self, self.request, 'login_failed.html')
- else:
- if nextURL is None:
- return render_pagelet(self, self.request, 'login_success.html')
- else:
- self.request.response.redirect(nextURL)
-
-
-class LoginFailedPagelet(object):
- "Pagelet to display login failed notice."
-
-
-class LoginSuccessfulPagelet(object):
- "Pagelet to display login succecc notice."
-
-
-class HTTPAuthenticationLogout(object):
- """Since HTTP Authentication really does not know about logout, we are
- simply challenging the client again."""
-
- zope.interface.implements(zope.authentication.interfaces.ILogout)
-
- def logout(self, nextURL=None):
- if authenticated(self.request.principal):
- auth = zope.component.getUtility(
- zope.authentication.interfaces.IAuthentication)
- zope.authentication.interfaces.ILogout(auth).logout(self.request)
- if nextURL:
- return render_pagelet(self, self.request, 'redirect.html')
- if nextURL is None:
- return render_pagelet(self, self.request, 'logout_success.html')
- else:
- return self.request.response.redirect(nextURL)
-
-
-class LogoutRedirectPagelet(object):
- "Pagelet to display logout redirect."
-
-
-class LogoutSuccessPagelet(object):
- "Pagelet to display logout success."
-
-
-class SessionCredentialsLoginForm(object):
- "Login form using session credentials."
-
-
Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/configure.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/configure.zcml 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/configure.zcml 2009-11-30 15:27:09 UTC (rev 106121)
@@ -12,6 +12,12 @@
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
+ <z3c:template
+ for=".SystemErrorPagelet"
+ template="systemerror.pt"
+ layer="z3c.layer.pagelet.IPageletBrowserLayer"
+ />
+
<defaultView
name="index.html"
for="zope.interface.common.interfaces.IException"
@@ -21,7 +27,7 @@
<z3c:pagelet
name="index.html"
for="zope.publisher.interfaces.ITraversalException"
- class=".SystemErrorPagelet"
+ class=".NotFoundPagelet"
permission="zope.Public"
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
@@ -32,12 +38,6 @@
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
- <z3c:template
- for=".SystemErrorPagelet"
- template="systemerror.pt"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- />
-
<z3c:pagelet
name="index.html"
for="zope.security.interfaces.IUnauthorized"
@@ -46,29 +46,23 @@
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
- <defaultView
- name="index.html"
- for="zope.security.interfaces.IUnauthorized"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- />
-
<z3c:template
for=".UnauthorizedPagelet"
template="unauthorized.pt"
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
- <z3c:pagelet
+ <defaultView
name="index.html"
- for="zope.exceptions.interfaces.IUserError"
- class=".UserErrorPagelet"
- permission="zope.Public"
+ for="zope.security.interfaces.IUnauthorized"
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
- <defaultView
+ <z3c:pagelet
name="index.html"
for="zope.exceptions.interfaces.IUserError"
+ class=".UserErrorPagelet"
+ permission="zope.Public"
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
@@ -78,17 +72,17 @@
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
- <z3c:pagelet
+ <defaultView
name="index.html"
- for="zope.publisher.interfaces.INotFound"
- class=".NotFoundPagelet"
- permission="zope.Public"
+ for="zope.exceptions.interfaces.IUserError"
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
- <defaultView
+ <z3c:pagelet
name="index.html"
for="zope.publisher.interfaces.INotFound"
+ class=".NotFoundPagelet"
+ permission="zope.Public"
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
@@ -98,6 +92,10 @@
layer="z3c.layer.pagelet.IPageletBrowserLayer"
/>
- <include file="zope.authentication.zcml" />
+ <defaultView
+ name="index.html"
+ for="zope.publisher.interfaces.INotFound"
+ layer="z3c.layer.pagelet.IPageletBrowserLayer"
+ />
</configure>
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_failed.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_failed.pt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_failed.pt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,10 +0,0 @@
-<div>
- <h1 i18n:translate="">Login Failed!</h1>
-
- <p style="font-size: 150%">
- <tal:block
- i18n:translate="">You cancelled the login procedure.</tal:block>
- <a tal:attributes="href python: view.request.get('nextURL', '.')"
- i18n:translate="">Click here to return.</a>
- </p>
-</div>
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_success.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_success.pt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_success.pt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,9 +0,0 @@
-<div>
- <h1 i18n:translate="">Login successful!</h1>
- <p style="font-size: 200%" i18n:translate="">
- You are now logged in as
- <em tal:content="view/request/principal/title"
- i18n:name="UserTitle">Joe Smith</em>.
- </p>
- <a href="." i18n:translate="">Back to the main page.</a>
-</div>
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout.pt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout.pt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,8 +0,0 @@
-<div>
- <h1 i18n:translate="">Logout successful!</h1>
-
- <p style="font-size: 200%" i18n:translate="">
- You are now logged out.
- </p>
- <a href="." i18n:translate="">Back to the main page.</a>
-</div>
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout_head.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout_head.pt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout_head.pt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,16 +0,0 @@
-<script type="text/javascript"><!--
- // clear HTTP Authentication
- try {
- if (window.XMLHttpRequest) {
- var xmlhttp = new XMLHttpRequest();
- // Send invalid credentials, then abort
- xmlhttp.open("GET", "@@", true, "logout", "logout");
- xmlhttp.send("");
- xmlhttp.abort();
- } else if (document.execCommand) {
- // IE specific command
- document.execCommand("ClearAuthenticationCache");
- }
- } catch(e) { }
- //-->
-</script>
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect.pt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect.pt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,9 +0,0 @@
-<div>
- <h1 i18n:translate="">You are being redirected!</h1>
-
- <p style="font-size: 150%">
- <a tal:attributes="href view/request/nextURL" i18n:translate="">
- If you see this screen for more than 5 seconds, click here.
- </a>
- </p>
-</div>
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect_head.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect_head.pt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect_head.pt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,2 +0,0 @@
-<meta http-equiv="refresh" content="0;url=./"
- tal:attributes="content string:0;;url=${request/nextURL}" />
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/session_cred_loginform.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/session_cred_loginform.pt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/session_cred_loginform.pt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,36 +0,0 @@
-<div tal:define="principal python:request.principal.id">
- <p i18n:translate=""
- tal:condition="python: principal == 'zope.anybody'">
- Please provide Login Information
- </p>
- <p i18n:translate=""
- tal:condition="python: principal != 'zope.anybody'">
- You are not authorized to perform this action. However, you may login as a
- different user who is authorized.
- </p>
- <form action="" method="post">
- <div tal:omit-tag=""
- tal:condition="python:principal != 'zope.anybody' and 'SUBMIT' in request">
- <span tal:define="dummy python:request.response.redirect(request.get('camefrom', ''))" />
- </div>
- <div class="row">
- <div class="label"><label for="login" i18n:translate="">User Name</label></div>
- <div class="field">
- <input type="text" name="login" id="login" />
- </div>
- </div>
-
- <div class="row">
- <div class="label"><label for="password" i18n:translate="">Password</label></div>
- <div class="field">
- <input type="password" name="password" id="password" />
- </div>
- </div>
-
- <div class="row">
- <input class="form-element" type="submit"
- name="SUBMIT" value="Log in" i18n:attributes="value login-button" />
- </div>
- <input type="hidden" name="camefrom" tal:attributes="value request/camefrom | nothing">
- </form>
-</div>
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/zope.authentication.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/zope.authentication.zcml 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/zope.authentication.zcml 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,170 +0,0 @@
-<configure
- xmlns="http://namespaces.zope.org/zope"
- xmlns:browser="http://namespaces.zope.org/browser"
- xmlns:z3c="http://namespaces.zope.org/z3c"
- i18n_domain="z3c">
-
- <!-- viewlets in head tag supporting login and logout
- (viewlets are defined together with the pagelets below) -->
- <browser:viewletManager
- provides=".auth.ILoginLogoutHeadViewletManager"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="login-logout-head"
- class=".auth.LoginLogoutHeadViewletManager"
- permission="zope.Public"
- />
-
- <!-- viewlet manager and viewlets for login and logout links -->
- <browser:viewletManager
- provides=".auth.ILoginLogoutViewletManager"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="login-logout"
- class=".auth.LoginLogoutViewletManager"
- permission="zope.Public"
- />
-
- <browser:viewlet
- manager=".auth.ILoginLogoutViewletManager"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="Login"
- class=".auth.LoginViewlet"
- permission="zope.Public"
- weight="1"
- viewName="@@login.html"
- />
-
- <browser:viewlet
- manager=".auth.ILoginLogoutViewletManager"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="Logout"
- class=".auth.LogoutViewlet"
- permission="zope.Public"
- weight="2"
- viewName="@@logout.html"
- />
-
- <!-- login page (executing login and redirecting user) -->
- <browser:page
- for="*"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="login.html"
- class=".auth.HTTPAuthenticationLogin"
- attribute="login"
- allowed_interface="zope.app.publisher.interfaces.http.ILogin"
- permission="zope.Public"
- />
-
- <!-- login form for session credentials -->
- <z3c:pagelet
- for="*"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="loginForm.html"
- class=".auth.SessionCredentialsLoginForm"
- permission="zope.Public"
- />
-
- <z3c:template
- for=".auth.SessionCredentialsLoginForm"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- template="session_cred_loginform.pt"
- />
-
- <!-- login failed -->
- <z3c:pagelet
- for=".auth.HTTPAuthenticationLogin"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="login_failed.html"
- class=".auth.LoginFailedPagelet"
- permission="zope.Public"
- />
-
- <z3c:template
- for=".auth.LoginFailedPagelet"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- template="login_failed.pt"
- />
-
- <!-- login success confirmation -->
- <z3c:pagelet
- for=".auth.HTTPAuthenticationLogin"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="login_success.html"
- class=".auth.LoginSuccessfulPagelet"
- permission="zope.Public"
- />
-
- <z3c:template
- for=".auth.LoginSuccessfulPagelet"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- template="login_success.pt"
- />
-
- <!-- logout page (executing logout and redirecting user) -->
- <browser:page
- for="*"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="logout.html"
- class=".auth.HTTPAuthenticationLogout"
- attribute="logout"
- allowed_interface="zope.app.publisher.interfaces.http.ILogout"
- permission="zope.Public"
- />
-
- <!-- redirecting logout confirmation -->
- <z3c:pagelet
- for=".auth.HTTPAuthenticationLogout"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="redirect.html"
- class=".auth.LogoutRedirectPagelet"
- permission="zope.Public"
- />
-
- <z3c:template
- for=".auth.LogoutRedirectPagelet"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- template="redirect.pt"
- />
-
- <browser:viewlet
- manager=".auth.ILoginLogoutHeadViewletManager"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- view=".auth.LogoutRedirectPagelet"
- name="Redirect"
- template="redirect_head.pt"
- permission="zope.Public"
- />
-
- <browser:viewlet
- manager=".auth.ILoginLogoutHeadViewletManager"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- view=".auth.LogoutRedirectPagelet"
- name="Logout"
- template="logout_head.pt"
- permission="zope.Public"
- />
-
- <!-- not redirecting logout confirmation -->
- <z3c:pagelet
- for=".auth.HTTPAuthenticationLogout"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- name="logout_success.html"
- class=".auth.LogoutSuccessPagelet"
- permission="zope.Public"
- />
-
- <z3c:template
- for=".auth.LogoutSuccessPagelet"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- template="logout.pt"
- />
-
- <browser:viewlet
- manager=".auth.ILoginLogoutHeadViewletManager"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- view=".auth.LogoutSuccessPagelet"
- name="Logout"
- template="logout_head.pt"
- permission="zope.Public"
- />
-
-</configure>
Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/configure.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/configure.zcml 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/configure.zcml 2009-11-30 15:27:09 UTC (rev 106121)
@@ -9,9 +9,8 @@
type="zope.publisher.interfaces.browser.IBrowserSkinType"
/>
- <include file="zope.app.http.exception.zcml" />
<include file="zope.app.publication.zcml" />
- <include file="zope.app.publisher.browser.zcml" />
+ <include file="zope.browserresource.zcml" />
<include file="zope.traversing.zcml" />
<include file="zope.traversing.browser.zcml" />
Added: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/interfaces.py
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/interfaces.py (rev 0)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/interfaces.py 2009-11-30 15:27:09 UTC (rev 106121)
@@ -0,0 +1,35 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id: __init__.py 97 2007-03-29 22:58:27Z rineichen $
+"""
+
+import zope.interface
+import zope.browser.interfaces
+
+
+class IUnauthorizedPagelet(zope.interface.Interface):
+ """Unauthorized pagelet marker."""
+
+
+class ISystemErrorPagelet(zope.browser.interfaces.ISystemErrorView):
+ """System error view pagelet marker."""
+
+
+class IUserErrorPagelet(zope.interface.Interface):
+ """User error pagelet marker."""
+
+
+class INotFoundPagelet(zope.interface.Interface):
+ """NotFound pagelet marker."""
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/login.txt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/login.txt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/login.txt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,613 +0,0 @@
-Login and logout
-----------------
-
-Login and logout work both for basic auth and cookie auth.
-
-
-Setup
-~~~~~
-
-The layout page template has to include two content providers (viewlet
-mangers):
-
- - ``login-logout-head`` inside the head tag to get automatic
- redirects and JavaScript code which does the logout for basic
- auth and
-
- - ``login-logout`` inside the body tag to get login and logout links.
-
-The sample template looks like this:
-
- >>> import os.path
- >>> template_path = os.path.join(os.path.dirname(__file__), "tests",
- ... "login-logout-template.pt")
- >>> print file(template_path, "r").read()
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- <tal:block replace="structure provider:login-logout-head" />
- </head>
- <body>
- <tal:block replace="structure provider:login-logout" />
- <tal:block replace="structure provider:pagelet" />
- </body>
- </html>
-
-This template is registered for the ``IContainer`` interface in
-``ftesting.zcml``. After creating a container the template is
-used when browsing the container:
-
- >>> from zope.container.btree import BTreeContainer
- >>> getRootFolder()['container'] = BTreeContainer()
-
-Basic auth
-~~~~~~~~~~
-
-When the user is not logged in the login link is displayed:
-
- >>> from zope.testbrowser.testing import Browser
- >>> skinURL = 'http://localhost/++skin++PageletTestSkin/'
- >>> browser = Browser()
- >>> browser.handleErrors = False
- >>> browser.open(skinURL + 'container/@@default.html')
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
- </body>
- </html>
-
-Selecting the link leads to the login page, as we use basic auth here,
-we get an HTTP error 401 (unauthorized):
-
- >>> login_url = browser.getLink('Login').url
- >>> browser.getLink('Login').click()
- Traceback (most recent call last):
- httperror_seek_wrapper: HTTP Error 401: Unauthorized
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html'
-
-When adding correct credentials we get authorized:
-
- >>> browser.addHeader('Authorization', 'Basic mgr:mgrpw')
- >>> browser.reload()
-
-We are redirected to the page where we selected the login link. After
-logging in the login link is no longer displayed. As we did not
-specify that logout is supported, no logout link is displayed:
-
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- </body>
- </html>
-
-Calling the login URL again leads directly to the page referred in nextURL:
-
- >>> browser.open(login_url)
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- </body>
- </html>
-
-Calling the login URL again without the query parameter leeds to a
-confirmation page telling that login was successfull:
-
- >>> browser.open(login_url.split('?')[0])
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@login.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTestLayout</title>
- </head>
- <body>
- <div>
- <h1>Login successful!</h1>
- <p style="font-size: 200%"> You are now logged in as <em>Manager</em>. </p>
- <a href=".">Back to the main page.</a>
- </div>
- </body>
- </html>
-
-Selecting the ``Back to the main page.`` link send the user back to
-the default view of the container. (``ftesting.zcml`` defines
-``@@default.html`` as the default view.):
-
- >>> browser.getLink('Back to the main page.').click()
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- </body>
- </html>
-
-
-Providing an ``ILogoutSupported`` adapter leads to a logout link being
-displayed:
-
- >>> from zope.app.testing import ztapi
- >>> import zope.interface
- >>> import zope.authentication.logout
- >>> import zope.authentication.interfaces
- >>> ztapi.provideAdapter(
- ... zope.interface.Interface,
- ... zope.authentication.interfaces.ILogoutSupported,
- ... zope.authentication.logout.LogoutSupported)
- >>> browser.reload()
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Logout</a>
- </body>
- </html>
-
-Logout is done using JavaScript and a redirect. zope.testbrowser
-follows the redirects even if they use the meta tag instead of the
-status code. So I have to use a non API call to change this behavior
-to show the file contents:
-
- >>> browser.mech_browser.set_handle_refresh(False)
-
-As testbrowser is not able to execute JavaScript the user remains
-authenticated:
-
- >>> logout_url = browser.getLink('Logout').url
- >>> browser.getLink('Logout').click()
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- <script type="text/javascript"><!--
- // clear HTTP Authentication
- ...
- //-->
- </script>
- <meta http-equiv="refresh"
- content="0;url=http://localhost/++skin++PageletTestSkin/container/@@default.html" />
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40logout.html">Logout</a>
- <div>
- <h1>You are being redirected!</h1>
- <p style="font-size: 150%">
- <a href="http://localhost/++skin++PageletTestSkin/container/@@default.html">
- If you see this screen for more than 5 seconds, click here.
- </a>
- </p>
- </div>
- </body>
- </html>
-
-Calling the logout URL again after logout (simulated using a new
-browser instance) leads directly to the page referred in nextURL:
-
- >>> browser2 = Browser(logout_url)
- >>> browser2.url
- 'http://localhost/++skin++PageletTestSkin/container/@@default.html'
- >>> print browser2.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
- </body>
- </html>
-
-Calling the logout URL again without the query parameter leeds to a
-confirmation page telling that logout was successfull:
-
- >>> browser2.open(logout_url.split('?')[0])
- >>> browser2.url
- 'http://localhost/++skin++PageletTestSkin/container/@@logout.html'
- >>> print browser2.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- <script type="text/javascript"><!--
- // clear HTTP Authentication
- ...
- //-->
- </script>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/logout.html/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40logout.html">Login</a>
- <div>
- <h1>Logout successful!</h1>
- <p style="font-size: 200%">
- You are now logged out.
- </p>
- <a href=".">Back to the main page.</a>
- </div>
- </body>
- </html>
-
-
-Cookie auth
-~~~~~~~~~~~
-
-To do cookie auth we have to set up a pluggable auth utility (PAU)
-with a authenticator plug-in (principal folder) first:
-
- >>> from zope.authentication.interfaces import IAuthentication
- >>> from zope.app.authentication.interfaces import IAuthenticatorPlugin
- >>> from zope.app.authentication.authentication import PluggableAuthentication
- >>> from zope.app.authentication.principalfolder import PrincipalFolder
- >>> from zope.site import site
-
- >>> root = getRootFolder()
- >>> root['principal_folder'] = PrincipalFolder()
- >>> sm = root.getSiteManager()
- >>> sm.registerUtility(
- ... root['principal_folder'], IAuthenticatorPlugin, 'principal_folder')
-
- >>> root['auth'] = PluggableAuthentication()
- >>> sm.registerUtility(root['auth'], IAuthentication, '')
- >>> root['auth'].credentialsPlugins = (u'Session Credentials',)
- >>> root['auth'].authenticatorPlugins = (u'principal_folder',)
-
-We need a principal inside the principal folder:
-
- >>> from zope.app.authentication.principalfolder import InternalPrincipal
- >>> root['principal_folder']['1'] = InternalPrincipal(
- ... 'tester', 'tpass', 'Tester')
-
-
-We use a new browser, so the principal is not logged in and the login
-link is displayed:
-
- >>> browser = Browser()
- >>> browser.open(skinURL + 'container/@@default.html')
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
- </body>
- </html>
-
-Selecting the link leads to the login page:
-
- >>> login_url = browser.getLink('Login').url
- >>> browser.getLink('Login').click()
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/@@loginForm.html?camefrom=%2F%2B%2Bskin%2B%2BPageletTestSkin%2Fcontainer%2F%40%40login.html%3FnextURL%3Dhttp%253A%2F%2Flocalhost%2F%252B%252Bskin%252B%252BPageletTestSkin%2Fcontainer%2F%2540%2540default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTestLayout</title>
- </head>
- <body>
- <div>
- <p>
- Please provide Login Information
- </p>
- <form action="" method="post">
- <div class="row">
- <div class="label"><label for="login">User Name</label></div>
- <div class="field">
- <input type="text" name="login" id="login" />
- </div>
- </div>
- <div class="row">
- <div class="label"><label for="password">Password</label></div>
- <div class="field">
- <input type="password" name="password" id="password" />
- </div>
- </div>
- <div class="row">
- <input class="form-element" type="submit"
- name="SUBMIT" value="Log in" />
- </div>
- <input type="hidden" name="camefrom"
- value="/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">
- </form>
- </div>
- </body>
- </html>
-
-Entering wrong username does not authorize but display an error
-message:
-
- >>> browser.getControl('User Name').value = 'me'
- >>> browser.getControl('Password').value = 'tpass'
- >>> browser.getControl('Log in').click()
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/@@loginForm.html?camefrom=%2F%2B%2Bskin%2B%2BPageletTestSkin%2Fcontainer%2F%40%40login.html%3FnextURL%3Dhttp%253A%2F%2Flocalhost%2F%252B%252Bskin%252B%252BPageletTestSkin%2Fcontainer%2F%2540%2540default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTestLayout</title>
- </head>
- <body>
- <div>
- <p>
- Please provide Login Information
- </p>
- <form action="" method="post">
- <div class="row">
- <div class="label"><label for="login">User Name</label></div>
- <div class="field">
- <input type="text" name="login" id="login" />
- </div>
- </div>
- <div class="row">
- <div class="label"><label for="password">Password</label></div>
- <div class="field">
- <input type="password" name="password" id="password" />
- </div>
- </div>
- <div class="row">
- <input class="form-element" type="submit"
- name="SUBMIT" value="Log in" />
- </div>
- <input type="hidden" name="camefrom"
- value="/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">
- </form>
- </div>
- </body>
- </html>
-
-Entering wrong password does not authorize either:
-
- >>> browser.getControl('User Name').value = 'tester'
- >>> browser.getControl('Password').value = 'let me in'
- >>> browser.getControl('Log in').click()
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/@@loginForm.html?camefrom=%2F%2B%2Bskin%2B%2BPageletTestSkin%2Fcontainer%2F%40%40login.html%3FnextURL%3Dhttp%253A%2F%2Flocalhost%2F%252B%252Bskin%252B%252BPageletTestSkin%2Fcontainer%2F%2540%2540default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTestLayout</title>
- </head>
- <body>
- <div>
- <p>
- Please provide Login Information
- </p>
- <form action="" method="post">
- <div class="row">
- <div class="label"><label for="login">User Name</label></div>
- <div class="field">
- <input type="text" name="login" id="login" />
- </div>
- </div>
- <div class="row">
- <div class="label"><label for="password">Password</label></div>
- <div class="field">
- <input type="password" name="password" id="password" />
- </div>
- </div>
- <div class="row">
- <input class="form-element" type="submit"
- name="SUBMIT" value="Log in" />
- </div>
- <input type="hidden" name="camefrom"
- value="/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">
- </form>
- </div>
- </body>
- </html>
-
-
-After entering a correct username and password the user gets
-authorized:
-
- >>> browser.getControl('User Name').value = 'tester'
- >>> browser.getControl('Password').value = 'tpass'
- >>> browser.getControl('Log in').click()
-
-The user gets redirected to the page where he selected the login
-link. After logging in the login link is no longer displayed. As we
-already specified that logout is supported, a logout link is
-displayed:
-
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Logout</a>
- </body>
- </html>
-
-
-Calling the login URL again leads directly to the page referred in nextURL:
-
- >>> browser.open(login_url)
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Logout</a>
- </body>
- </html>
-
-Calling the login URL again without the query parameter leeds to a
-confirmation page telling that login was successfull:
-
- >>> browser.open(login_url.split('?')[0])
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@login.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTestLayout</title>
- </head>
- <body>
- <div>
- <h1>Login successful!</h1>
- <p style="font-size: 200%"> You are now logged in as <em>Tester</em>. </p>
- <a href=".">Back to the main page.</a>
- </div>
- </body>
- </html>
-
-Selecting the ``Back to the main page.`` link send the user back to
-the default view of the container. (``ftesting.zcml`` defines
-``@@default.html`` as the default view.):
-
- >>> browser.getLink('Back to the main page.').click()
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Logout</a>
- </body>
- </html>
-
-
-Selecting the displayed logout link drops authentication information
-and displays a confirmation page, which redirects to the default page
-where the login link is displayed again (as redirection is done
-automatically by testbrowser I have to use the non API call trick
-again to show the displayed page):
-
- >>> browser.mech_browser.set_handle_refresh(False)
- >>> logout_url = browser.getLink('Logout').url
- >>> browser.getLink('Logout').click()
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- <script type="text/javascript"><!--
- // clear HTTP Authentication
- ...
- //-->
- </script>
- <meta http-equiv="refresh"
- content="0;url=http://localhost/++skin++PageletTestSkin/container/@@default.html" />
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40logout.html">Logout</a>
- <div>
- <h1>You are being redirected!</h1>
- <BLANKLINE>
- <p style="font-size: 150%">
- <a href="http://localhost/++skin++PageletTestSkin/container/@@default.html">
- If you see this screen for more than 5 seconds, click here.
- </a>
- </p>
- </div>
- </body>
- </html>
- >>> browser.getLink('If you see this screen for more than 5 seconds').click()
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
- </body>
- </html>
- >>> browser.mech_browser.set_handle_refresh(True)
-
-Calling the logout URL again after logout leads directly to the page
-referred in nextURL:
-
- >>> browser.open(logout_url)
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@default.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
- </body>
- </html>
-
-Calling the logout URL again without the query parameter leeds to a
-confirmation page telling that logout was successfull:
-
- >>> browser.open(logout_url.split('?')[0])
- >>> browser.url
- 'http://localhost/++skin++PageletTestSkin/container/@@logout.html'
- >>> print browser.contents
- <!DOCTYPE ...>
- <html ...>
- <head>
- <title>PageletTest</title>
- <script type="text/javascript"><!--
- // clear HTTP Authentication
- ...
- //-->
- </script>
- </head>
- <body>
- <a href="http://localhost/++skin++PageletTestSkin/container/logout.html/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40logout.html">Login</a>
- <div>
- <h1>Logout successful!</h1>
- <p style="font-size: 200%">
- You are now logged out.
- </p>
- <a href=".">Back to the main page.</a>
- </div>
- </body>
- </html>
Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/__init__.py
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/__init__.py 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/__init__.py 2009-11-30 15:27:09 UTC (rev 106121)
@@ -57,11 +57,3 @@
def __call__(self):
return str([type(x) for x in self.context.values()])
-
-
-class LoginLogoutPage(browser.BrowserPagelet):
- """Login and logout page."""
-
- # make sure the pagelet renders no content, as this is not what we
- # want to show with this pagelet
- template = lambda self: ''
Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/ftesting.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/ftesting.zcml 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/ftesting.zcml 2009-11-30 15:27:09 UTC (rev 106121)
@@ -14,18 +14,15 @@
<exclude package="zope.app.authentication.browser" file="httpplugins.zcml" />
<exclude package="zope.app.authentication.browser" file="principalfolder.zcml" />
<exclude package="zope.app.authentication.browser" file="session.zcml" />
- <exclude package="zope.app.i18n.browser" />
- <exclude package="zope.dublincore.browser" />
<!-- meta configure -->
- <include package="zope.i18n" file="meta.zcml" />
<include package="zope.component" file="meta.zcml" />
<include package="zope.app.pagetemplate" file="meta.zcml" />
<include package="zope.app.publication" file="meta.zcml" />
- <include package="zope.app.publisher" file="meta.zcml" />
<include package="zope.principalregistry" file="meta.zcml" />
+ <include package="zope.publisher" file="meta.zcml" />
+ <include package="zope.browserpage" file="meta.zcml" />
<include package="zope.securitypolicy" file="meta.zcml" />
- <include package="zope.viewlet" file="meta.zcml" />
<include package="zope.security" file="meta.zcml" />
<!-- 3rd party meta configure -->
@@ -40,9 +37,7 @@
<include package="zope.app.appsetup" />
<include package="zope.site" />
<include package="zope.container" />
- <include package="zope.app.i18n" />
<include package="zope.app.publication" />
- <include package="zope.app.publisher.browser" />
<include package="zope.app.authentication" />
<include package="zope.securitypolicy" />
<include package="zope.component" />
@@ -50,8 +45,6 @@
<include package="zope.location" />
<include package="zope.publisher" />
<include package="zope.traversing" />
- <include package="zope.traversing.browser" />
- <include package="zope.viewlet" />
<include package="zope.session" />
<include package="zope.security" file="permissions.zcml" />
@@ -122,41 +115,6 @@
class=".ContainerContentsPage"
/>
- <!-- definitions for login-logout tests -->
- <!-- use special template for default.html view -->
- <z3c:layout
- for=".LoginLogoutPage"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- template="login-logout-template.pt"
- />
-
- <z3c:pagelet
- for="zope.container.interfaces.IContainer"
- name="default.html"
- permission="zope.View"
- class=".LoginLogoutPage"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- />
-
- <browser:defaultView
- name="default.html"
- for="zope.container.interfaces.IContainer"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- />
-
- <!-- use tempate with head slot for logout pagelets -->
- <z3c:layout
- for="..browser.auth.LogoutRedirectPagelet"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- template="login-logout-template.pt"
- />
-
- <z3c:layout
- for="..browser.auth.LogoutSuccessPagelet"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- template="login-logout-template.pt"
- />
-
</configure>
@@ -171,19 +129,19 @@
title="Unauthenticated User" />
<unauthenticatedGroup
- id="zope.Anybody"
- title="Unauthenticated Users"
- />
+ id="zope.Anybody"
+ title="Unauthenticated Users"
+ />
<authenticatedGroup
- id="zope.Authenticated"
- title="Authenticated Users"
- />
+ id="zope.Authenticated"
+ title="Authenticated Users"
+ />
<everybodyGroup
- id="zope.Everybody"
- title="All Users"
- />
+ id="zope.Everybody"
+ title="All Users"
+ />
<!-- default users -->
<role
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/login-logout-template.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/login-logout-template.pt 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/login-logout-template.pt 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,11 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <title>PageletTest</title>
- <tal:block replace="structure provider:login-logout-head" />
- </head>
- <body>
- <tal:block replace="structure provider:login-logout" />
- <tal:block replace="structure provider:pagelet" />
- </body>
-</html>
Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/test_layer.py
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/test_layer.py 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/test_layer.py 2009-11-30 15:27:09 UTC (rev 106121)
@@ -38,6 +38,5 @@
def test_suite():
suite = unittest.TestSuite()
suite.addTest(create_suite('../README.txt', checker=checker))
- suite.addTest(create_suite('../login.txt', checker=checker))
suite.addTest(create_suite('bugfixes.txt'))
return suite
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.http.exception.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.http.exception.zcml 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.http.exception.zcml 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,21 +0,0 @@
-<configure
- xmlns="http://namespaces.zope.org/zope"
- i18n_domain="z3c">
-
- <view
- name="index.html"
- for="zope.security.interfaces.IUnauthorized"
- permission="zope.Public"
- factory=".browser.UnauthorizedPagelet"
- type="z3c.layer.pagelet.IPageletBrowserLayer"
- />
-
- <view
- name="index.html"
- for="zope.publisher.interfaces.ITraversalException"
- permission="zope.Public"
- factory=".browser.NotFoundPagelet"
- type="z3c.layer.pagelet.IPageletBrowserLayer"
- />
-
-</configure>
Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.publisher.browser.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.publisher.browser.zcml 2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.publisher.browser.zcml 2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,15 +0,0 @@
-<configure
- xmlns="http://namespaces.zope.org/zope"
- xmlns:browser="http://namespaces.zope.org/browser"
- i18n_domain="z3c">
-
- <browser:page
- name=""
- for="zope.location.interfaces.ISite"
- class="zope.app.publisher.browser.resources.Resources"
- permission="zope.Public"
- allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher"
- layer="z3c.layer.pagelet.IPageletBrowserLayer"
- />
-
-</configure>
Copied: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.browserresource.zcml (from rev 100221, z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.publisher.browser.zcml)
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.browserresource.zcml (rev 0)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.browserresource.zcml 2009-11-30 15:27:09 UTC (rev 106121)
@@ -0,0 +1,15 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:browser="http://namespaces.zope.org/browser"
+ i18n_domain="z3c">
+
+ <browser:page
+ name=""
+ for="zope.location.interfaces.ISite"
+ class="zope.browserresource.resources.Resources"
+ permission="zope.Public"
+ allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher"
+ layer="z3c.layer.pagelet.IPageletBrowserLayer"
+ />
+
+</configure>
More information about the checkins
mailing list