[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