Guest User

Untitled

a guest
Jul 16th, 2018
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. class Account(models.Model):
  2. ACCOUNT_TYPES = (
  3. ('SA' , 'Savings Account' ),
  4. ('CA' , 'Current Account' ),
  5. ('JA' , 'Joint Account' ),
  6. )
  7. owner = models.ForeignKey(User, on_delete=models.CASCADE,
  8. related_name='accounts', verbose_name='The related user')
  9. account_type = models.CharField(max_length=2, choices=ACCOUNT_TYPES)
  10. account_number = models.CharField(max_length=13, unique=True)
  11. account_balance = models.DecimalField(max_digits=18, decimal_places=2)
  12. last_deposit = models.DecimalField(max_digits=10, decimal_places=2)
  13. interest_rate = models.DecimalField(max_digits=3, decimal_places=0)
  14. date_created = models.DateField(auto_now_add=True)
  15.  
  16. def __str__(self):
  17. return self.account_number
  18.  
  19.  
  20.  
  21. class Transaction(models.Model):
  22. owner = models.ForeignKey(User, on_delete=models.CASCADE, blank=True,
  23. null=True)
  24. from_account = models.CharField(max_length=13)
  25. to_account = models.CharField(max_length=13)
  26. amount = models.DecimalField(max_digits=10, decimal_places=2)
  27. date_created = models.DateField(auto_now_add=True)
  28.  
  29. def __str__(self):
  30. return str(self.amount)
  31.  
  32.  
  33. @login_required(login_url='../../accounts/login/')
  34. def send(request):
  35. if request.method == 'POST':
  36. form = forms.TransactionForm(request.POST)
  37. if form.is_valid():
  38. sender = Account.objects.get(account_number=request.POST.get('from_account'))
  39. if sender.account_balance > decimal.Decimal(request.POST.get('amount')):
  40.  
  41. trans = form.save()
  42. trans.owner = request.user
  43. trans.save()
  44.  
  45. # debit the sender account
  46. sender.account_balance -= decimal.Decimal(request.POST.get('amount'))
  47. sender.save()
  48.  
  49. #credit the receiver account
  50. receiver = Account.objects.get(account_number=request.POST.get('to_account'))
  51. receiver.account_balance += decimal.Decimal(request.POST.get('amount'))
  52. receiver.save()
  53.  
  54. return HttpResponseRedirect(reverse_lazy('customers:history'))
  55. # else:
  56. # return
  57. else:
  58. form = forms.TransactionForm()
  59. return render(request, "customers/send_money.html", {'form': form})
Add Comment
Please, Sign In to add comment