mirror of
https://github.com/inventree/InvenTree.git
synced 2025-07-16 01:36:29 +00:00
Generic AjaxCreateView
- Allows for same form to be posted
This commit is contained in:
65
InvenTree/InvenTree/views.py
Normal file
65
InvenTree/InvenTree/views.py
Normal file
@@ -0,0 +1,65 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.template.loader import render_to_string
|
||||
from django.http import JsonResponse
|
||||
|
||||
from django.views.generic import UpdateView, CreateView, DeleteView
|
||||
|
||||
|
||||
class AjaxView(object):
|
||||
|
||||
ajax_form_action = ''
|
||||
ajax_form_title = ''
|
||||
ajax_submit_text = 'Submit'
|
||||
|
||||
def getAjaxTemplate(self):
|
||||
if hasattr(self, 'ajax_template_name'):
|
||||
return self.ajax_template_name
|
||||
else:
|
||||
return self.template_name
|
||||
|
||||
|
||||
def renderJsonResponse(self, request, form):
|
||||
|
||||
context = {'form': form,
|
||||
'form_action': self.ajax_form_action,
|
||||
'form_title': self.ajax_form_title,
|
||||
'submit_text': self.ajax_submit_text,
|
||||
}
|
||||
|
||||
data = {'form_valid': form.is_valid()}
|
||||
|
||||
data['html_form'] = render_to_string(
|
||||
self.getAjaxTemplate(),
|
||||
context,
|
||||
request=request
|
||||
)
|
||||
|
||||
return JsonResponse(data)
|
||||
|
||||
|
||||
class AjaxCreateView(AjaxView, CreateView):
|
||||
|
||||
def post(self, request):
|
||||
|
||||
if request.is_ajax():
|
||||
form = self.form_class(request.POST)
|
||||
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
|
||||
return self.renderJsonResponse(request, form)
|
||||
|
||||
else:
|
||||
return super(CreateView, self).post(request)
|
||||
|
||||
def get(self, request):
|
||||
|
||||
if request.is_ajax():
|
||||
form = self.form_class()
|
||||
|
||||
return self.renderJsonResponse(request, form)
|
||||
|
||||
else:
|
||||
return super(CreateView, self).post(request)
|
Reference in New Issue
Block a user