__all__ = ['Author', 'Book', 'Extension', 'Genre', 'Language',
'AuthorBook', 'BookGenre',
- 'init_db', 'insert_name', 'update_counters',
+ 'init_db', 'insert_name', 'insert_author', 'update_counters',
]
import os
return table(name=name, count=0, **kw)
+def insert_author(surname, name, misc_name):
+ try:
+ return Author.full_name_idx.get(
+ surname=surname, name=name, misc_name=misc_name)
+ except SQLObjectNotFound:
+ return Author(surname=surname, name=name, misc_name=misc_name, count=0)
+
+
def update_counters():
for author in Author.select():
author.count = len(author.books)
import os
from zipfile import ZipFile
from sqlobject import sqlhub, SQLObjectNotFound
-from .db import Author, Book, Extension, Genre, Language, insert_name
+from .db import Author, Book, Extension, Genre, Language, \
+ insert_name, insert_author
EOT = chr(4) # INP field separator
language=language_row)
for author in authors.split(':'):
if author:
- author_row = insert_name(Author, author)
+ alist = author.split(',', 2)
+ surname = alist[0]
+ if len(alist) > 1:
+ name = alist[1]
+ if len(alist) == 3:
+ misc_name = alist[2]
+ else:
+ misc_name = ''
+ else:
+ name = misc_name = ''
+ author_row = insert_author(surname, name, misc_name)
book.addAuthor(author_row)
for genre in genres.split(':'):
if genre: