37 lines
1.5 KiB
Python
37 lines
1.5 KiB
Python
from datetime import date
|
|
from django.shortcuts import redirect
|
|
from django.contrib import messages
|
|
from django.views.generic import TemplateView
|
|
from web_project import TemplateLayout
|
|
from apps.transactions.models import Transaction
|
|
from apps.transactions.forms import TransactionForm
|
|
from django.contrib.auth.mixins import PermissionRequiredMixin
|
|
class TransactionAddView(PermissionRequiredMixin, TemplateView):
|
|
permission_required = ("transactions.add_transaction")
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = TemplateLayout.init(self, super().get_context_data(**kwargs))
|
|
context['current_date'] = date.today().strftime("%Y-%m-%d")
|
|
return context
|
|
|
|
def post(self, request):
|
|
form = TransactionForm(request.POST)
|
|
if form.is_valid():
|
|
if not self.transaction_exists(form.cleaned_data):
|
|
form.save()
|
|
messages.success(request, 'Transaction Added')
|
|
else:
|
|
messages.error(request, 'Transaction already exists')
|
|
else:
|
|
messages.error(request, 'Transaction Failed')
|
|
return redirect('transactions')
|
|
|
|
def transaction_exists(self, cleaned_data):
|
|
return Transaction.objects.filter(
|
|
customer__iexact=cleaned_data['customer'],
|
|
transaction_date=cleaned_data['transaction_date'],
|
|
due_date=cleaned_data['due_date'],
|
|
total=cleaned_data['total'],
|
|
status=cleaned_data['status']
|
|
).exists()
|