website/hub/services/views/partners.py

57 lines
1.6 KiB
Python
Raw Normal View History

2025-01-30 09:49:27 +01:00
from django.shortcuts import render, get_object_or_404
from django.db.models import Q
2025-02-25 13:43:28 +01:00
from hub.services.models import ConsultingPartner, CloudProvider, Service
2025-01-30 09:49:27 +01:00
def partner_list(request):
2025-02-26 10:39:23 +01:00
partners = (
ConsultingPartner.objects.all()
.order_by("name")
.prefetch_related("services", "cloud_providers")
2025-01-30 09:49:27 +01:00
)
2025-02-25 13:43:28 +01:00
services = Service.objects.all().order_by("name")
2025-01-30 09:49:27 +01:00
# Handle cloud provider filter
if request.GET.get("cloud_provider"):
provider_id = request.GET.get("cloud_provider")
partners = partners.filter(cloud_providers__id=provider_id)
2025-02-25 13:43:28 +01:00
# Handle service filter
if request.GET.get("service"):
service_id = request.GET.get("service")
partners = partners.filter(services__id=service_id)
2025-01-30 09:49:27 +01:00
# Handle search
if request.GET.get("search"):
query = request.GET.get("search")
partners = partners.filter(
Q(name__icontains=query) | Q(description__icontains=query)
)
context = {
"partners": partners,
2025-02-25 13:43:28 +01:00
"services": services,
2025-01-30 09:49:27 +01:00
"cloud_providers": CloudProvider.objects.all(),
}
return render(request, "services/partner_list.html", context)
def partner_detail(request, slug):
partner = get_object_or_404(
ConsultingPartner.objects.prefetch_related(
"services",
"services__categories",
"services__offerings",
"services__offerings__cloud_provider",
"cloud_providers",
),
slug=slug,
)
context = {
"partner": partner,
"services": partner.services.all(),
}
return render(request, "services/partner_detail.html", context)