Skip to content

Commit

Permalink
task: add force mode to mets migration
Browse files Browse the repository at this point in the history
  • Loading branch information
Dominick Leppich committed Nov 22, 2024
1 parent 27992d3 commit 80f81af
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 6 deletions.
3 changes: 2 additions & 1 deletion migration/lib/mets_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
RECORD_PATTERN = re.compile('^(\\d+).*$')

class Context:
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):
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):
self.api = api
self.dry = dry
self.verbose = verbose
self.force = force
self.continue_on_error = continue_on_error
self.metadata_directory = metadata_directory
self.mapping_file = mapping_file
Expand Down
9 changes: 5 additions & 4 deletions migration/lib/mets_manipulator.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,11 @@ def process_node(self, node):
self.process_manual_id_reference(node)
if self.ctx.dry:
dump_node(node)
elif self.is_vocabulary_reference(node) and not self.is_already_migrated(node):
self.process_vocabulary_reference(node)
if self.ctx.dry:
dump_node(node)
elif self.is_vocabulary_reference(node):
if self.ctx.force or not self.is_already_migrated(node):
self.process_vocabulary_reference(node)
if self.ctx.dry:
dump_node(node)
for child in node:
self.process_node(child)

Expand Down
3 changes: 2 additions & 1 deletion migration/metadata-migrator.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def main():
args.vocabulary_server_port,
args.vocabulary_server_token
)
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)
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)

try:
migrator = MetsMigrator(ctx)
Expand All @@ -33,6 +33,7 @@ class RawTextDefaultsHelpFormatter(argparse.RawTextHelpFormatter, argparse.Argum
def parse_args():
parser = argparse.ArgumentParser(prog='metadata-migrator.py', formatter_class=RawTextDefaultsHelpFormatter, description='Metadata migration tool.')
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')
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')
parser.add_argument('--metadata-directory', '-d', required=True, help='directory to recursively scan for metadata to update')
parser.add_argument('--mapping-file', '-m', required=True, help='vocabulary and record mapping file')
parser.add_argument('--vocabulary-server-host', type=str, default='localhost', help='vocabulary server host')
Expand Down

0 comments on commit 80f81af

Please sign in to comment.