[Checkins] SVN: Sandbox/luciano/kirbi/src/kirbi/ begin user managament work

Luciano Ramalho luciano at ramalho.org
Sat Aug 11 23:20:41 EDT 2007


Log message for revision 78751:
  begin user managament work
  

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/pac.py
  U   Sandbox/luciano/kirbi/src/kirbi/pac_templates/addbooks.pt
  U   Sandbox/luciano/kirbi/src/kirbi/pac_templates/index.pt
  A   Sandbox/luciano/kirbi/src/kirbi/users.py
  A   Sandbox/luciano/kirbi/src/kirbi/users_templates/
  A   Sandbox/luciano/kirbi/src/kirbi/users_templates/index.pt

-=-
Modified: Sandbox/luciano/kirbi/src/kirbi/app.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/app.py	2007-08-12 01:50:06 UTC (rev 78750)
+++ Sandbox/luciano/kirbi/src/kirbi/app.py	2007-08-12 03:20:40 UTC (rev 78751)
@@ -2,6 +2,7 @@
 from grok import index
 from kirbi.pac import Pac
 from kirbi.book import Book
+from kirbi.users import UserFolder
 from zope.interface import Interface
 
 class Kirbi(grok.Application, grok.Container):
@@ -9,6 +10,7 @@
     def __init__(self):
         super(Kirbi, self).__init__()
         self['pac'] = Pac()
+        self['users'] = UserFolder()
 
 class Index(grok.View):
     pass # see app_templates/index.pt
@@ -28,3 +30,4 @@
 class Master(grok.View):
     """ The master page template macro """
     grok.context(Interface)
+    

Modified: Sandbox/luciano/kirbi/src/kirbi/app_templates/master.pt
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/app_templates/master.pt	2007-08-12 01:50:06 UTC (rev 78750)
+++ Sandbox/luciano/kirbi/src/kirbi/app_templates/master.pt	2007-08-12 03:20:40 UTC (rev 78751)
@@ -28,7 +28,7 @@
     <ul>
         <li><a tal:attributes="href python:view.application_url('pac')">catalog</a></li>
         <li><a tal:attributes="href python:view.application_url()">collection</a></li>
-        <li><a tal:attributes="href python:view.application_url()">friends</a></li>
+        <li><a tal:attributes="href python:view.application_url('users')">users</a></li>
         <li><a tal:attributes="href python:view.application_url()">leases</a></li>
         <li><a tal:attributes="href python:view.application_url('pac')+'/incomplete'">incomplete</a></li>
     </ul>

Modified: Sandbox/luciano/kirbi/src/kirbi/pac.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/pac.py	2007-08-12 01:50:06 UTC (rev 78750)
+++ Sandbox/luciano/kirbi/src/kirbi/pac.py	2007-08-12 03:20:40 UTC (rev 78751)
@@ -109,8 +109,6 @@
             # XXX: if the query is empty, return all books; this should change
             # to some limited default search criteria or none at all
             results = self.context.values()
-            if not results:
-                self.demo_link = True # flag to display Import demo collection
             self.results_title = 'All items'
         else:
             query = query.strip()
@@ -165,12 +163,13 @@
     
     def update(self, isbns=None):
         if isbns is not None:
-            isbns = isbns.split()
+            isbns = list(set(isbns.split()))
+            self.invalid_isbns = []
             for isbn in isbns:
-                self.invalid_isbns = []
                 if isValidISBN(isbn):
                     book = Book(isbn=isbn)
-                    self.context.addBook(book)
+                    if book.isbn13 not in self.context:
+                        self.context.addBook(book)
                 else:
                     self.invalid_isbns.append(isbn)
                     

Modified: Sandbox/luciano/kirbi/src/kirbi/pac_templates/addbooks.pt
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/pac_templates/addbooks.pt	2007-08-12 01:50:06 UTC (rev 78750)
+++ Sandbox/luciano/kirbi/src/kirbi/pac_templates/addbooks.pt	2007-08-12 03:20:40 UTC (rev 78751)
@@ -29,13 +29,14 @@
             or ISBN-13.
         </p>
     </form>
-
-    <form tal:condition="view/demo_link|nothing"
-          tal:attributes="action python:view.url('importdemo')" method="post">
+    <hr />
+    <p>
+    <form tal:attributes="action python:view.url('importdemo')" method="post">
+        If you have no ISBNs on hand, you can
         <input type="submit" value="Import a demo collection">
     </form>
+    </p>
 
-
   </div>
 </body>
 </html>

Modified: Sandbox/luciano/kirbi/src/kirbi/pac_templates/index.pt
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/pac_templates/index.pt	2007-08-12 01:50:06 UTC (rev 78750)
+++ Sandbox/luciano/kirbi/src/kirbi/pac_templates/index.pt	2007-08-12 03:20:40 UTC (rev 78751)
@@ -36,11 +36,6 @@
         </tr>
     </table>
 
-    <form tal:condition="view/demo_link|nothing"
-          tal:attributes="action python:view.url('importdemo')" method="post">
-        <input type="submit" value="Import a demo collection">
-    </form>
-
     <p><a tal:attributes="href python:view.url('addbook')">
             Add Book
     </a></p>

Added: Sandbox/luciano/kirbi/src/kirbi/users.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/users.py	                        (rev 0)
+++ Sandbox/luciano/kirbi/src/kirbi/users.py	2007-08-12 03:20:40 UTC (rev 78751)
@@ -0,0 +1,28 @@
+import grok
+from zope.app.authentication.principalfolder import PrincipalFolder, PrincipalInfo, InternalPrincipal
+from zope.app.authentication.interfaces import IPrincipalInfo
+
+
+class UserFolder(grok.Container, PrincipalFolder):
+    pass
+
+class User(InternalPrincipal):
+    pass
+
+class Index(grok.View):
+    grok.context(UserFolder)
+    def update(self, query=None):
+        self.results_title = '%d users' % len(self.context)
+
+    
+class Register(grok.AddForm):
+    grok.context(UserFolder)
+    """ User registration form """
+    
+    form_fields = grok.AutoFields(IPrincipalInfo)
+
+    @grok.action('Add entry')
+    def add(self, **data):
+        self.context[id] = User(**data)
+        self.redirect(self.url('users'))
+

Added: Sandbox/luciano/kirbi/src/kirbi/users_templates/index.pt
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/users_templates/index.pt	                        (rev 0)
+++ Sandbox/luciano/kirbi/src/kirbi/users_templates/index.pt	2007-08-12 03:20:40 UTC (rev 78751)
@@ -0,0 +1,28 @@
+<html metal:use-macro="context/@@master/page">
+<head>
+    <title metal:fill-slot="title">
+        Public Catalog
+    </title>
+
+</head>
+<body>
+  <span metal:fill-slot="content_title">Users</span>
+  <span metal:fill-slot="content_actions">
+    <form class="search" action=".">
+        <input type="text" name="query">
+        <input type="submit" name="submit" value="search">
+    </form>
+  </span>
+  <div metal:fill-slot="content">
+
+    <h3 tal:content="view/results_title">999 items matched the query</h3>
+    <table>
+        <tr tal:repeat="item view/context/keys">
+            <th align="right" tal:content="repeat/item/number" />
+            <td tal:content="item/id" />
+        </tr>
+    </table>
+
+  </div>
+</body>
+</html>



More information about the Checkins mailing list