mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Modal for company create
- Ajax modals now return the URL of the item they are operating on - passing {follow: true} to the modal caller will go to that URL on success - footable'd company list
This commit is contained in:
parent
c4e305bde6
commit
36cf946a78
@ -54,6 +54,8 @@ class AjaxCreateView(AjaxView, CreateView):
|
|||||||
# Return the PK of the newly-created object
|
# Return the PK of the newly-created object
|
||||||
data['pk'] = obj.pk
|
data['pk'] = obj.pk
|
||||||
|
|
||||||
|
data['url'] = obj.get_absolute_url()
|
||||||
|
|
||||||
return self.renderJsonResponse(request, form, data)
|
return self.renderJsonResponse(request, form, data)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@ -84,6 +86,9 @@ class AjaxUpdateView(AjaxView, UpdateView):
|
|||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
obj = form.save()
|
obj = form.save()
|
||||||
|
|
||||||
|
data['pk'] = obj.id
|
||||||
|
data['url'] = obj.get_absolute_url()
|
||||||
|
|
||||||
return self.renderJsonResponse(request, form, data)
|
return self.renderJsonResponse(request, form, data)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@ -34,12 +34,7 @@ class EditCompanyForm(forms.ModelForm):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(EditCompanyForm, self).__init__(*args, **kwargs)
|
super(EditCompanyForm, self).__init__(*args, **kwargs)
|
||||||
self.helper = FormHelper()
|
self.helper = FormHelper()
|
||||||
|
self.helper.form_tag = False
|
||||||
self.helper.form_id = 'id-edit-part-form'
|
|
||||||
self.helper.form_class = 'blueForms'
|
|
||||||
self.helper.form_method = 'post'
|
|
||||||
|
|
||||||
self.helper.add_input(Submit('submit', 'Submit'))
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Company
|
model = Company
|
||||||
|
@ -6,23 +6,30 @@
|
|||||||
|
|
||||||
<h3>Companies</h3>
|
<h3>Companies</h3>
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class='input-group'>
|
|
||||||
<input class="form-control" id="company-filter" type="text" placeholder="Search...">
|
|
||||||
<span class='input-group-btn'>
|
|
||||||
<button type='button' class='btn' id='clear-filter'>Clear</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<hr>
|
|
||||||
<ul class='list-group' id="company-list">
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
<table class='table table-striped' id='company-table' data-sorting='true' data-filtering='true'>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Description</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for company in companies %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="{% url 'company-detail' company.id %}">
|
||||||
|
{{ company.name }}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>{{ company.description }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
<div class='container-fluid'>
|
<div class='container-fluid'>
|
||||||
<a href="{% url 'company-create' %}">
|
<button class="btn btn-success" id='new-company'>New Company</button>
|
||||||
<button class="btn btn-success">New Company</button>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% include 'modals.html' %}
|
{% include 'modals.html' %}
|
||||||
@ -31,8 +38,19 @@
|
|||||||
|
|
||||||
{% block javascript %}
|
{% block javascript %}
|
||||||
|
|
||||||
<script type="text/javascript" src="{% static 'script/delay.js' %}"></script>
|
<script type='text/javascript' src="{% static 'script/footable.js' %}"></script>
|
||||||
<script type="text/javascript" src="{% static 'script/filter_company.js' %}">
|
<script type='text/javascript' src="{% static 'script/modal_form.js' %}"></script>
|
||||||
|
|
||||||
|
<script type='text/javascript'>
|
||||||
|
$('#company-table').footable();
|
||||||
|
|
||||||
|
$('#new-company').click(function () {
|
||||||
|
launchModalForm('#modal-form',
|
||||||
|
"{% url 'company-create' %}",
|
||||||
|
{
|
||||||
|
follow: true
|
||||||
|
});
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -6,6 +6,8 @@ from django.http import HttpResponseRedirect
|
|||||||
from django.views.generic import DetailView, ListView
|
from django.views.generic import DetailView, ListView
|
||||||
from django.views.generic.edit import UpdateView, DeleteView, CreateView
|
from django.views.generic.edit import UpdateView, DeleteView, CreateView
|
||||||
|
|
||||||
|
from InvenTree.views import AjaxCreateView, AjaxUpdateView, AjaxDeleteView
|
||||||
|
|
||||||
from .models import Company
|
from .models import Company
|
||||||
|
|
||||||
from .forms import EditCompanyForm
|
from .forms import EditCompanyForm
|
||||||
@ -43,11 +45,13 @@ class CompanyEdit(UpdateView):
|
|||||||
context_object_name = 'company'
|
context_object_name = 'company'
|
||||||
|
|
||||||
|
|
||||||
class CompanyCreate(CreateView):
|
class CompanyCreate(AjaxCreateView):
|
||||||
model = Company
|
model = Company
|
||||||
context_object_name = 'company'
|
context_object_name = 'company'
|
||||||
form_class = EditCompanyForm
|
form_class = EditCompanyForm
|
||||||
template_name = "company/create.html"
|
template_name = "company/create.html"
|
||||||
|
ajax_template_name = 'modal_form.html'
|
||||||
|
ajax_form_title = "Create new Company"
|
||||||
|
|
||||||
|
|
||||||
class CompanyDelete(DeleteView):
|
class CompanyDelete(DeleteView):
|
||||||
|
@ -129,12 +129,19 @@ function launchModalForm(modal, url, options = {}) {
|
|||||||
|
|
||||||
$(modal).modal('hide');
|
$(modal).modal('hide');
|
||||||
|
|
||||||
|
// Form success callback
|
||||||
if (options.success) {
|
if (options.success) {
|
||||||
options.success();
|
options.success();
|
||||||
}
|
}
|
||||||
|
// Follow the URL returned by the JSON response
|
||||||
|
else if (options.follow && response.url) {
|
||||||
|
window.location.href = response.url;
|
||||||
|
}
|
||||||
|
// Redirect to a specific URL
|
||||||
else if (options.redirect) {
|
else if (options.redirect) {
|
||||||
window.location.href = options.redirect;
|
window.location.href = options.redirect;
|
||||||
}
|
}
|
||||||
|
// Reload the current page
|
||||||
else if (options.reload) {
|
else if (options.reload) {
|
||||||
location.reload();
|
location.reload();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user