예제 #1
0
파일: views.py 프로젝트: OpenGain/OpenGain
def withdraw(request):
    form = WithdrawForm(data=request.POST or None)
    if request.method == 'POST' and form.is_valid():
        ps = form.cleaned_data.get('ps')

        if not request.user.get_ps_account(ps):
            form.add_error('ps', _('Укажите аккаунт платежной системы в настройках'))
        else:
            try:
                amount = form.cleaned_data.get('amount')
                tr = UserTransaction()
                tr.do_transaction_withdraw(
                    user=request.user,
                    ps=ps,
                    amount=amount
                )
                if request.user.is_alerts_other:
                    request.user.email_user(_('Запрос на вывод'), 'mail/withdraw_request.html', dict(
                        ps=tr.transaction.get_ps_display(), amount=amount, balance=tr.balance_after,
                        comission=settings.WITHDRAW_COMISSION_PERCENT,
                        for_withdraw=calculate_withdraw_amount(amount)
                    ))
                messages.success(request, _('Запрос на вывод отправлен'))
                return redirect('account_withdraw')
            except InsufficientBalance:
                form.add_error('amount', _('Недостаточно средств'))

    return render(request, 'default_set/withdraw.html',
                  dict(form=form),
    )