Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Account(models.Model):
- ACCOUNT_TYPES = (
- ('SA' , 'Savings Account' ),
- ('CA' , 'Current Account' ),
- ('JA' , 'Joint Account' ),
- )
- owner = models.ForeignKey(User, on_delete=models.CASCADE,
- related_name='accounts', verbose_name='The related user')
- account_type = models.CharField(max_length=2, choices=ACCOUNT_TYPES)
- account_number = models.CharField(max_length=13, unique=True)
- account_balance = models.DecimalField(max_digits=18, decimal_places=2)
- last_deposit = models.DecimalField(max_digits=10, decimal_places=2)
- interest_rate = models.DecimalField(max_digits=3, decimal_places=0)
- date_created = models.DateField(auto_now_add=True)
- def __str__(self):
- return self.account_number
- class Transaction(models.Model):
- owner = models.ForeignKey(User, on_delete=models.CASCADE, blank=True,
- null=True)
- from_account = models.CharField(max_length=13)
- to_account = models.CharField(max_length=13)
- amount = models.DecimalField(max_digits=10, decimal_places=2)
- date_created = models.DateField(auto_now_add=True)
- def __str__(self):
- return str(self.amount)
- @login_required(login_url='../../accounts/login/')
- def send(request):
- if request.method == 'POST':
- form = forms.TransactionForm(request.POST)
- if form.is_valid():
- sender = Account.objects.get(account_number=request.POST.get('from_account'))
- if sender.account_balance > decimal.Decimal(request.POST.get('amount')):
- trans = form.save()
- trans.owner = request.user
- trans.save()
- # debit the sender account
- sender.account_balance -= decimal.Decimal(request.POST.get('amount'))
- sender.save()
- #credit the receiver account
- receiver = Account.objects.get(account_number=request.POST.get('to_account'))
- receiver.account_balance += decimal.Decimal(request.POST.get('amount'))
- receiver.save()
- return HttpResponseRedirect(reverse_lazy('customers:history'))
- # else:
- # return
- else:
- form = forms.TransactionForm()
- return render(request, "customers/send_money.html", {'form': form})
Add Comment
Please, Sign In to add comment