hackens-orga/hackens_orga/frontend/views.py
2023-02-16 19:11:33 +01:00

78 lines
2.8 KiB
Python

"""
Frontend views for the app
"""
from agent.model import Agent
from budget.models import BudgetGroup, BudgetLine
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.db.models import Model
from django.urls import reverse
from django.views.generic import (CreateView, DeleteView, DetailView, ListView,
TemplateView, UpdateView)
class BudgetListView(ListView):
model = BudgetGroup
template_name = "frontend/budget_list.html"
ordering = "-name"
class BudgetGroupCreateView(SuccessMessageMixin, PermissionRequiredMixin, CreateView):
model = BudgetGroup
fields = ["name", "description"]
template_name = "frontend/budgetgroup_create.html"
success_message = "Le budget %(name)s a été créé avec succès"
permission_required = "budget.add_budgetgroup"
def get_success_url(self):
return reverse("frontend:budget")
class BudgetGroupUpdateView(SuccessMessageMixin, PermissionRequiredMixin, UpdateView):
model = BudgetGroup
fields = ["name", "description"]
template_name = "frontend/budgetgroup_create.html"
success_message = "Le budget %(name)s a été mis à jour avec succès"
permission_required = "budget.change_budgetgroup"
def get_success_url(self):
return reverse("frontend:budget")
class BudgetLineCreateView(SuccessMessageMixin, PermissionRequiredMixin, CreateView):
model = BudgetLine
fields = ["title", "comment", "amount", "author", "date", "group", "facture"]
template_name = "frontend/budgetline_create.html"
success_message = 'La dépense/recette "%(title)s" a été créée avec succès'
permission_required = "budget.add_budgetline"
def get_initial(self):
if "groupid" in self.request.GET:
try:
gid = int(self.request.GET["groupid"])
except ValueError:
gid = None
if gid is not None:
try:
grp = BudgetGroup.objects.get(pk=gid)
except Model.DoesNotExist:
grp = None
else:
grp = None
agents = Agent.objects.filter(user=self.user)
return {"author": agent, "group": grp}
def get_success_url(self):
return reverse("frontend:budget")
class BudgetLineUpdateView(SuccessMessageMixin, UpdateView, PermissionRequiredMixin):
model = BudgetLine
fields = ["title", "comment", "amount", "author", "date", "group", "facture"]
template_name = "frontend/budgetline_update.html"
success_message = 'La dépense/recette "%(title)s" a été mise à jour avec succès'
permission_required = "budget.change_budgetline"
def get_success_url(self):
return reverse("frontend:budget")