diff --git a/src/servala/core/crd.py b/src/servala/core/crd.py index 5681ae0..aebb99f 100644 --- a/src/servala/core/crd.py +++ b/src/servala/core/crd.py @@ -6,7 +6,7 @@ from django.db import models from django.forms.models import ModelForm, ModelFormMetaclass from django.utils.translation import gettext_lazy as _ -from servala.core.models import ServiceInstance +from servala.core.models import ServiceInstance, ControlPlaneCRD from servala.frontend.forms.widgets import DynamicArrayField, DynamicArrayWidget @@ -37,7 +37,7 @@ def generate_django_model(schema, group, version, kind): """ # We always need these three fields to know our own name and our full namespace model_fields = {"__module__": "crd_models"} - for field_name in ("name", "organization", "context"): + for field_name in ("name", "context"): model_fields[field_name] = duplicate_field(field_name, ServiceInstance) # All other fields are generated from the schema, except for the @@ -290,9 +290,10 @@ class FormGeneratorMixin: def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - for field in ("organization", "context"): - if field in self.fields: - self.fields[field].widget = forms.HiddenInput() + if "context" in self.fields: + self.fields["context"].widget = forms.HiddenInput() + if "context" in self.initial: + self.fields["context"].queryset = ControlPlaneCRD.objects.filter(pk=self.initial["context"].pk) if self.instance and hasattr(self.instance, "name") and self.instance.name: if "name" in self.fields: @@ -546,7 +547,6 @@ class CustomFormMixin(FormGeneratorMixin): self.fields["name"].widget = forms.HiddenInput() self.fields["name"].disabled = True self.fields.pop("context", None) - self.fields.pop("organization", None) def _apply_field_config(self): for fieldset in self.form_config.get("fieldsets", []): @@ -605,7 +605,7 @@ class CustomFormMixin(FormGeneratorMixin): def get_nested_data(self): nested = {} for field_name in self.fields.keys(): - if field_name in ("organization", "context"): + if field_name == "context": value = self.cleaned_data.get(field_name) if value is not None: nested[field_name] = value @@ -629,7 +629,7 @@ def generate_custom_form_class(form_config, model): """ Generate a custom (user-friendly) form class from form_config JSON. """ - field_list = ["organization", "context", "name"] + field_list = ["context", "name"] for fieldset in form_config.get("fieldsets", []): for field_config in fieldset.get("fields", []): @@ -638,13 +638,8 @@ def generate_custom_form_class(form_config, model): field_list.append(field_name) fields = { - "organization": forms.ModelChoiceField( - queryset=None, - required=True, - widget=forms.HiddenInput(), - ), "context": forms.ModelChoiceField( - queryset=None, + queryset=ControlPlaneCRD.objects.none(), required=True, widget=forms.HiddenInput(), ),