fix error editing states

This commit is contained in:
Cayo Puigdefabregas 2025-01-30 12:24:17 +01:00
parent 75e8a683dd
commit 7fcc84a92b
2 changed files with 24 additions and 15 deletions

View file

@ -2,6 +2,7 @@ from django.views import View
from django.shortcuts import redirect, get_object_or_404
from django.contrib import messages
from action.forms import ChangeStateForm, AddNoteForm
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic.edit import DeleteView, CreateView, UpdateView, FormView
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
@ -9,7 +10,7 @@ from action.models import State, StateDefinition, Note, DeviceLog
from device.models import Device
class ChangeStateView(FormView):
class ChangeStateView(LoginRequiredMixin, FormView):
form_class = ChangeStateForm
def form_valid(self, form):
@ -42,7 +43,7 @@ class ChangeStateView(FormView):
return self.request.META.get('HTTP_REFERER') or reverse_lazy('device:details')
class AddNoteView(FormView):
class AddNoteView(LoginRequiredMixin, FormView):
form_class = AddNoteForm
def form_valid(self, form):
@ -73,7 +74,7 @@ class AddNoteView(FormView):
return self.request.META.get('HTTP_REFERER') or reverse_lazy('device:details')
class UpdateNoteView(UpdateView):
class UpdateNoteView(LoginRequiredMixin, UpdateView):
model = Note
fields = ['description']
pk_url_kwarg = 'pk'
@ -105,7 +106,7 @@ class UpdateNoteView(UpdateView):
return self.request.META.get('HTTP_REFERER', reverse_lazy('device:details'))
class DeleteNoteView(View):
class DeleteNoteView(LoginRequiredMixin, View):
model = Note
def post(self, request, *args, **kwargs):

View file

@ -169,7 +169,8 @@ class AddStateDefinitionView(AdminView, StateDefinitionContextMixin, CreateView)
return self.form_invalid(form)
def form_invalid(self, form):
return super().form_invalid(form)
super().form_invalid(form)
return redirect(self.success_url)
class DeleteStateDefinitionView(AdminView, StateDefinitionContextMixin, SuccessMessageMixin, DeleteView):
@ -218,14 +219,21 @@ class UpdateStateDefinitionView(AdminView, UpdateView):
model = StateDefinition
template_name = 'states_panel.html'
fields = ['state']
success_url = reverse_lazy('admin:states_panel')
pk_url_kwarg = 'pk'
def get_queryset(self):
return StateDefinition.objects.filter(institution=self.request.user.institution)
def get_success_url(self):
messages.success(self.request, _("State definition updated successfully."))
return reverse_lazy('admin:states_panel')
def form_valid(self, form):
return super().form_valid(form)
try:
response = super().form_valid(form)
messages.success(self.request, _("State definition updated successfully."))
return response
except IntegrityError:
messages.error(self.request, _("State is already defined."))
return self.form_invalid(form)
def form_invalid(self, form):
super().form_invalid(form)
return redirect(self.get_success_url())