def test_base_get_records(inspire_app): records = [ create_record_factory("lit"), create_record_factory("lit"), create_record_factory("lit"), ] record_uuids = [record.id for record in records] expected_records = InspireRecord.get_records(record_uuids) for record in records: assert record.json in expected_records
def run(self): """Make changes to the records that need them.""" checked_count, modified_count = 0, 0 self.logger.info("Starting search, check & do job", reason=self.__doc__) for chunk in chunker(self.search(), self.size): uuids = [r.meta.id for r in chunk] self.logger.info("Received record IDs from ES", num_records=len(uuids)) records = InspireRecord.get_records(uuids) self.logger.info("Fetched chunk of records from DB", num_records=len(records)) for record in records: state = {} logger = self.logger.bind(recid=record["control_number"]) checked_count += 1 record = InspireRecord.get_class_for_record(record)( record, model=record.model) if not self.check(record, logger=logger, state=state): logger.info("Not modifying record, check negative") continue modified_count += 1 logger.info("Modifying record, check positive") self.do(record, logger=logger, state=state) record.update(dict(record)) if self.commit_after_each_batch: db.session.commit() db.session.commit() self.logger.info( "Search, check & do job finished successfully.", num_records_checked=checked_count, num_records_modified=modified_count, )