def POST(self, transfer_id): transfer = get_object_or_404(Transfer, pk=transfer_id) if transfer.creator() != self.request.user: self.flash(_("You can't modify a transfer that isn't yours"), "error") return redirect('serv-transfers-mine') if transfer.status != "q": self.flash(_("You can only modify transfers that haven't been" " accepted"), "error") return redirect('serv-transfers-mine') form = AddTransferForm(self.request.POST, instance=transfer) if form.is_valid(): transfer = form.save(commit=False) # Check user would not surpass max balance if transfer.credits_payee.balance + transfer.credits > settings.MAX_CREDIT: self.flash(_("The transfer would exceed the credit limit of the" "credits receiver"), 'error') return redirect('serv-transfers-mine') # Check user would not minimum min balance if transfer.credits_debtor.balance - transfer.credits < settings.MIN_CREDIT: self.flash(_(u"The transfer would exceed the minimum credit" " limit of the person receiving the service"), 'error') return redirect('serv-transfers-mine') transfer.save() self.flash(_(u"Transfer modified successfully")) return redirect('serv-transfers-mine') context = dict(form=form, transfer=transfer, current_tab="transfer", subtab="mine") return self.context_response('serv/edit_transfer.html', context)
def POST(self, service_id): service = get_object_or_404(Service, pk=service_id) ongoing_transfers = service.ongoing_transfers(self.request.user) if ongoing_transfers: return redirect("serv-transfer-edit", ongoing_transfers[0].id) form = AddTransferForm(data=self.request.POST) # Check user would not surpass min balance if self.request.user.balance < settings.MIN_CREDIT and\ service.is_offer: self.flash(_(u"You don't have enough credit"), 'error') return redirect('serv-transfers-mine') if service.creator == self.request.user: self.flash(_(u"You can't demand a service to yourself")) return redirect('serv-transfers-mine') if form.is_valid(): transfer = form.save(commit=False) # Set remaining transfer settings transfer.service = service transfer.status = 'q' transfer.is_public = False if transfer.service.is_offer: transfer.credits_debtor = self.request.user transfer.credits_payee = transfer.service.creator else: transfer.credits_payee = self.request.user transfer.credits_debtor = transfer.service.creator # Check user would not surpass max balance if transfer.credits_payee.balance + transfer.credits > settings.MAX_CREDIT: self.flash(_(u"The transfer would exceed the credit limit of the" " credits receiver"), 'error') return redirect('serv-transfers-mine') # Check user would not minimum min balance if transfer.credits_debtor.balance - transfer.credits < settings.MIN_CREDIT: self.flash(_("The transfer would exceed the minimum credit limit" " of the person receiving the service"), 'error') return redirect('serv-transfers-mine') # Check there's no current ongoing transfer for this service and # self.request.user if Transfer.objects.filter(credits_payee=transfer.credits_payee, credits_debtor=transfer.credits_debtor, service=service, status__in=['q', 'a']).count() > 0: self.flash(_("You already have an ongoing transfer for this" " service"),'error') return redirect('serv-transfers-mine') transfer.save() self.flash(_(u"Transfer created successfully")) return redirect('serv-transfers-mine') context = dict(form=form, instance=None, current_tab="transfers", subtab="add", service=service) return self.context_response('serv/add_transfer.html', context)