add consulting partners

This commit is contained in:
Tobias Brunner 2025-01-28 08:53:00 +01:00
parent 022f0ad60f
commit ca251218e5
No known key found for this signature in database
8 changed files with 261 additions and 9 deletions

View file

@ -4,7 +4,14 @@ from django.conf import settings
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib import messages
from django.db.models import Q
from .models import Service, CloudProvider, Country, ServiceLevel, Category
from .models import (
Service,
CloudProvider,
ConsultingPartner,
Country,
ServiceLevel,
Category,
)
from .forms import LeadForm
from .odoo import OdooAPI
@ -17,9 +24,9 @@ def service_list(request):
cloud_providers = CloudProvider.objects.all()
countries = Country.objects.all()
service_levels = ServiceLevel.objects.all()
categories = Category.objects.filter(parent=None) # Top-level categories
categories = Category.objects.filter(parent=None)
consulting_partners = ConsultingPartner.objects.all()
# Filter handling
if request.GET.get("cloud_provider"):
services = services.filter(cloud_provider_id=request.GET.get("cloud_provider"))
@ -32,13 +39,16 @@ def service_list(request):
if request.GET.get("category"):
category_id = request.GET.get("category")
category = Category.objects.get(id=category_id)
# Get all subcategories
subcategories = Category.objects.filter(parent=category)
# Filter services in this category or its subcategories
services = services.filter(
Q(categories=category) | Q(categories__in=subcategories)
).distinct()
if request.GET.get("consulting_partner"):
services = services.filter(
consulting_partners__id=request.GET.get("consulting_partner")
)
if request.GET.get("search"):
query = request.GET.get("search")
services = services.filter(
@ -51,6 +61,7 @@ def service_list(request):
"countries": countries,
"service_levels": service_levels,
"categories": categories,
"consulting_partners": consulting_partners,
}
return render(request, "services/service_list.html", context)
@ -70,6 +81,16 @@ def provider_detail(request, slug):
return render(request, "services/provider_detail.html", context)
def partner_detail(request, slug):
partner = get_object_or_404(ConsultingPartner, slug=slug)
services = Service.objects.filter(consulting_partners=partner)
return render(
request,
"services/partner_detail.html",
{"partner": partner, "services": services},
)
def thank_you(request, slug):
service = get_object_or_404(Service, slug=slug)
return render(request, "services/thank_you.html", {"service": service})