[Checkins] SVN: Sandbox/luciano/kirbi/src/kirbi/ join form now
working
Luciano Ramalho
luciano at ramalho.org
Fri Aug 17 01:24:44 EDT 2007
Log message for revision 78897:
join form now working
Changed:
U Sandbox/luciano/kirbi/src/kirbi/app.py
U Sandbox/luciano/kirbi/src/kirbi/app_templates/master.pt
U Sandbox/luciano/kirbi/src/kirbi/configure.zcml
U Sandbox/luciano/kirbi/src/kirbi/user.py
-=-
Modified: Sandbox/luciano/kirbi/src/kirbi/app.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/app.py 2007-08-17 04:24:21 UTC (rev 78896)
+++ Sandbox/luciano/kirbi/src/kirbi/app.py 2007-08-17 05:24:43 UTC (rev 78897)
@@ -2,7 +2,8 @@
from grok import index
from kirbi.pac import Pac
from kirbi.book import Book
-from kirbi.user import UserFolder
+from kirbi.user import User, UserFolder
+from kirbi.interfaces import IUser
from zope.interface import Interface, implements
from zope.component import getSiteManager
from zope.traversing import browser
@@ -17,7 +18,9 @@
from zope.app.securitypolicy.interfaces import IRolePermissionManager
from zope.app.securitypolicy.role import LocalRole
from zope import schema
+from zope.component import getUtility
+
PAC_NAME = u'pac'
USER_FOLDER_NAME = u'u'
@@ -94,3 +97,31 @@
grok.context(Interface)
def render(self):
return "This should log you out (but doesn't yet)."
+
+class Join(grok.AddForm):
+ """User registration form"""
+ grok.context(Kirbi)
+
+ form_fields = grok.AutoFields(IUser)
+ template = grok.PageTemplateFile('form.pt')
+ form_title = u'User registration'
+
+ ### XXX: find out how to display message of the Invalid exception raised
+ ### by the password confirmation invariant (see interfaces.IUser)
+ @grok.action('Save')
+ def join(self, **data):
+ login = data['login']
+ self.context[login] = User(**data)
+
+ #XXX: change this to use our User class instead of the InternalPrincipal
+ # add principal to principal folder
+ pau = getUtility(IAuthentication)
+ principals = pau['principals']
+ principals[login] = InternalPrincipal(login, data['password'],
+ data['name'])
+
+ # assign role to principal
+ role_manager = IPrincipalRoleManager(self.context)
+ role_manager.assignRoleToPrincipal('kirbi.Owner',
+ principals.prefix + login)
+ self.redirect(self.url(login))
Modified: Sandbox/luciano/kirbi/src/kirbi/app_templates/master.pt
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/app_templates/master.pt 2007-08-17 04:24:21 UTC (rev 78896)
+++ Sandbox/luciano/kirbi/src/kirbi/app_templates/master.pt 2007-08-17 05:24:43 UTC (rev 78897)
@@ -28,14 +28,14 @@
</a>
<ul tal:condition="not:exists:view/request/principal/getLogin">
<li><a tal:attributes="href python:view.application_url('pac')">catalog</a></li>
- <li><a tal:attributes="href python:view.application_url('u/login')">login</a></li>
- <li><a tal:attributes="href python:view.application_url('u/join')">join</a></li>
+ <li><a tal:attributes="href python:view.application_url('login')">login</a></li>
+ <li><a tal:attributes="href python:view.application_url('join')">join</a></li>
</ul>
<ul tal:condition="exists:view/request/principal/getLogin">
<li><a tal:attributes="href python:view.application_url('pac')">catalog</a></li>
<li><a tal:attributes="href python:view.application_url('u')">users</a></li>
<li><a tal:attributes="href python:view.application_url('pac/addbooks')">add books</a></li>
- <li><a tal:attributes="href python:view.application_url('u/logout')">logout</a></li>
+ <li><a tal:attributes="href python:view.application_url('logout')">logout</a></li>
</ul>
</div>
<div metal:define-slot="body">
Modified: Sandbox/luciano/kirbi/src/kirbi/configure.zcml
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/configure.zcml 2007-08-17 04:24:21 UTC (rev 78896)
+++ Sandbox/luciano/kirbi/src/kirbi/configure.zcml 2007-08-17 05:24:43 UTC (rev 78897)
@@ -1,5 +1,6 @@
<configure xmlns="http://namespaces.zope.org/zope"
xmlns:grok="http://namespaces.zope.org/grok">
<include package="grok" />
+ <include package="zope.app.session" />
<grok:grok package="." />
</configure>
Modified: Sandbox/luciano/kirbi/src/kirbi/user.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/user.py 2007-08-17 04:24:21 UTC (rev 78896)
+++ Sandbox/luciano/kirbi/src/kirbi/user.py 2007-08-17 05:24:43 UTC (rev 78897)
@@ -2,7 +2,9 @@
from interfaces import IUser
from zope.app.authentication.interfaces import IPrincipalInfo
from zope.app.authentication.interfaces import IAuthenticatorPlugin
+from zope.app.authentication.principalfolder import InternalPrincipal
from zope.app.security.interfaces import IUnauthenticatedPrincipal
+from zope.app.security.interfaces import IAuthentication
from zope.interface import Interface, implements, invariant, Invalid
import sha
import app
@@ -106,30 +108,3 @@
def update(self, query=None):
self.results_title = '%d users' % len(self.context)
-class Join(grok.AddForm):
- """User registration form"""
- grok.context(UserFolder)
-
- form_fields = grok.AutoFields(IUser)
- template = grok.PageTemplateFile('form.pt')
- form_title = u'User registration'
-
- ### XXX: find out how to display message of the Invalid exception raised
- ### by the password confirmation invariant (see interfaces.IUser)
- @grok.action('Save')
- def join(self, **data):
- login = data['login']
- self.context[login] = User(**data)
-
- #XXX: change this to use our User class instead of the InternalPrincipal
- # add principal to principal folder
- pau = component.getUtility(IAuthentication)
- principals = pau['principals']
- principals[email] = InternalPrincipal(login, password, name)
-
- # assign role to principal
- role_manager = IPrincipalRoleManager(self.context)
- role_manager.assignRoleToPrincipal('kirbi.Owner',
- principals.prefix + login)
- self.redirect(self.url(login))
-
More information about the Checkins
mailing list