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'))
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 })