Bulk metadata edit: Fix clearing of series and publishers

Bulk metadata edit: Only clear series if the clear series checkbox is
checked. Also add a clear checkbox for publishers, so that publishers
can be removed. Fixes #1245058 [Calibre is deleting Series field even when it's not being modified](https://bugs.launchpad.net/calibre/+bug/1245058)
This commit is contained in:
Kovid Goyal 2013-10-30 10:26:24 +05:30
parent 059e28e867
commit b50168bbe9
2 changed files with 17 additions and 3 deletions

View File

@ -56,7 +56,7 @@ def get_cover_data(stream, ext): # {{{
Settings = namedtuple('Settings', 'remove_all remove add au aus do_aus rating pub do_series do_autonumber do_remove_format ' Settings = namedtuple('Settings', 'remove_all remove add au aus do_aus rating pub do_series do_autonumber do_remove_format '
'remove_format do_swap_ta do_remove_conv do_auto_author series do_series_restart series_start_value ' 'remove_format do_swap_ta do_remove_conv do_auto_author series do_series_restart series_start_value '
'do_title_case cover_action clear_series pubdate adddate do_title_sort languages clear_languages restore_original comments') 'do_title_case cover_action clear_series clear_pub pubdate adddate do_title_sort languages clear_languages restore_original comments')
null = object() null = object()
class MyBlockingBusy(QDialog): # {{{ class MyBlockingBusy(QDialog): # {{{
@ -240,6 +240,9 @@ class MyBlockingBusy(QDialog): # {{{
if args.rating != -1: if args.rating != -1:
cache.set_field('rating', {bid:args.rating*2 for bid in self.ids}) cache.set_field('rating', {bid:args.rating*2 for bid in self.ids})
if args.clear_pub:
cache.set_field('publisher', {bid:'' for bid in self.ids})
if args.pub: if args.pub:
cache.set_field('publisher', {bid:args.pub for bid in self.ids}) cache.set_field('publisher', {bid:args.pub for bid in self.ids})
@ -957,6 +960,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog):
pub = unicode(self.publisher.text()) pub = unicode(self.publisher.text())
do_series = self.write_series do_series = self.write_series
clear_series = self.clear_series.isChecked() clear_series = self.clear_series.isChecked()
clear_pub = self.clear_pub.isChecked()
series = unicode(self.series.currentText()).strip() series = unicode(self.series.currentText()).strip()
do_autonumber = self.autonumber_series.isChecked() do_autonumber = self.autonumber_series.isChecked()
do_series_restart = self.series_numbering_restarts.isChecked() do_series_restart = self.series_numbering_restarts.isChecked()
@ -992,7 +996,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog):
args = Settings(remove_all, remove, add, au, aus, do_aus, rating, pub, do_series, args = Settings(remove_all, remove, add, au, aus, do_aus, rating, pub, do_series,
do_autonumber, do_remove_format, remove_format, do_swap_ta, do_autonumber, do_remove_format, remove_format, do_swap_ta,
do_remove_conv, do_auto_author, series, do_series_restart, do_remove_conv, do_auto_author, series, do_series_restart,
series_start_value, do_title_case, cover_action, clear_series, series_start_value, do_title_case, cover_action, clear_series, clear_pub,
pubdate, adddate, do_title_sort, languages, clear_languages, pubdate, adddate, do_title_sort, languages, clear_languages,
restore_original, self.comments) restore_original, self.comments)
@ -1023,7 +1027,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog):
return QDialog.accept(self) return QDialog.accept(self)
def series_changed(self, *args): def series_changed(self, *args):
self.write_series = True self.write_series = bool(unicode(self.series.currentText()).strip())
self.autonumber_series.setEnabled(True) self.autonumber_series.setEnabled(True)
def s_r_remove_query(self, *args): def s_r_remove_query(self, *args):

View File

@ -662,6 +662,16 @@ as that of the first selected book.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="2">
<widget class="QCheckBox" name="clear_pub">
<property name="toolTip">
<string>If checked, the publisher will be cleared</string>
</property>
<property name="text">
<string>&amp;Clear pub</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab"> <widget class="QWidget" name="tab">