Beispiel #1
0
 def test_currency_formatting(self):
     self.assertEqual(currency(None), None)
     self.assertEqual(currency(''), '')
     self.assertEqual(currency('a'), 'a')
     self.assertEqual(currency(0), '£0.00')
     self.assertEqual(currency(1), '£0.01')
     self.assertEqual(currency(13500), '£135.00')
     self.assertEqual(currency(123500), '£1,235.00')
    def serialise(self, record):
        serialised_record = {
            'Credits sent': record['credit_count'],
            'Total amount sent': currency(record['credit_total']),
            'Prisoners sent to': record['prisoner_count'],
            'Prisons sent to': record['prison_count'],
        }

        if record.get('bank_transfer_details'):
            bank_transfer = record['bank_transfer_details'][0]
            return {
                **serialised_record,
                'Sender name':
                bank_transfer['sender_name'],
                'Payment method':
                'Bank transfer',
                'Bank transfer sort code':
                format_sort_code(bank_transfer['sender_sort_code']),
                'Bank transfer account':
                bank_transfer['sender_account_number'],
                'Bank transfer roll number':
                bank_transfer['sender_roll_number'],
            }

        if record.get('debit_card_details'):
            debit_card = record['debit_card_details'][0]
            try:
                sender_name = debit_card['cardholder_names'][0]
            except IndexError:
                sender_name = 'Unknown'
            other_sender_names = NameSet(debit_card['cardholder_names'])
            if sender_name in other_sender_names:
                other_sender_names.remove(sender_name)
            return {
                **serialised_record,
                'Sender name':
                sender_name,
                'Payment method':
                'Debit card',
                'Debit card number':
                format_card_number(debit_card),
                'Debit card expiry':
                debit_card['card_expiry_date'],
                'Debit card postcode':
                debit_card['postcode'] or 'Unknown',
                'Other cardholder names':
                ', '.join(other_sender_names),
                'Cardholder emails':
                ', '.join(EmailSet(debit_card['sender_emails'])),
            }

        return {
            **serialised_record,
            'Sender name': '(Unknown)',
            'Payment method': '(Unknown)',
        }
 def serialise(self, record):
     if record['current_prison']:
         current_prison = record['current_prison']['name']
     else:
         current_prison = 'Not in a public prison'
     provided_names = NameSet(record['provided_names'])
     return {
         'Prisoner number': record['prisoner_number'],
         'Prisoner name': record['prisoner_name'],
         'Date of birth': record['prisoner_dob'],
         'Credits received': record['credit_count'],
         'Total amount received': currency(record['credit_total']),
         'Payment sources': record['sender_count'],
         'Disbursements sent': record['disbursement_count'],
         'Total amount sent': currency(record['disbursement_total']),
         'Recipients': record['recipient_count'],
         'Current prison': current_prison,
         'All known prisons': list_prison_names(record['prisons']),
         'Names given by senders': ', '.join(provided_names),
     }
 def serialise(self, record):
     return {
         'Internal ID':
         record['id'],
         'Date started':
         record['started_at'],
         'Date received':
         (record['received_at'].strftime('%Y-%m-%d') if record['source']
          == 'bank_transfer' else record['received_at']),
         'Date credited':
         record['credited_at'],
         'Amount':
         currency(record['amount']),
         'Prisoner number':
         record['prisoner_number'],
         'Prisoner name':
         record['prisoner_name'],
         'Prison':
         record['prison_name'],
         'Sender name':
         record['sender_name'],
         'Payment method':
         str(credit_sources.get(record['source'], record['source'])),
         'Bank transfer sort code':
         (format_sort_code(record['sender_sort_code'])
          if record['sender_sort_code'] else None),
         'Bank transfer account':
         record['sender_account_number'],
         'Bank transfer roll number':
         record['sender_roll_number'],
         'Debit card number':
         (f'{record["card_number_first_digits"] or "******"}******{record["card_number_last_digits"]}'
          if record['card_number_last_digits'] else None),
         'Debit card expiry':
         record['card_expiry_date'],
         'Debit card billing address':
         credit_address_for_export(record['billing_address']),
         'Sender email':
         record['sender_email'],
         'Sender IP address':
         record['ip_address'],
         'Status':
         str(format_resolution(record['resolution'])),
         'NOMIS transaction':
         record['nomis_transaction_id'],
     }
 def serialise(self, record):
     last_action_dates = {
         log_item['action']: parse_datetime(log_item['created'])
         for log_item in record['log_set']
     }
     return {
         'Internal ID':
         record['id'],
         'Date entered':
         record['created'],
         'Date confirmed':
         last_action_dates.get('confirmed', ''),
         'Date sent':
         last_action_dates.get('sent', ''),
         'Amount':
         currency(record['amount']),
         'Prisoner number':
         record['prisoner_number'],
         'Prisoner name':
         record['prisoner_name'],
         'Prison':
         record['prison_name'],
         'Recipient name':
         f'{record["recipient_first_name"]} {record["recipient_last_name"]}'
         .strip(),
         'Payment method':
         str(disbursement_methods.get(record['method'], record['method'])),
         'Bank transfer sort code': (format_sort_code(record['sort_code'])
                                     if record['sort_code'] else ''),
         'Bank transfer account':
         record['account_number'],
         'Bank transfer roll number':
         record['roll_number'],
         'Recipient address':
         disbursement_address_for_export(record),
         'Recipient email':
         record['recipient_email'],
         'Status':
         str(format_disbursement_resolution(record['resolution'])),
         'NOMIS transaction':
         record['nomis_transaction_id'],
         'SOP invoice number':
         record['invoice_number'],
     }
 def test_currency_formatting(self):
     self.assertEqual(currency(None), '')
     self.assertEqual(currency(0), '0.00')
     self.assertEqual(currency(1), '0.01')
     self.assertEqual(currency(13500), '135.00')
     self.assertEqual(currency(123500), '1,235.00')