website/hub/services/views/partners.py

49 lines
1.4 KiB
Python

from django.shortcuts import render, get_object_or_404
from django.db.models import Q
from hub.services.models import (
ConsultingPartner,
CloudProvider,
)
def partner_list(request):
partners = ConsultingPartner.objects.all().prefetch_related(
"services", "cloud_providers"
)
# 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)
# 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,
"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)