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.shortcuts import redirect, get_object_or_404
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from action.forms import ChangeStateForm, AddNoteForm
|
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.views.generic.edit import DeleteView, CreateView, UpdateView, FormView
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.utils.translation import gettext_lazy as _
|
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
|
from device.models import Device
|
||||||
|
|
||||||
|
|
||||||
class ChangeStateView(FormView):
|
class ChangeStateView(LoginRequiredMixin, FormView):
|
||||||
form_class = ChangeStateForm
|
form_class = ChangeStateForm
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
@ -42,7 +43,7 @@ class ChangeStateView(FormView):
|
||||||
return self.request.META.get('HTTP_REFERER') or reverse_lazy('device:details')
|
return self.request.META.get('HTTP_REFERER') or reverse_lazy('device:details')
|
||||||
|
|
||||||
|
|
||||||
class AddNoteView(FormView):
|
class AddNoteView(LoginRequiredMixin, FormView):
|
||||||
form_class = AddNoteForm
|
form_class = AddNoteForm
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
@ -73,7 +74,7 @@ class AddNoteView(FormView):
|
||||||
return self.request.META.get('HTTP_REFERER') or reverse_lazy('device:details')
|
return self.request.META.get('HTTP_REFERER') or reverse_lazy('device:details')
|
||||||
|
|
||||||
|
|
||||||
class UpdateNoteView(UpdateView):
|
class UpdateNoteView(LoginRequiredMixin, UpdateView):
|
||||||
model = Note
|
model = Note
|
||||||
fields = ['description']
|
fields = ['description']
|
||||||
pk_url_kwarg = 'pk'
|
pk_url_kwarg = 'pk'
|
||||||
|
@ -105,7 +106,7 @@ class UpdateNoteView(UpdateView):
|
||||||
return self.request.META.get('HTTP_REFERER', reverse_lazy('device:details'))
|
return self.request.META.get('HTTP_REFERER', reverse_lazy('device:details'))
|
||||||
|
|
||||||
|
|
||||||
class DeleteNoteView(View):
|
class DeleteNoteView(LoginRequiredMixin, View):
|
||||||
model = Note
|
model = Note
|
||||||
|
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
|
|
|
@ -169,7 +169,8 @@ class AddStateDefinitionView(AdminView, StateDefinitionContextMixin, CreateView)
|
||||||
return self.form_invalid(form)
|
return self.form_invalid(form)
|
||||||
|
|
||||||
def form_invalid(self, 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):
|
class DeleteStateDefinitionView(AdminView, StateDefinitionContextMixin, SuccessMessageMixin, DeleteView):
|
||||||
|
@ -218,14 +219,21 @@ class UpdateStateDefinitionView(AdminView, UpdateView):
|
||||||
model = StateDefinition
|
model = StateDefinition
|
||||||
template_name = 'states_panel.html'
|
template_name = 'states_panel.html'
|
||||||
fields = ['state']
|
fields = ['state']
|
||||||
|
success_url = reverse_lazy('admin:states_panel')
|
||||||
pk_url_kwarg = 'pk'
|
pk_url_kwarg = 'pk'
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return StateDefinition.objects.filter(institution=self.request.user.institution)
|
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):
|
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