Skip to content

Commit bafde2c

Browse files
author
Gerit Wagner
committed
load: extract import_record()
1 parent 20b8df6 commit bafde2c

1 file changed

Lines changed: 27 additions & 23 deletions

File tree

colrev/ops/load.py

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -135,14 +135,19 @@ def set_initial_import_provenance(record: colrev.record.record.Record) -> None:
135135
set_initial_import_provenance(record)
136136
record.run_quality_model(self.quality_model)
137137

138-
def _import_record(self, *, record_dict: dict) -> dict:
138+
def import_record(self, *, record_dict: dict, records: dict) -> dict:
139+
"""Import a record_dict to the records"""
140+
139141
self.review_manager.logger.debug(f"import_record {record_dict[Fields.ID]}: ")
140142

141143
record = colrev.record.record.Record(record_dict)
142144

143145
# For better readability of the git diff:
144146
self.load_formatter.run(record)
145147

148+
if Fields.ORIGIN not in record_dict:
149+
print(f"Error: {record_dict[Fields.ID]} has no origin")
150+
146151
self._import_provenance(record)
147152

148153
if record.data[Fields.STATUS] in [
@@ -157,6 +162,25 @@ def _import_record(self, *, record_dict: dict) -> dict:
157162
f"{record.data['ID']}{Colors.END}"
158163
)
159164

165+
# Make sure not to replace existing records
166+
order = 0
167+
letters = list(string.ascii_lowercase)
168+
next_unique_id = record.data[Fields.ID]
169+
appends: list = []
170+
while next_unique_id in records:
171+
if len(appends) == 0:
172+
order += 1
173+
appends = list(itertools.product(letters, repeat=order))
174+
next_unique_id = record.data[Fields.ID] + "".join(list(appends.pop(0)))
175+
record.data[Fields.ID] = next_unique_id
176+
177+
records[record.data[Fields.ID]] = record.data
178+
179+
self.review_manager.logger.info(
180+
f" {Colors.GREEN}{record.data['ID']}".ljust(46)
181+
+ f"md_retrieved → {record.data['colrev_status']}{Colors.END}"
182+
)
183+
160184
return record.get_data()
161185

162186
def _validate_source_records(
@@ -346,29 +370,9 @@ def load_source_records(
346370
self.review_manager.logger.debug(
347371
f"Import individual source records {source.search_source.get_search_history_path()}"
348372
)
349-
for source_record in source.search_source.source_records_list:
350-
source_record = self._import_record(record_dict=source_record)
351-
352-
# Make sure not to replace existing records
353-
order = 0
354-
letters = list(string.ascii_lowercase)
355-
next_unique_id = source_record[Fields.ID]
356-
appends: list = []
357-
while next_unique_id in records:
358-
if len(appends) == 0:
359-
order += 1
360-
appends = list(itertools.product(letters, repeat=order))
361-
next_unique_id = source_record[Fields.ID] + "".join(
362-
list(appends.pop(0))
363-
)
364-
source_record[Fields.ID] = next_unique_id
365-
366-
records[source_record[Fields.ID]] = source_record
367373

368-
self.review_manager.logger.info(
369-
f" {Colors.GREEN}{source_record['ID']}".ljust(46)
370-
+ f"md_retrieved → {source_record['colrev_status']}{Colors.END}"
371-
)
374+
for source_record in source.search_source.source_records_list:
375+
self.import_record(record_dict=source_record, records=records)
372376

373377
self.review_manager.logger.debug(
374378
f"Save records {source.search_source.get_search_history_path()}"

0 commit comments

Comments
 (0)