Skip to content

Commit 80f81af

Browse files
author
Dominick Leppich
committed
task: add force mode to mets migration
1 parent 27992d3 commit 80f81af

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

migration/lib/mets_context.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
RECORD_PATTERN = re.compile('^(\\d+).*$')
77

88
class Context:
9-
def __init__(self, api, dry, verbose, continue_on_error, metadata_directory, mapping_file, preferred_mets_main_value_language, manual_id_fix, trust, enable_relation_vocabulary_column_logic, delete_missing_vocabulary_references):
9+
def __init__(self, api, dry, verbose, force, continue_on_error, metadata_directory, mapping_file, preferred_mets_main_value_language, manual_id_fix, trust, enable_relation_vocabulary_column_logic, delete_missing_vocabulary_references):
1010
self.api = api
1111
self.dry = dry
1212
self.verbose = verbose
13+
self.force = force
1314
self.continue_on_error = continue_on_error
1415
self.metadata_directory = metadata_directory
1516
self.mapping_file = mapping_file

migration/lib/mets_manipulator.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@ def process_node(self, node):
4444
self.process_manual_id_reference(node)
4545
if self.ctx.dry:
4646
dump_node(node)
47-
elif self.is_vocabulary_reference(node) and not self.is_already_migrated(node):
48-
self.process_vocabulary_reference(node)
49-
if self.ctx.dry:
50-
dump_node(node)
47+
elif self.is_vocabulary_reference(node):
48+
if self.ctx.force or not self.is_already_migrated(node):
49+
self.process_vocabulary_reference(node)
50+
if self.ctx.dry:
51+
dump_node(node)
5152
for child in node:
5253
self.process_node(child)
5354

migration/metadata-migrator.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def main():
1414
args.vocabulary_server_port,
1515
args.vocabulary_server_token
1616
)
17-
ctx = Context(api, args.dry, args.verbose, args.continue_on_error, args.metadata_directory, args.mapping_file, args.preferred_mets_main_value_language, args.manual_id_fix, args.trust, args.enable_relation_vocabulary_column_logic, args.delete_missing_vocabulary_references)
17+
ctx = Context(api, args.dry, args.verbose, args.force, args.continue_on_error, args.metadata_directory, args.mapping_file, args.preferred_mets_main_value_language, args.manual_id_fix, args.trust, args.enable_relation_vocabulary_column_logic, args.delete_missing_vocabulary_references)
1818

1919
try:
2020
migrator = MetsMigrator(ctx)
@@ -33,6 +33,7 @@ class RawTextDefaultsHelpFormatter(argparse.RawTextHelpFormatter, argparse.Argum
3333
def parse_args():
3434
parser = argparse.ArgumentParser(prog='metadata-migrator.py', formatter_class=RawTextDefaultsHelpFormatter, description='Metadata migration tool.')
3535
parser.add_argument('--dry', required=False, default=False, action='store_const', const=True, help='Don\'t persist changes but only print replacements to the console')
36+
parser.add_argument('--force', '-f', required=False, default=False, action='store_const', const=True, help='Force a re-execution of the migration on already migrated metadata')
3637
parser.add_argument('--metadata-directory', '-d', required=True, help='directory to recursively scan for metadata to update')
3738
parser.add_argument('--mapping-file', '-m', required=True, help='vocabulary and record mapping file')
3839
parser.add_argument('--vocabulary-server-host', type=str, default='localhost', help='vocabulary server host')

0 commit comments

Comments
 (0)