Skip to content

Commit 5d8a186

Browse files
committed
refactor: upgrade
1 parent 85dc55c commit 5d8a186

1 file changed

Lines changed: 41 additions & 29 deletions

File tree

colrev/ops/upgrade.py

Lines changed: 41 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -405,8 +405,17 @@ def _migrate_0_8_2(self) -> bool:
405405
return self.repo.is_dirty()
406406

407407
def _migrate_0_8_3(self) -> bool:
408-
# pylint: disable=too-many-branches
409408
settings = self._load_settings_dict()
409+
self._migrate_0_8_3_settings(settings=settings)
410+
self._save_settings(settings)
411+
self._reload_review_manager_for_0_8_3()
412+
records = self.review_manager.dataset.load_records_dict()
413+
quality_model = self.review_manager.get_qm()
414+
self._migrate_0_8_3_records(records=records, quality_model=quality_model)
415+
self.review_manager.dataset.save_records_dict(records)
416+
return self.repo.is_dirty()
417+
418+
def _migrate_0_8_3_settings(self, *, settings: dict) -> None:
410419
settings["prep"]["defects_to_ignore"] = []
411420
if "curated_metadata" in str(self.review_manager.path):
412421
settings["prep"]["defects_to_ignore"] = [
@@ -422,50 +431,53 @@ def _migrate_0_8_3(self) -> bool:
422431
for x in p_round["prep_package_endpoints"]
423432
if x["endpoint"] != "colrev.global_ids_consistency_check"
424433
]
425-
self._save_settings(settings)
434+
435+
def _reload_review_manager_for_0_8_3(self) -> None:
426436
self.review_manager = colrev.review_manager.ReviewManager(
427437
path_str=str(self.review_manager.path), force_mode=True
428438
)
429439
self.review_manager.load_settings()
430440
self.review_manager.get_load_operation()
431-
records = self.review_manager.dataset.load_records_dict()
432-
quality_model = self.review_manager.get_qm()
433441

442+
def _migrate_0_8_3_records(self, *, records: dict, quality_model: object) -> None:
434443
# delete the masterdata provenance notes and apply the new quality model
435444
# replace not_missing > not-missing
436445
for record_dict in tqdm(records.values()):
437-
if Fields.MD_PROV not in record_dict:
438-
continue
439-
not_missing_fields = []
440-
for key, prov in record_dict[Fields.MD_PROV].items():
441-
if "not-missing" in prov["note"]:
442-
not_missing_fields.append(key)
443-
prov["note"] = ""
444-
for key in not_missing_fields:
445-
record_dict[Fields.MD_PROV][key]["note"] = "not-missing"
446-
if "cited_by_file" in record_dict:
447-
del record_dict["cited_by_file"]
448-
if "cited_by_id" in record_dict:
449-
del record_dict["cited_by_id"]
450-
if "tei_id" in record_dict:
451-
del record_dict["tei_id"]
452-
if Fields.D_PROV in record_dict:
453-
if "cited_by_file" in record_dict[Fields.D_PROV]:
454-
del record_dict[Fields.D_PROV]["cited_by_file"]
455-
if "cited_by_id" in record_dict[Fields.D_PROV]:
456-
del record_dict[Fields.D_PROV]["cited_by_id"]
457-
if "tei_id" in record_dict[Fields.D_PROV]:
458-
del record_dict[Fields.D_PROV]["tei_id"]
459-
446+
self._migrate_0_8_3_record_metadata(record_dict=record_dict)
460447
record = colrev.record.record.Record(record_dict)
461448
prior_state = record.data[Fields.STATUS]
462449
record.run_quality_model(quality_model)
463450
if prior_state == RecordState.rev_prescreen_excluded:
464451
record.data[ # pylint: disable=colrev-direct-status-assign
465452
Fields.STATUS
466453
] = RecordState.rev_prescreen_excluded
467-
self.review_manager.dataset.save_records_dict(records)
468-
return self.repo.is_dirty()
454+
455+
def _migrate_0_8_3_record_metadata(self, *, record_dict: dict) -> None:
456+
if Fields.MD_PROV not in record_dict:
457+
return
458+
459+
not_missing_fields = []
460+
for key, prov in record_dict[Fields.MD_PROV].items():
461+
if "not-missing" in prov["note"]:
462+
not_missing_fields.append(key)
463+
prov["note"] = ""
464+
for key in not_missing_fields:
465+
record_dict[Fields.MD_PROV][key]["note"] = "not-missing"
466+
467+
self._delete_top_level_fields_for_0_8_3(record_dict=record_dict)
468+
self._delete_dprov_fields_for_0_8_3(record_dict=record_dict)
469+
470+
def _delete_top_level_fields_for_0_8_3(self, *, record_dict: dict) -> None:
471+
for field in ("cited_by_file", "cited_by_id", "tei_id"):
472+
if field in record_dict:
473+
del record_dict[field]
474+
475+
def _delete_dprov_fields_for_0_8_3(self, *, record_dict: dict) -> None:
476+
if Fields.D_PROV not in record_dict:
477+
return
478+
for field in ("cited_by_file", "cited_by_id", "tei_id"):
479+
if field in record_dict[Fields.D_PROV]:
480+
del record_dict[Fields.D_PROV][field]
469481

470482
def _migrate_0_8_4(self) -> bool:
471483
records = self.review_manager.dataset.load_records_dict()

0 commit comments

Comments
 (0)