Fix #1926 (Author column sorts by original name instead of latest database entry)

This commit is contained in:
Kovid Goyal 2009-02-24 11:50:59 -08:00
parent 4ea4faf204
commit 3d35381648

View File

@ -916,12 +916,18 @@ class LibraryDatabase2(LibraryDatabase):
else: else:
aid = self.conn.execute('INSERT INTO authors(name) VALUES (?)', (a,)).lastrowid aid = self.conn.execute('INSERT INTO authors(name) VALUES (?)', (a,)).lastrowid
try: try:
self.conn.execute('INSERT INTO books_authors_link(book, author) VALUES (?,?)', (id, aid)) self.conn.execute('INSERT INTO books_authors_link(book, author) VALUES (?,?)',
(id, aid))
except IntegrityError: # Sometimes books specify the same author twice in their metadata except IntegrityError: # Sometimes books specify the same author twice in their metadata
pass pass
ss = authors_to_sort_string(authors)
self.conn.execute('UPDATE books SET author_sort=? WHERE id=?',
(ss, id))
self.conn.commit() self.conn.commit()
self.data.set(id, FIELD_MAP['authors'], ','.join([a.replace(',', '|') for a in authors]), row_is_id=True) self.data.set(id, FIELD_MAP['authors'],
self.data.set(id, FIELD_MAP['author_sort'], self.data[self.data.row(id)][FIELD_MAP['authors']], row_is_id=True) ','.join([a.replace(',', '|') for a in authors]),
row_is_id=True)
self.data.set(id, FIELD_MAP['author_sort'], ss, row_is_id=True)
self.set_path(id, True) self.set_path(id, True)
if notify: if notify:
self.notify('metadata', [id]) self.notify('metadata', [id])