fix error editing states
This commit is contained in:
parent
75e8a683dd
commit
7fcc84a92b
|
@ -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'
|
||||
|
@ -93,19 +94,19 @@ class UpdateNoteView(UpdateView):
|
|||
)
|
||||
messages.success(self.request, "Note has been updated.")
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
def form_invalid(self, form):
|
||||
new_description = form.cleaned_data.get('description', '').strip()
|
||||
if not new_description:
|
||||
messages.error(self.request, _("Note cannot be empty."))
|
||||
super().form_invalid(form)
|
||||
return redirect(self.get_success_url())
|
||||
|
||||
|
||||
def get_success_url(self):
|
||||
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):
|
||||
|
|
|
@ -25,7 +25,7 @@ class AdminView(DashboardView):
|
|||
response = super().get(*args, **kwargs)
|
||||
if not self.request.user.is_admin:
|
||||
raise Http403
|
||||
|
||||
|
||||
return response
|
||||
|
||||
class PanelView(AdminView, TemplateView):
|
||||
|
@ -111,7 +111,7 @@ class EditUserView(AdminView, UpdateView):
|
|||
kwargs = super().get_form_kwargs()
|
||||
return kwargs
|
||||
|
||||
|
||||
|
||||
class InstitutionView(AdminView, UpdateView):
|
||||
template_name = "institution.html"
|
||||
title = _("Edit institution")
|
||||
|
@ -168,8 +168,9 @@ class AddStateDefinitionView(AdminView, StateDefinitionContextMixin, CreateView)
|
|||
messages.error(self.request, _("State is already defined."))
|
||||
return self.form_invalid(form)
|
||||
|
||||
def form_invalid(self, form):
|
||||
return super().form_invalid(form)
|
||||
def form_invalid(self, 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())
|
||||
|
|
Loading…
Reference in a new issue