| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- from django.shortcuts import render, redirect
- from django.views.generic import CreateView, UpdateView, DeleteView, ListView
- from django.urls import reverse_lazy
- from django.contrib.auth.mixins import (
- LoginRequiredMixin,
- UserPassesTestMixin,
- PermissionRequiredMixin,
- )
- from django.contrib.messages.views import SuccessMessageMixin
- from django.views import View
- from expenses.models import Category, RawExpense, Expense, MultiplePaymentExepense
- from expenses.forms import (
- CategoryForm,
- ExpenseForm,
- LoneExpenseForm,
- SubExpenseForm,
- MultiplePaymentExepenseForm,
- )
- def homepage(request):
- return category_list(request)
- def category_list(request):
- categories = Category.objects.all()
- form = CategoryForm(request.GET or None)
- if form.is_valid():
- data = form.cleaned_data
- return render(
- request, "categories_list.html", {"categories": categories, "form": form}
- )
- def category_detail(request, pk):
- category = Category.objects.get(pk=pk)
- return render(request, "category_detail.html", {"category": category})
- class CategoryCreateView(CreateView):
- model = Category
- fields = "__all__"
- template_name = "category_create.html"
- success_url = reverse_lazy("expenses:categories_list")
- success_message = "Sensor removed successfully"
- class CategoryUpdateView(UpdateView):
- model = Category
- fields = "__all__"
- template_name = "category_create.html"
- success_url = reverse_lazy("expenses:categories_list")
- success_message = "Category updated successfully"
- class CategoryDeleteView(UserPassesTestMixin, SuccessMessageMixin, DeleteView):
- model = Category
- fields = "__all__"
- template_name = "category_delete.html"
- success_url = reverse_lazy("expenses:categories_list")
- success_message = "Category removed successfully"
- def test_func(self):
- return self.request.user.is_superuser
- def expenses_list(request):
- expenses = Expense.objects.all()
- form = ExpenseForm(request.GET or None)
- if form.is_valid():
- data = form.cleaned_data
- return render(request, "expense_list.html", {"expenses": expenses, "form": form})
- def lone_expense_create(request):
- form = LoneExpenseForm(request.POST or None)
- if form.is_valid():
- instance = form.save()
- expense = Expense(
- content_object=instance,
- )
- expense.save()
- return redirect("expenses:expense_list")
- return render(request, "lone_expense_create.html", {"form": form})
- def multiple_expense_create(request):
- multiple_expense_form = MultiplePaymentExepenseForm(request.POST or None)
- lone_expense_form = SubExpenseForm(request.POST or None)
- if multiple_expense_form.is_valid() and lone_expense_form.is_valid():
- multiple_expense = multiple_expense_form.save()
- lone_expense = lone_expense_form.save(commit=False)
- multiple_expense.set_payments(lone_expense)
- multiple_expense.save()
- expense = Expense(
- content_object=multiple_expense,
- )
- expense.save()
- return redirect("expenses:expense_list")
- context = {
- "multiple_expense_form": multiple_expense_form,
- "lone_expense_form": lone_expense_form,
- }
- return render(request, "expense_create.html", context)
- def expense_create(request):
- # form = ExpenseForm(request.POST or None)
- lone_expense_form = LoneExpenseForm(request.POST or None)
- mult_expense_form = MultiplePaymentExepenseForm(request.POST or None)
- if mult_expense_form.is_valid():
- first_amount = mult_expense_form.cleaned_data["first_payment_amount"]
- instance = mult_expense_form.save(commit=False)
- instance.set_payments(first_amount)
- """ expense = Expense(
- content_object=instance,
- )
- expense.save() """
- # return HttpResponseRedirect('/')
- return redirect("expenses:expense_list")
- if lone_expense_form.is_valid():
- lone_expense_form.save()
- """ expense = Expense(
- content_object=instance,
- )
- expense.save() """
- # return HttpResponseRedirect('/')
- return redirect("expenses:expense_list")
- context = {
- "mult_expense_form": mult_expense_form,
- "lone_expense_form": lone_expense_form,
- }
- return render(request, "expense_create.html", context)
- class RawExpenseListView(ListView):
- model = RawExpense
- fields = ("amout",)
- template_name = "raw_expenses_list.html"
- def expense_detail(request, pk):
- expense = Expense.objects.get(pk=pk)
- return render(request, "expense_detail.html", {"expense": expense})
|