def process_batches(self, date): start_date, end_date = reconcile_for_date(self.api_session, date) batches = retrieve_private_estate_batches(self.api_session, start_date, end_date) grouped_batches = combine_private_estate_batches(batches) if not grouped_batches: logger.info('No private estate batches to handle for %s' % date) return prisons = retrieve_prisons(self.api_session) prisons = { nomis_id: prison for nomis_id, prison in prisons.items() if prison.get('private_estate') } if not get_language(): language = getattr(settings, 'LANGUAGE_CODE', 'en') activate(language) for prison, batches in grouped_batches.items(): prison = prisons[prison] for batch in batches: batch['prison'] = prison self.mark_credited(batch) csv_contents, total, count = self.prepare_csv(batches) send_csv(prison, date, batches, csv_contents, total, count)
def test_reconciles_weekend(self): mock_bank_holidays() responses.add(responses.POST, api_url('/transactions/reconcile/'), status=200) start_date, end_date = reconcile_for_date(self.api_session, date(2016, 10, 7)) self.assert_called_with( api_url('/transactions/reconcile/'), responses.POST, { 'received_at__gte': datetime(2016, 10, 7, 0, 0, tzinfo=utc).isoformat(), 'received_at__lt': datetime(2016, 10, 8, 0, 0, tzinfo=utc).isoformat() }) self.assert_called_with( api_url('/transactions/reconcile/'), responses.POST, { 'received_at__gte': datetime(2016, 10, 8, 0, 0, tzinfo=utc).isoformat(), 'received_at__lt': datetime(2016, 10, 9, 0, 0, tzinfo=utc).isoformat() }) self.assert_called_with( api_url('/transactions/reconcile/'), responses.POST, { 'received_at__gte': datetime(2016, 10, 9, 0, 0, tzinfo=utc).isoformat(), 'received_at__lt': datetime(2016, 10, 10, 0, 0, tzinfo=utc).isoformat() }) self.assertEqual(start_date, datetime(2016, 10, 7, 0, 0, tzinfo=utc)) self.assertEqual(end_date, datetime(2016, 10, 10, 0, 0, tzinfo=utc))