Example #1
0
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
Example #2
0
    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,
        )