コード例 #1
0
    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))