mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-30 20:55:42 +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:
		| @@ -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(); | ||||||
|                     } |                     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user