mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix case changing even when allow_case_changes=False when setting
series/tags/publisher and the value being set is the only instance in the db. Also rationalize the way books_to_refresh works.
This commit is contained in:
parent
2dec08b6fb
commit
69c3f37f33
@ -2423,7 +2423,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
if not authors:
|
if not authors:
|
||||||
authors = [_('Unknown')]
|
authors = [_('Unknown')]
|
||||||
self.conn.execute('DELETE FROM books_authors_link WHERE book=?',(id,))
|
self.conn.execute('DELETE FROM books_authors_link WHERE book=?',(id,))
|
||||||
books_to_refresh = set([])
|
books_to_refresh = {id}
|
||||||
final_authors = []
|
final_authors = []
|
||||||
for a in authors:
|
for a in authors:
|
||||||
case_change = False
|
case_change = False
|
||||||
@ -2615,10 +2615,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
def set_publisher(self, id, publisher, notify=True, commit=True,
|
def set_publisher(self, id, publisher, notify=True, commit=True,
|
||||||
allow_case_change=False):
|
allow_case_change=False):
|
||||||
self.conn.execute('DELETE FROM books_publishers_link WHERE book=?',(id,))
|
self.conn.execute('DELETE FROM books_publishers_link WHERE book=?',(id,))
|
||||||
self.conn.execute('''DELETE FROM publishers WHERE (SELECT COUNT(id)
|
books_to_refresh = {id}
|
||||||
FROM books_publishers_link
|
|
||||||
WHERE publisher=publishers.id) < 1''')
|
|
||||||
books_to_refresh = set([])
|
|
||||||
if publisher:
|
if publisher:
|
||||||
case_change = False
|
case_change = False
|
||||||
if not isinstance(publisher, unicode):
|
if not isinstance(publisher, unicode):
|
||||||
@ -2634,6 +2631,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
case_change = True
|
case_change = True
|
||||||
else:
|
else:
|
||||||
publisher = cur_name
|
publisher = cur_name
|
||||||
|
books_to_refresh = set()
|
||||||
else:
|
else:
|
||||||
aid = self.conn.execute('''INSERT INTO publishers(name)
|
aid = self.conn.execute('''INSERT INTO publishers(name)
|
||||||
VALUES (?)''', (publisher,)).lastrowid
|
VALUES (?)''', (publisher,)).lastrowid
|
||||||
@ -2643,6 +2641,10 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
bks = self.conn.get('''SELECT book FROM books_publishers_link
|
bks = self.conn.get('''SELECT book FROM books_publishers_link
|
||||||
WHERE publisher=?''', (aid,))
|
WHERE publisher=?''', (aid,))
|
||||||
books_to_refresh |= set([bk[0] for bk in bks])
|
books_to_refresh |= set([bk[0] for bk in bks])
|
||||||
|
self.conn.execute('''DELETE FROM publishers WHERE (SELECT COUNT(id)
|
||||||
|
FROM books_publishers_link
|
||||||
|
WHERE publisher=publishers.id) < 1''')
|
||||||
|
|
||||||
self.dirtied(set([id])|books_to_refresh, commit=False)
|
self.dirtied(set([id])|books_to_refresh, commit=False)
|
||||||
if commit:
|
if commit:
|
||||||
self.conn.commit()
|
self.conn.commit()
|
||||||
@ -3054,11 +3056,9 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
tags = []
|
tags = []
|
||||||
if not append:
|
if not append:
|
||||||
self.conn.execute('DELETE FROM books_tags_link WHERE book=?', (id,))
|
self.conn.execute('DELETE FROM books_tags_link WHERE book=?', (id,))
|
||||||
self.conn.execute('''DELETE FROM tags WHERE (SELECT COUNT(id)
|
|
||||||
FROM books_tags_link WHERE tag=tags.id) < 1''')
|
|
||||||
otags = self.get_tags(id)
|
otags = self.get_tags(id)
|
||||||
tags = self.cleanup_tags(tags)
|
tags = self.cleanup_tags(tags)
|
||||||
books_to_refresh = set([])
|
books_to_refresh = {id}
|
||||||
for tag in (set(tags)-otags):
|
for tag in (set(tags)-otags):
|
||||||
case_changed = False
|
case_changed = False
|
||||||
tag = tag.strip()
|
tag = tag.strip()
|
||||||
@ -3089,6 +3089,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
bks = self.conn.get('SELECT book FROM books_tags_link WHERE tag=?',
|
bks = self.conn.get('SELECT book FROM books_tags_link WHERE tag=?',
|
||||||
(tid,))
|
(tid,))
|
||||||
books_to_refresh |= set([bk[0] for bk in bks])
|
books_to_refresh |= set([bk[0] for bk in bks])
|
||||||
|
self.conn.execute('''DELETE FROM tags WHERE (SELECT COUNT(id)
|
||||||
|
FROM books_tags_link WHERE tag=tags.id) < 1''')
|
||||||
self.dirtied(set([id])|books_to_refresh, commit=False)
|
self.dirtied(set([id])|books_to_refresh, commit=False)
|
||||||
if commit:
|
if commit:
|
||||||
self.conn.commit()
|
self.conn.commit()
|
||||||
@ -3139,11 +3141,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
|
|
||||||
def set_series(self, id, series, notify=True, commit=True, allow_case_change=True):
|
def set_series(self, id, series, notify=True, commit=True, allow_case_change=True):
|
||||||
self.conn.execute('DELETE FROM books_series_link WHERE book=?',(id,))
|
self.conn.execute('DELETE FROM books_series_link WHERE book=?',(id,))
|
||||||
self.conn.execute('''DELETE FROM series
|
|
||||||
WHERE (SELECT COUNT(id) FROM books_series_link
|
|
||||||
WHERE series=series.id) < 1''')
|
|
||||||
(series, idx) = self._get_series_values(series)
|
(series, idx) = self._get_series_values(series)
|
||||||
books_to_refresh = set([])
|
books_to_refresh = {id}
|
||||||
if series:
|
if series:
|
||||||
case_change = False
|
case_change = False
|
||||||
if not isinstance(series, unicode):
|
if not isinstance(series, unicode):
|
||||||
@ -3159,6 +3158,7 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
case_change = True
|
case_change = True
|
||||||
else:
|
else:
|
||||||
series = cur_name
|
series = cur_name
|
||||||
|
books_to_refresh = set()
|
||||||
else:
|
else:
|
||||||
aid = self.conn.execute('INSERT INTO series(name) VALUES (?)', (series,)).lastrowid
|
aid = self.conn.execute('INSERT INTO series(name) VALUES (?)', (series,)).lastrowid
|
||||||
self.conn.execute('INSERT INTO books_series_link(book, series) VALUES (?,?)', (id, aid))
|
self.conn.execute('INSERT INTO books_series_link(book, series) VALUES (?,?)', (id, aid))
|
||||||
@ -3168,6 +3168,9 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
bks = self.conn.get('SELECT book FROM books_series_link WHERE series=?',
|
bks = self.conn.get('SELECT book FROM books_series_link WHERE series=?',
|
||||||
(aid,))
|
(aid,))
|
||||||
books_to_refresh |= set([bk[0] for bk in bks])
|
books_to_refresh |= set([bk[0] for bk in bks])
|
||||||
|
self.conn.execute('''DELETE FROM series
|
||||||
|
WHERE (SELECT COUNT(id) FROM books_series_link
|
||||||
|
WHERE series=series.id) < 1''')
|
||||||
self.dirtied([id], commit=False)
|
self.dirtied([id], commit=False)
|
||||||
if commit:
|
if commit:
|
||||||
self.conn.commit()
|
self.conn.commit()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user