servala-portal/src/servala/frontend/forms/service.py
Tobias Kunze a1a150b85e
All checks were successful
Tests / test (push) Successful in 24s
Show service ordering form
2025-03-25 18:30:31 +01:00

30 lines
1 KiB
Python

from django import forms
from servala.core.models import CloudProvider, ControlPlane, ServiceCategory
class ServiceFilterForm(forms.Form):
category = forms.ModelChoiceField(
queryset=ServiceCategory.objects.all(), required=False
)
cloud_provider = forms.ModelChoiceField(
queryset=CloudProvider.objects.all(), required=False
)
q = forms.CharField(required=False)
def filter_queryset(self, queryset):
if category := self.cleaned_data.get("category"):
queryset = queryset.filter(category=category)
if cloud_provider := self.cleaned_data.get("cloud_provider"):
queryset = queryset.filter(
offerings__control_planes__cloud_provider=cloud_provider
)
return queryset
class ControlPlaneSelectForm(forms.Form):
control_plane = forms.ModelChoiceField(queryset=ControlPlane.objects.none())
def __init__(self, *args, planes=None, **kwargs):
super().__init__(*args, **kwargs)
self.fields["control_plane"].queryset = planes