Respect series nunmbering increment tweak when bulk editing series

This commit is contained in:
Kovid Goyal 2013-07-22 08:23:47 +05:30
parent 5727ff9fa4
commit 67b7aa8d11
2 changed files with 13 additions and 4 deletions

View File

@ -1170,7 +1170,7 @@ class Cache(object):
self._update_last_modified(tuple(formats_map.iterkeys())) self._update_last_modified(tuple(formats_map.iterkeys()))
@read_api @read_api
def get_next_series_num_for(self, series, field='series'): def get_next_series_num_for(self, series, field='series', current_indices=False):
books = () books = ()
sf = self.fields[field] sf = self.fields[field]
if series: if series:
@ -1180,6 +1180,8 @@ class Cache(object):
books = book_ids books = book_ids
break break
series_indices = sorted(self._field_for(sf.index_field.name, book_id) for book_id in books) series_indices = sorted(self._field_for(sf.index_field.name, book_id) for book_id in books)
if current_indices:
return series_indices
return _get_next_series_num_for_list(tuple(series_indices), unwrap=False) return _get_next_series_num_for_list(tuple(series_indices), unwrap=False)
@read_api @read_api

View File

@ -27,7 +27,7 @@ from calibre.utils.config import prefs, tweaks
from calibre.utils.magick.draw import identify_data from calibre.utils.magick.draw import identify_data
from calibre.utils.date import qt_to_dt from calibre.utils.date import qt_to_dt
from calibre.ptempfile import SpooledTemporaryFile from calibre.ptempfile import SpooledTemporaryFile
from calibre.db import SPOOL_SIZE from calibre.db import SPOOL_SIZE, _get_next_series_num_for_list
def get_cover_data(stream, ext): # {{{ def get_cover_data(stream, ext): # {{{
from calibre.ebooks.metadata.meta import get_metadata from calibre.ebooks.metadata.meta import get_metadata
@ -237,8 +237,15 @@ class MyBlockingBusyNew(QDialog):
if not args.series: if not args.series:
cache.set_field('series_index', {bid:1.0 for bid in self.ids}) cache.set_field('series_index', {bid:1.0 for bid in self.ids})
else: else:
sval = args.series_start_value if args.do_series_restart else cache.get_next_series_num_for(args.series) sval = args.series_start_value if args.do_series_restart else list(cache.get_next_series_num_for(args.series, current_indices=True))
smap = {bid:((sval + i) if args.do_autonumber else 1.0) for i, bid in enumerate(self.ids)} def next_series_num(i):
if args.do_series_restart:
return sval + i
next_num = _get_next_series_num_for_list(sval, unwrap=False)
sval.append(next_num)
return next_num
smap = {bid:next_series_num(i) for i, bid in enumerate(self.ids)}
if args.do_autonumber or tweaks['series_index_auto_increment'] != 'no_change': if args.do_autonumber or tweaks['series_index_auto_increment'] != 'no_change':
cache.set_field('series_index', smap) cache.set_field('series_index', smap)