def delete_old_data() -> None:
    """
    Periodically (default: every day, at midnight) delete data older than DATA_RETENTION_DAYS days
    (default: 14).

    Deleted data comprises (i) Upload and (ii) BatchFile models.
    """
    reference_date = datetime.combine(
        date.today(),
        datetime.min.time()) - timedelta(days=config.DATA_RETENTION_DAYS)

    # Make sure there are no unprocessed uploads in the data about to be deleted.
    if Upload.unprocessed_before(reference_date):
        _LOGGER.error(
            "Some Upload objects were unprocessed until deleted! This should never happen!"
        )

    Upload.delete_older_than(reference_date)
    BatchFile.delete_older_than(reference_date)
def test_delete_old_batches(batch_files: List[BatchFile]) -> None:
    BatchFile.delete_older_than(datetime.utcnow() -
                                timedelta(days=8, seconds=1))
    assert BatchFile.objects.count() == 9