managment formset for new device

This commit is contained in:
Cayo Puigdefabregas 2024-07-22 13:48:10 +02:00
parent 0cffa5a951
commit 45ebb6f169
2 changed files with 52 additions and 35 deletions

View File

@ -8,11 +8,22 @@
</div> </div>
</div> </div>
<script>
function addForm(button) {
var formCount = parseInt(document.getElementById('id_form-TOTAL_FORMS').value);
var formCopy = $(document.querySelector('#id_form-0-name')).parent().parent().parent()[0].cloneNode(true);
// formCopy.style.display = 'block';
formCopy.innerHTML = formCopy.innerHTML.replace(/__prefix__/g, formCount);
document.getElementById('formset-container').appendChild(formCopy);
document.getElementById('id_form-TOTAL_FORMS').value = formCount + 1;
}
</script>
{% load django_bootstrap5 %} {% load django_bootstrap5 %}
<form role="form" method="post"> <form role="form" method="post">
{% csrf_token %} {% csrf_token %}
{% if form.errors %} {% if form.errors %}
<div class="alert alert-danger alert-icon alert-icon-border alert-dismissible" role="alert"> <div class="alert alert-danger alert-icon alert-icon-border alert-dismissible" role="alert">
<div class="icon"><span class="mdi mdi-close-circle-o"></span></div> <div class="icon"><span class="mdi mdi-close-circle-o"></span></div>
<div class="message"> <div class="message">
{% for field, error in form.errors.items %} {% for field, error in form.errors.items %}
@ -20,36 +31,35 @@
{% endfor %} {% endfor %}
<button class="btn-close" type="button" data-dismiss="alert" aria-label="Close"></button> <button class="btn-close" type="button" data-dismiss="alert" aria-label="Close"></button>
</div> </div>
</div> </div>
{% endif %} {% endif %}
{# bootstrap_form form #} {{ form.management_form }}
<div class="form-actions-no-box"> <div class="container" id="formset-container">
<a class="btn btn-grey" href="{% url 'dashboard:unassigned_devices' %}">{% translate "Cancel" %}</a> <div class="row mb-2">
<input class="btn btn-green-admin" type="submit" name="submit" value="{% translate 'Save' %}" /> <div class="col"></div>
</div> <div class="col-2 text-center">
<a href="javascript:void()" onclick="addForm(this);" type="button" class="btn btn-green-admin">
</form> <i class="bi bi-plus"></i>
<script> {% trans 'Add' %}
function addForm(button) { </a>
var formCount = parseInt(document.getElementById('id_form-TOTAL_FORMS').value); </div>
var formCopy = document.querySelector('.dynamic-form').cloneNode(true); </div>
formCopy.style.display = 'block';
formCopy.innerHTML = formCopy.innerHTML.replace(/__prefix__/g, formCount);
document.getElementById('formset-container').appendChild(formCopy);
document.getElementById('id_form-TOTAL_FORMS').value = formCount + 1;
}
</script>
<form method="post">
{% csrf_token %}
<div id="formset-container">
{% for f in form %} {% for f in form %}
<div class="dynamic-form" style="display: {% if forloop.first %}block{% else %}none{% endif %};"> <div class="row mb-2">
{{ f.as_p }} <div class="col">
{% bootstrap_field f.name %}
</div>
<div class="col">
{% bootstrap_field f.value %}
</div>
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
<button type="button" onclick="addForm(this);">Add</button> <div class="container">
<button type="submit">Submit</button> <a class="btn btn-grey" href="{% url 'dashboard:unassigned_devices' %}">{% translate "Cancel" %}</a>
<input class="btn btn-green-admin" type="submit" name="submit" value="{% translate 'Save' %}" />
</div>
</form> </form>
{% endblock %} {% endblock %}

View File

@ -21,14 +21,21 @@ class NewDeviceView(DashboardView, FormView):
template_name = "new_device.html" template_name = "new_device.html"
title = _("New Device") title = _("New Device")
breadcrumb = "Device / New Device" breadcrumb = "Device / New Device"
success_url = reverse_lazy('dashboard:unassigned_devices') success_url = reverse_lazy('device:add')
# success_url = reverse_lazy('dashboard:unassigned_devices')
form_class = DeviceFormSet form_class = DeviceFormSet
def form_valid(self, form): def form_valid(self, form):
form.instance.owner = self.request.user # import pdb; pdb.set_trace()
# form.instance.owner = self.request.user
response = super().form_valid(form) response = super().form_valid(form)
return response return response
def form_invalid(self, form):
import pdb; pdb.set_trace()
response = super().form_invalid(form)
return response
# class AddToLotView(DashboardView, FormView): # class AddToLotView(DashboardView, FormView):
# template_name = "list_lots.html" # template_name = "list_lots.html"