2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-05-12 10:12:58 +00:00

Remove AjaxCreateView class (#4041)

This commit is contained in:
Oliver 2022-12-11 22:32:35 +11:00 committed by GitHub
parent 53ecca34d8
commit 0bf335bba3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -18,8 +18,7 @@ from django.urls import reverse_lazy
from django.utils.timezone import now from django.utils.timezone import now
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views import View from django.views import View
from django.views.generic import (CreateView, DeleteView, DetailView, ListView, from django.views.generic import DeleteView, DetailView, ListView, UpdateView
UpdateView)
from django.views.generic.base import RedirectView, TemplateView from django.views.generic.base import RedirectView, TemplateView
from allauth.account.forms import AddEmailForm from allauth.account.forms import AddEmailForm
@ -185,7 +184,6 @@ class InvenTreeRoleMixin(PermissionRequiredMixin):
UpdateView: 'change', UpdateView: 'change',
DeleteView: 'delete', DeleteView: 'delete',
AjaxUpdateView: 'change', AjaxUpdateView: 'change',
AjaxCreateView: 'add',
} }
for view_class in permission_map.keys(): for view_class in permission_map.keys():
@ -360,77 +358,6 @@ class QRCodeView(AjaxView):
return context return context
class AjaxCreateView(AjaxMixin, CreateView):
"""An 'AJAXified' CreateView for creating a new object in the db.
- Returns a form in JSON format (for delivery to a modal window)
- Handles form validation via AJAX POST requests
"""
def get(self, request, *args, **kwargs):
"""Creates form with initial data, and renders JSON response."""
super(CreateView, self).get(request, *args, **kwargs)
self.request = request
form = self.get_form()
return self.renderJsonResponse(request, form)
def save(self, form):
"""Method for actually saving the form to the database.
Default implementation is very simple, but can be overridden if required.
"""
self.object = form.save()
return self.object
def post(self, request, *args, **kwargs):
"""Responds to form POST. Validates POST data and returns status info.
- Validate POST form data
- If valid, save form
- Return status info (success / failure)
"""
self.request = request
self.form = self.get_form()
# Perform initial form validation
self.form.is_valid()
# Perform custom validation (no object can be provided yet)
self.validate(None, self.form)
valid = self.form.is_valid()
# Extra JSON data sent alongside form
data = {
'form_valid': valid,
'form_errors': self.form.errors.as_json(),
'non_field_errors': self.form.non_field_errors().as_json(),
}
# Add in any extra class data
for value, key in enumerate(self.get_data()):
data[key] = value
if valid:
# Save the object to the database
self.object = self.save(self.form)
if self.object:
# Return the PK of the newly-created object
data['pk'] = self.object.pk
data['text'] = str(self.object)
try:
data['url'] = self.object.get_absolute_url()
except AttributeError:
pass
return self.renderJsonResponse(request, self.form, data)
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.