def _run(self, marc_record):
print()
time.sleep(1)
print('{}{}: {}{}'.format(Fore.WHITE, marc_record.id, marc_record.title(), Style.RESET_ALL).encode('utf-8'))
for field in marc_record.fields:
if field.tag.startswith('6'):
if field.sf('2') == self.source.sf['2']:
if field.match(self.source):
print(' > {}{}{}'.format(Fore.YELLOW, field, Style.RESET_ALL).encode('utf-8'))
else:
print(' {}{}{}'.format(Fore.YELLOW, field, Style.RESET_ALL).encode('utf-8'))
else:
print(' {}'.format(field).encode('utf-8'))
while True:
targets = pick('Make a selection (or press Ctrl-C to abort)', self.targets, OrderedDict((
('REMOVE', 'None of them (remove the field)'),
)))
if 'REMOVE' in targets and len(targets) > 1:
log.warning('Invalid selection. Please try again or press Ctrl-C to abort.')
else:
break
if len(targets) == 0:
log.info('Skipping this record')
return 0
tasks = []
if 'REMOVE' in targets:
tasks.append(DeleteTask(self.source, ignore_extra_subfields=self.ignore_extra_subfields))
else:
tasks.append(ReplaceTask(self.source, targets[0], ignore_extra_subfields=self.ignore_extra_subfields))
for target in targets[1:]:
tasks.append(AddTask(target))
modified = 0
for task in tasks:
modified += task.run(marc_record)
return modified
评论列表
文章目录