2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-29 12:06:44 +00:00

Simplify AjaxUpdateView

- Using get_form() is MUCH simpler
This commit is contained in:
Oliver Walters 2019-04-28 10:39:46 +10:00
parent 96a15453c4
commit 72ff25e0c1

View File

@ -184,7 +184,6 @@ class AjaxCreateView(AjaxMixin, CreateView):
class AjaxUpdateView(AjaxMixin, UpdateView): class AjaxUpdateView(AjaxMixin, UpdateView):
""" An 'AJAXified' UpdateView for updating an object in the db """ An 'AJAXified' UpdateView for updating an object in the db
- Returns form in JSON format (for delivery to a modal window) - Returns form in JSON format (for delivery to a modal window)
- Handles repeated form validation (via AJAX) until the form is valid - Handles repeated form validation (via AJAX) until the form is valid
@ -192,35 +191,31 @@ class AjaxUpdateView(AjaxMixin, UpdateView):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
html_response = super(UpdateView, self).get(request, *args, **kwargs) super(UpdateView, self).get(request, *args, **kwargs)
if request.is_ajax(): form = self.get_form()
form = self.form_class(instance=self.get_object()) # form = self.form_class(instance=self.get_object())
return self.renderJsonResponse(request, form) return self.renderJsonResponse(request, form)
else:
return html_response
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
form = self.form_class(instance=self.get_object(), data=request.POST, files=request.FILES) super(UpdateView, self).post(request, *args, **kwargs)
if request.is_ajax(): form = self.get_form()
data = {'form_valid': form.is_valid()} data = {
'form_valid': form.is_valid()
}
if form.is_valid(): if form.is_valid():
obj = form.save() obj = form.save()
# Include context data about the updated object
data['pk'] = obj.id
data['url'] = obj.get_absolute_url()
data['pk'] = obj.id return self.renderJsonResponse(request, form, data)
data['url'] = obj.get_absolute_url()
response = self.renderJsonResponse(request, form, data)
return response
else:
return super(UpdateView, self).post(request, *args, **kwargs)
class AjaxDeleteView(AjaxMixin, DeleteView): class AjaxDeleteView(AjaxMixin, DeleteView):