[Checkins] SVN: Sandbox/luciano/kirbi/src/kirbi/ implemented first
pac doctest (currently broken)
Luciano Ramalho
luciano at ramalho.org
Tue Jul 31 00:41:29 EDT 2007
Log message for revision 78499:
implemented first pac doctest (currently broken)
Changed:
U Sandbox/luciano/kirbi/src/kirbi/book.py
U Sandbox/luciano/kirbi/src/kirbi/pac.py
A Sandbox/luciano/kirbi/src/kirbi/tests/test_pac.py
A Sandbox/luciano/kirbi/src/kirbi/tests/test_pac.txt
-=-
Modified: Sandbox/luciano/kirbi/src/kirbi/book.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/book.py 2007-07-31 01:58:23 UTC (rev 78498)
+++ Sandbox/luciano/kirbi/src/kirbi/book.py 2007-07-31 04:41:28 UTC (rev 78499)
@@ -1,7 +1,7 @@
import grok
from zope.interface import Interface, implements, invariant, Invalid
from zope import schema
-from isbn import isValidISBN, isValidISBN10, isValidISBN13
+from isbn import isValidISBN, isValidISBN10, isValidISBN13, filterDigits
from isbn import convertISBN10toISBN13, convertISBN13toLang
import os
@@ -76,7 +76,7 @@
>>> won = Book( u'The Wealth of Networks: How Social Production...')
>>> won.filing_title
u'The Wealth of Networks: How Social Production...'
- >>> won.isbn = '9780300110562'
+ >>> won.isbn = '978-0300110562'
>>> won.language
'en'
>>> won.setFilingTitle()
@@ -129,7 +129,7 @@
if isbn is None: return
self.__isbn = isbn
if isValidISBN13(isbn):
- self.__isbn13 = isbn
+ self.__isbn13 = filterDigits(isbn)
elif isValidISBN10(isbn):
self.__isbn13 = convertISBN10toISBN13(isbn)
Modified: Sandbox/luciano/kirbi/src/kirbi/pac.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/pac.py 2007-07-31 01:58:23 UTC (rev 78498)
+++ Sandbox/luciano/kirbi/src/kirbi/pac.py 2007-07-31 04:41:28 UTC (rev 78499)
@@ -27,6 +27,11 @@
super(Pac, self).__init__()
self.pending_isbns = PersistentList()
+ def addBook(self, book):
+ name = INameChooser(self).chooseName(book.isbn13, book)
+ self[name] = book
+ return name
+
@grok.subscribe(Book, grok.IObjectAddedEvent)
def bookAdded(book, event):
if not book.title:
@@ -89,12 +94,10 @@
@grok.action('Add book')
def add(self, **data):
- pac = self.context
book = Book()
self.applyData(book, **data)
- name = INameChooser(pac).chooseName(data.get('isbn13'), book)
- pac[name] = book
- self.redirect(self.url(pac))
+ self.context.addBook(book)
+ self.redirect(self.url(self.context))
class NameChooser(grok.Adapter, BaseNameChooser):
implements(INameChooser)
@@ -129,22 +132,18 @@
class PacRPC(grok.XMLRPC):
def list(self):
- return list(self.context.keys())
+ return list(self.context)
def pending_isbns(self):
return list(self.context.pending_isbns)
def add(self, book_dict):
- pac = self.context
book = Book(**book_dict)
- name = INameChooser(pac).chooseName(book_dict.get('isbn13'), book)
- pac[name] = book
- return name
+ return self.context.addBook(book)
class ImportDemo(grok.View):
def render(self):
- pac = self.context
from demo.collection import collection
for record in collection:
if record['name']:
@@ -154,7 +153,6 @@
if record[key] is None:
del record[key]
book = Book(**record)
- name = INameChooser(pac).chooseName(record.get('isbn13'), book)
- pac[name] = book
+ self.context.addBook(book)
self.redirect(self.url('index'))
Added: Sandbox/luciano/kirbi/src/kirbi/tests/test_pac.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/tests/test_pac.py (rev 0)
+++ Sandbox/luciano/kirbi/src/kirbi/tests/test_pac.py 2007-07-31 04:41:28 UTC (rev 78499)
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+
+import unittest
+from doctest import DocFileSuite
+
+def test_suite():
+ return unittest.TestSuite(DocFileSuite('test_pac.txt'))
+
+if __name__ == '__main__':
+ unittest.main()
Added: Sandbox/luciano/kirbi/src/kirbi/tests/test_pac.txt
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/tests/test_pac.txt (rev 0)
+++ Sandbox/luciano/kirbi/src/kirbi/tests/test_pac.txt 2007-07-31 04:41:28 UTC (rev 78499)
@@ -0,0 +1,20 @@
+==============================================
+Pac: The Public Access Catalog container class
+==============================================
+
+A Pac is designed to store book records. Let's create one and put a few
+books in it::
+
+ >>> from kirbi.pac import Pac
+ >>> from kirbi.book import Book
+ >>> pac = Pac()
+ >>> pac.addBook(Book(u'Zero'))
+ >>> pac.addBook(Book(isbn13='978-0670030583'))
+ >>> pac.addBook(Book(u'A Tale of Two Cities', isbn13='978-0141439600'))
+ >>> sorted(pac)
+ ['9780141439600', '9780670030583', 'k0001']
+
+One of the books does has ISBN but no Title, so it's put in the fetch queue::
+
+ >>> len(pac)
+ 3
More information about the Checkins
mailing list