Exemplo n.º 1
0
 def test_transfer_to_many_person_from_one(self):
     Person.transfer2m(
         Person.objects.get(pk=3),
         50,
         {456, 452345134234, 67896},
         Person.objects.all()
     )
     self.assertEqual(Person.objects.get(pk=3).account, Decimal('0.01'))
     self.assertEqual(Person.objects.get(pk=4).account, Decimal('66.66'))
     self.assertEqual(Person.objects.get(pk=5).account, Decimal('-83.34'))
     self.assertEqual(Person.objects.get(pk=6).account, Decimal('17.65'))
Exemplo n.º 2
0
def transfer2m(request):
    error_message = 'Welcome'
    persons = Person.objects.select_related('user').all()

    if request.method == 'POST':
        error_message = 'Success'
        error_messages = []

        inn_set, _error_message = parse_inn(request.POST['inns'])
        if _error_message:
            error_messages += [_error_message]

        amount, _error_message = parse_amount(request.POST['amount'])
        if _error_message:
            error_messages += [_error_message]

        from_person, _error_message = parse_person(request.POST['from-person'], persons)
        if _error_message:
            error_messages += [_error_message]

        _error_messages = validate_inns(inn_set)
        if _error_messages:
            error_messages += _error_messages

        if error_messages:
            return render(request, 'transfers/to_many.html', {
                'persons': persons,
                'error_message': '\n'.join(error_messages)
            })

        if not from_person.is_can_pay(amount):
            return render(request, 'transfers/to_many.html', {
                'persons': persons,
                'error_message': 'Not enough money'
            })

        Person.transfer2m(from_person, amount, inn_set, persons)

    return render(request, 'transfers/to_many.html', {
        'persons': persons,
        'error_message': error_message
    })