def implementation(db, notify_changes, col, book_id, val, append): is_remote = notify_changes is not None field = db.field_metadata.custom_field_prefix + col with db.write_lock: if not db.has_id(book_id): return False, _('No book with id {} exists').format(book_id) try: fm = db.field_metadata[field] except KeyError: return False, _('No column with name {} exists').format(col) if fm['datatype'] == 'series': val, s_index = _get_series_values(val) if s_index is None: s_index = db.get_next_series_num_for(val, field=field) db.set_field(field, {book_id: val}), db.set_field(field + '_index', {book_id: s_index}) msg = _('Data set to: {} [{}]').format( db.field_for(field, book_id), db.field_for(field + '_index', book_id)) else: if append and fm['is_multiple']: val = list(db.field_for(field, book_id)) + [val] db.set_field(field, {book_id: val}) val = db.field_for(field, book_id) if isinstance(val, (tuple, list)): val = fm['is_multiple']['list_to_ui'].join(val) msg = _('Data set to: {}').format(val) if is_remote: notify_changes(metadata((book_id, ))) return True, msg
def implementation(db, notify_changes, col, book_id, val, append): is_remote = notify_changes is not None field = db.field_metadata.custom_field_prefix + col with db.write_lock: if not db.has_id(book_id): return False, _('No book with id {} exists').format(book_id) try: fm = db.field_metadata[field] except KeyError: return False, _('No column with name {} exists').format(col) if fm['datatype'] == 'series': val, s_index = _get_series_values(val) if s_index is None: s_index = db.get_next_series_num_for(val, field=field) db.set_field(field, {book_id: val}), db.set_field(field + '_index', {book_id: s_index}) msg = _('Data set to: {} [{}]').format(db.field_for(field, book_id), db.field_for(field + '_index', book_id)) else: if append and fm['is_multiple']: val = list(db.field_for(field, book_id)) + [val] db.set_field(field, {book_id: val}) val = db.field_for(field, book_id) if isinstance(val, (tuple, list)): val = fm['is_multiple']['list_to_ui'].join(val) msg = _('Data set to: {}').format(val) if is_remote: notify_changes(metadata((book_id,))) return True, msg
def _get_series_values(self, val): return _get_series_values(val)
def _get_series_values(self, val): return _get_series_values(val)