working category form

This commit is contained in:
Andreas Zweili 2022-02-07 14:49:40 +01:00
parent 844827b7e1
commit f4b41c4716
2 changed files with 25 additions and 13 deletions

View File

@ -0,0 +1,6 @@
{% if valid %}
<div hx-swap-oob="true:#div_id_category">{{ form }}</div>
<div id="htmx-modal-position" hx-swap-oob="true"></div>
{% else %}
{{ form }}
{% endif %}

View File

@ -1,8 +1,8 @@
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
from django.http.response import HttpResponse
from django.shortcuts import get_object_or_404, redirect
from django.shortcuts import render
from django.template.context_processors import csrf
from django.template.response import TemplateResponse
from django.urls import reverse
from django.views.generic import CreateView
@ -11,6 +11,7 @@ from django.views.generic import UpdateView
from django.views.generic import DeleteView
from crispy_forms.utils import render_crispy_form
from crispy_forms.templatetags.crispy_forms_filters import as_crispy_field
from django_tables2 import RequestConfig
from customers.decorators import customer_view_permission
@ -206,26 +207,31 @@ class DeviceManufacturerDetailView(LoginRequiredMixin, DetailView):
@login_required
def htmx_create_device_cagetory(request):
template_path = "devices/partials/device_category_create.html"
pk = request.session.get('device_to_update')
device = utils.get_object_with_view_permission(Device,
user=request.user,
pk=pk)
context = {}
if request.method == "POST" and 'save_category' in request.POST:
form = DeviceCategoryForm(request.POST)
if form.is_valid():
category = form.save(commit=True)
pk = request.session.get('device_to_update')
device = utils.get_object_with_view_permission(Device,
user=request.user,
pk=pk)
device.category = category
device_form = DeviceUpdateForm(request, instance=device)
form_html = render_crispy_form(device_form)
return HttpResponse(form_html)
form_html = as_crispy_field(device_form['category'])
else:
form.helper.attrs['hx-target'] = '#htmx-modal-position'
return TemplateResponse(request,
template_path,
context={"form": form})
context.update(csrf(request))
form.helper.attrs['hx-swap-oob'] = 'true'
form_html = render_crispy_form(form, context=context)
context["valid"] = form.is_valid()
context["form"] = form_html
template_path = "devices/partials/device_category_response.html"
return TemplateResponse(request,
template_path,
context)
form = DeviceCategoryForm()
context = {"form": form}
context["form"] = form
template_path = "devices/partials/device_category_create.html"
return TemplateResponse(request,
template_path,
context)