network_inventory/src/customers/views.py

87 lines
3.0 KiB
Python
Raw Permalink Normal View History

2021-12-23 22:44:31 +01:00
from django_tables2 import RequestConfig
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
2021-12-22 19:14:18 +01:00
from django.http.response import HttpResponse
2020-01-07 20:11:36 +01:00
from django.shortcuts import render
2022-03-23 12:18:40 +01:00
from django.template.context_processors import csrf
from django.template.response import TemplateResponse
2020-05-23 14:18:16 +02:00
from django.urls import reverse
2020-08-03 16:35:36 +02:00
from django.views.generic import DeleteView
2022-03-23 12:18:40 +01:00
from crispy_forms.utils import render_crispy_form
from crispy_forms.templatetags.crispy_forms_filters import as_crispy_field
from core import utils
from .forms import CustomerForm
2022-03-23 13:49:58 +01:00
from .forms import DummyLocationForm
2022-03-23 12:18:40 +01:00
from .forms import LocationForm
2022-03-23 13:49:58 +01:00
from .models import Customer, DummyLocation
from .tables import CustomersTable
@login_required
def customers_table_view(request):
2022-03-27 14:50:44 +02:00
customers = utils.objects_for_allowed_customers(Customer, request.user)
2021-12-23 22:12:14 +01:00
table = CustomersTable(customers)
RequestConfig(request).configure(table)
2023-07-10 16:47:01 +02:00
return render(request, "customers/customer_list.html", {"customers": table})
2021-12-22 19:14:18 +01:00
@login_required
2022-02-10 21:40:49 +01:00
def create_customer(request):
2021-12-22 19:14:18 +01:00
if request.method == "POST":
form = CustomerForm(request.POST)
if form.is_valid():
form.save(commit=True)
return HttpResponse("<script>location.reload()</script>")
2021-12-22 19:14:18 +01:00
else:
2022-03-27 14:50:44 +02:00
return TemplateResponse(
request,
"customers/partials/customer_create.html",
context={"form": form},
)
2021-12-22 19:14:18 +01:00
form = CustomerForm()
context = {"form": form}
2023-07-10 16:47:01 +02:00
return TemplateResponse(request, "customers/partials/customer_create.html", context)
2021-12-21 17:51:57 +01:00
2021-12-23 18:50:03 +01:00
@login_required
def customer_detail_view(request, pk):
2023-07-10 16:47:01 +02:00
customer = utils.get_object_with_view_permission(Customer, user=request.user, pk=pk)
2022-03-27 14:50:44 +02:00
context = {"customer": customer}
2023-07-10 16:47:01 +02:00
return TemplateResponse(request, "customers/customer_details.html", context)
2020-05-23 14:18:16 +02:00
class CustomerDeleteView(LoginRequiredMixin, DeleteView): # type: ignore
2020-08-03 16:35:36 +02:00
model = Customer
def get_success_url(self):
2022-03-27 14:50:44 +02:00
return reverse("customers")
2022-03-23 12:18:40 +01:00
@login_required
def htmx_create_location(request):
context = {}
user = request.user
2022-03-27 14:50:44 +02:00
if request.method == "POST" and "save_location" in request.POST:
2022-03-23 12:18:40 +01:00
form = LocationForm(request.POST, user=user)
if form.is_valid():
2022-03-23 13:49:58 +01:00
location = form.save(commit=True)
dummy_model = DummyLocation()
dummy_model.location = location
dummy_form = DummyLocationForm(instance=dummy_model)
form_html = as_crispy_field(dummy_form["location"])
2022-03-23 12:18:40 +01:00
else:
context.update(csrf(request))
2022-03-27 14:50:44 +02:00
form.helper.attrs["hx-swap-oob"] = "true"
2022-03-23 12:18:40 +01:00
form_html = render_crispy_form(form)
context["valid"] = form.is_valid()
2022-03-27 14:50:44 +02:00
context["form"] = form_html
2022-03-23 12:18:40 +01:00
template_path = "customers/partials/location_response.html"
return TemplateResponse(request, template_path, context)
form = LocationForm(user=user)
context["form"] = form
template_path = "customers/partials/location_create.html"
return TemplateResponse(request, template_path, context)