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.translation import gettext_lazy as _
from django.views import View
from django.views.generic import (CreateView, DeleteView, DetailView, ListView,
UpdateView)
from django.views.generic import DeleteView, DetailView, ListView, UpdateView
from django.views.generic.base import RedirectView, TemplateView
from allauth.account.forms import AddEmailForm
@ -185,7 +184,6 @@ class InvenTreeRoleMixin(PermissionRequiredMixin):
UpdateView: 'change',
DeleteView: 'delete',
AjaxUpdateView: 'change',
AjaxCreateView: 'add',
}
for view_class in permission_map.keys():
@ -360,77 +358,6 @@ class QRCodeView(AjaxView):
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):
"""An 'AJAXified' UpdateView for updating an object in the db.