views.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. from django.shortcuts import render, redirect
  2. from django.views.generic import CreateView, UpdateView, DeleteView, ListView
  3. from django.urls import reverse_lazy
  4. from django.contrib.auth.mixins import (
  5. LoginRequiredMixin,
  6. UserPassesTestMixin,
  7. PermissionRequiredMixin,
  8. )
  9. from django.contrib.messages.views import SuccessMessageMixin
  10. from django.views import View
  11. from expenses.models import Category, RawExpense, Expense, MultiplePaymentExepense
  12. from expenses.forms import (
  13. CategoryForm,
  14. ExpenseForm,
  15. LoneExpenseForm,
  16. MultiplePaymentExepenseForm,
  17. )
  18. def homepage(request):
  19. return category_list(request)
  20. def category_list(request):
  21. categories = Category.objects.all()
  22. form = CategoryForm(request.GET or None)
  23. if form.is_valid():
  24. data = form.cleaned_data
  25. return render(
  26. request, "categories_list.html", {"categories": categories, "form": form}
  27. )
  28. def category_detail(request, pk):
  29. category = Category.objects.get(pk=pk)
  30. return render(request, "category_detail.html", {"category": category})
  31. class CategoryCreateView(CreateView):
  32. model = Category
  33. fields = "__all__"
  34. template_name = "category_create.html"
  35. success_url = reverse_lazy("expenses:categories_list")
  36. success_message = "Sensor removed successfully"
  37. class CategoryUpdateView(UpdateView):
  38. model = Category
  39. fields = "__all__"
  40. template_name = "category_create.html"
  41. success_url = reverse_lazy("expenses:categories_list")
  42. success_message = "Category updated successfully"
  43. class CategoryDeleteView(UserPassesTestMixin, SuccessMessageMixin, DeleteView):
  44. model = Category
  45. fields = "__all__"
  46. template_name = "category_delete.html"
  47. success_url = reverse_lazy("expenses:categories_list")
  48. success_message = "Category removed successfully"
  49. def test_func(self):
  50. return self.request.user.is_superuser
  51. def expenses_list(request):
  52. expenses = Expense.objects.all()
  53. form = ExpenseForm(request.GET or None)
  54. if form.is_valid():
  55. data = form.cleaned_data
  56. return render(request, "expense_list.html", {"expenses": expenses, "form": form})
  57. def lone_expense_create(request):
  58. form = LoneExpenseForm(request.POST or None)
  59. if form.is_valid():
  60. instance = form.save()
  61. expense = Expense(
  62. content_object=instance,
  63. )
  64. expense.save()
  65. return redirect("expenses:expense_list")
  66. return render(request, "lone_expense_create.html", {"form": form})
  67. def create_expense(request):
  68. form = ExpenseForm(request.POST or None)
  69. if form.is_valid():
  70. instance = form.save()
  71. expense = Expense(
  72. content_object=instance,
  73. )
  74. expense.save()
  75. # return HttpResponseRedirect('/')
  76. return redirect("expenses:expense_create")
  77. return render(request, "create_expense.html", {"form": form})
  78. class RawExpenseListView(ListView):
  79. model = RawExpense
  80. fields = "__all__"
  81. template_name = "raw_expenses_list.html"