def player(request, player_id): player_id = int(player_id) p = Player.objects.get(id=player_id) if request.method == 'POST' and request.POST['form_name'] == 'transfer': tf = TransferForm(request.POST) tf.fields['to'].choices = get_transfer_choices(player_id) if tf.is_valid(): to_name = do_transfer(player_id, tf.cleaned_data['to'], Decimal(tf.cleaned_data['amount'])) messages.success(request, "${} transferred to {}.".format(tf.cleaned_data['amount'], to_name)) return redirect('bank.views.player', player_id) iform = IncomeForm() elif request.method == 'POST' and request.POST['form_name'] == 'income': iform = IncomeForm(request.POST) if iform.is_valid(): p.balance += Decimal(iform.cleaned_data['amount']) p.save() messages.success(request, "Added ${} income..".format(iform.cleaned_data['amount'])) return redirect('bank.views.player', player_id) tf = TransferForm() else: tf = TransferForm() iform = IncomeForm() tf.fields['to'].choices = get_transfer_choices(player_id) return render(request, "player.html", {'player': p, 'transfer_form': tf, 'players': Player.objects.all(), 'income_form': iform})
def CreateOrEditTransfer_view(request, transfer_id=None): response_data = {} # словарь для JSON-ответа if (transfer_id == None or transfer_id == '999999'): _transfer = Transfer() _message = 'Заявка добавлена успешно' else: _transfer = get_object_or_404(Transfer, id=transfer_id) _message = 'Заявка отредактирована успешно' if request.method == "GET" and request.is_ajax(): # сериализуем только queryset поэтому заворчаиваем объект в [obj,] data = serializers.serialize( 'json', [ _transfer, ], fields=('date_departure', 'time_departure', 'place_departure', 'place_arrival', 'quantity_total', 'quantity_adult', 'quantity_member', 'status', 'status_comment')) return _json_response(data) if request.POST: formTransfer = TransferForm(request.POST, instance=_transfer) if formTransfer.is_valid(): res = formTransfer.save(commit=False) res.user_id = auth.get_user( request ).id #передаем ID директора , к которому привязан участник # Если участник использует чекбокс "Свое название", то сохраняем его в базу if ('transDepartureSelf' in request.POST) and \ request.POST['transDepartureSelf'] not in \ list(Place_departure_choices.objects.filter(user_id = auth.get_user(request)).values_list('place_name',\ flat=True)): new_dep_place = Place_departure_choices( user=auth.get_user(request), place_name=request.POST['transDepartureSelf']) new_dep_place.save() res.place_departure = new_dep_place if ('transArrivalSelf' in request.POST) and \ request.POST['transArrivalSelf'] not in \ list(Place_departure_choices.objects.filter(user_id = auth.get_user(request)).values_list('place_name',\ flat=True)): new_arriv_place = Place_departure_choices( user=auth.get_user(request), place_name=request.POST['transArrivalSelf']) new_arriv_place.save() res.place_arrival = new_arriv_place # Рассчитываем сумму заявки и сохраняем ; res.payment = fee_transfer formTransfer.save() messages.add_message(request, messages.SUCCESS, _message) return HttpResponse('ok') else: response_data['errors'] = u'Неправильно заполнена форма.' response_data['formErrors'] = simplejson.dumps(formTransfer.errors) return _json_response(response_data) return redirect('/')
def transfer(request): # проверяем параметры if 'transaction' not in request.GET: return HttpResponse("Недостаточно параметров." + str(request.GET.keys())) try: trans = Transaction.objects.get(code=request.GET['transaction']) except: return HttpResponse("Транзакция не найдена.") # проверяем форму form = TransferForm() if request.method == 'POST': form = TransferForm(request.POST) # форма валидная if form.is_valid(): # проверяем счет отправителя try: sender = Bill.objects.get(number=form.cleaned_data['sender']) except Exception, exc: form._errors.setdefault("sender", ErrorList()).append("Счет не найден." + str(exc)) if form.cleaned_data['csv'] != sender.csv: form._errors.setdefault("csv", ErrorList()).append("Номер csv не верный.") # счет верный пытаемся осущесвить перевод else: # спрашиваем нужна ли еще оплата try: rpc_srv = conn.TimeoutServerProxy(trans.client.xmlrpc_page, timeout=2) res = rpc_srv.is_active_transaction(trans.code) except Exception, exc: return HttpResponse("Ошибка получателя перевода." + str(exc)) if res == False: return HttpResponse("Время перечисления средств истекло.") # переводим если достаточно средств if trans.to_pass(sender): return HttpResponseRedirect("%s?transaction=%s" % (trans.client.success_page, trans.code) ) else: form._errors.setdefault("__all__", ErrorList()).append("Недостаточно средств.")
def player(request, player_id): player_id = int(player_id) p = Player.objects.get(id=player_id) if request.method == 'POST' and request.POST['form_name'] == 'transfer': tf = TransferForm(request.POST) tf.fields['to'].choices = get_transfer_choices(player_id) if tf.is_valid(): to_name = do_transfer(player_id, tf.cleaned_data['to'], Decimal(tf.cleaned_data['amount'])) messages.success( request, "${} transferred to {}.".format(tf.cleaned_data['amount'], to_name)) return redirect('bank.views.player', player_id) iform = IncomeForm() elif request.method == 'POST' and request.POST['form_name'] == 'income': iform = IncomeForm(request.POST) if iform.is_valid(): p.balance += Decimal(iform.cleaned_data['amount']) p.save() messages.success( request, "Added ${} income..".format(iform.cleaned_data['amount'])) return redirect('bank.views.player', player_id) tf = TransferForm() else: tf = TransferForm() iform = IncomeForm() tf.fields['to'].choices = get_transfer_choices(player_id) return render( request, "player.html", { 'player': p, 'transfer_form': tf, 'players': Player.objects.all(), 'income_form': iform })