[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