[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