[Checkins] SVN: Sandbox/luciano/kirbi/src/kirbi/ updated import demo collection to work with new collection model

Luciano Ramalho luciano at ramalho.org
Mon Aug 20 17:01:55 EDT 2007


Log message for revision 79050:
  updated import demo collection to work with new collection model
  

Changed:
  U   Sandbox/luciano/kirbi/src/kirbi/collection.py
  U   Sandbox/luciano/kirbi/src/kirbi/collection_templates/addbookitems.pt
  U   Sandbox/luciano/kirbi/src/kirbi/pac.py
  U   Sandbox/luciano/kirbi/src/kirbi/pac_templates/addbooks.pt

-=-
Modified: Sandbox/luciano/kirbi/src/kirbi/collection.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/collection.py	2007-08-20 20:06:50 UTC (rev 79049)
+++ Sandbox/luciano/kirbi/src/kirbi/collection.py	2007-08-20 21:01:54 UTC (rev 79050)
@@ -66,12 +66,13 @@
 
     invalid_isbns = []
 
-    def update(self, isbns=None, retry_isbns=None):
+    def update(self, isbns=None, retry_isbns=None, refreshed=False):
         self.pac = grok.getSite()['pac']
         self.invalid_isbns = []
         if isbns is not None:
-            isbns = list(set(isbns.split()))
-            for isbn in isbns:
+            if isinstance(isbns, basestring):
+                isbns = isbns.split()
+            for isbn in set(isbns): #use set to remove duplicates
                 try:
                     isbn13 = toISBN13(isbn)
                 except InvalidISBN:
@@ -84,15 +85,23 @@
                     self.pac.addBook(book)
                 item = Item(book.__name__)
                 self.context.addItem(item)
+            if len(isbns) > len(self.invalid_isbns):
+                added = True
 
         if retry_isbns:
             self.context.retryPending(retry_isbns)
         # XXX this would be great with AJAX, avoiding the ugly refresh
-        if (not self.invalid_isbns) and (self.pac.getIncomplete()
-                                         or self.pac.getPending()):
-            self.request.response.setHeader("Refresh", "5; url=%s" % self.url())
+        # If there are no invalid_isbns in the text area, set refresh or redirect
+        if not self.invalid_isbns:
+            if self.pac.getIncomplete() or self.pac.getPending():
+                # Refresh page while there are pending books
+                self.request.response.setHeader("Refresh", "5; url=%s?refreshed=1" % self.url())
+            elif refreshed:
+                # Redirect to collection if nothing is pending and we came from
+                # a refresh (i.e. this is not the first visit to the form)
+                self.redirect(self.url(self.context))
 
-    def invalidISBNs(self):
+    def getInvalidISBNs(self):
         if self.invalid_isbns:
             return '\n'.join(self.invalid_isbns)
         else:
@@ -112,6 +121,16 @@
         self.pac = self.context.__parent__.__parent__['pac']
         return list(self.sortedByTime(self.pac.getPending()))
 
+class ImportSample(grok.View):
+                
+    def render(self, quantity=10):
+        from demo.collection import collection
+        from random import shuffle
+        isbns = [book['isbn13'] for book in collection]
+        shuffle(isbns)
+        adder = AddBookItems(self.context, self.request)
+        adder.update(isbns[:quantity])
+        self.redirect(self.url('addbookitems'))
 
     
 

Modified: Sandbox/luciano/kirbi/src/kirbi/collection_templates/addbookitems.pt
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/collection_templates/addbookitems.pt	2007-08-20 20:06:50 UTC (rev 79049)
+++ Sandbox/luciano/kirbi/src/kirbi/collection_templates/addbookitems.pt	2007-08-20 21:01:54 UTC (rev 79050)
@@ -13,12 +13,12 @@
     <form tal:attributes="action view/url" method="post">
         <p>Type or scan several ISBNs separated by spaces or newlines.<br />
            Either 10 or 13-digit ISBNs can be used.</p>
-        <p class="error" tal:condition="view/invalidISBNs">
+        <p class="error" tal:condition="view/getInvalidISBNs">
             The numbers remaining in the field below are not valid ISBN-10
             or ISBN-13.
         </p>
         <textarea name="isbns" rows="20" cols="40"
-            tal:content="view/invalidISBNs">
+            tal:content="view/getInvalidISBNs">
         </textarea>
         <br />
         <input type="submit" value="Add books">
@@ -26,9 +26,9 @@
     </form>
     <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 tal:attributes="action python:view.url('importsample')" method="post">
+        If you have no ISBNs on hand, you can 
+        <input type="submit" value="Import a random sample of real ISBNs">
     </form>
     </p>
 

Modified: Sandbox/luciano/kirbi/src/kirbi/pac.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/pac.py	2007-08-20 20:06:50 UTC (rev 79049)
+++ Sandbox/luciano/kirbi/src/kirbi/pac.py	2007-08-20 21:01:54 UTC (rev 79050)
@@ -227,6 +227,9 @@
         return self.context.dumpIncomplete()
 
 class ImportDemo(grok.View):
+    
+    # XXX: this is scaffolding;
+    #      currently there are no links to this view in the UI
 
     def render(self):
         from demo.collection import collection

Modified: Sandbox/luciano/kirbi/src/kirbi/pac_templates/addbooks.pt
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/pac_templates/addbooks.pt	2007-08-20 20:06:50 UTC (rev 79049)
+++ Sandbox/luciano/kirbi/src/kirbi/pac_templates/addbooks.pt	2007-08-20 21:01:54 UTC (rev 79050)
@@ -24,13 +24,6 @@
         <input type="submit" value="Add books">
         <br />
     </form>
-    <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>
 
     </td><td valign="top">
 



More information about the Checkins mailing list