From 59e7a75c51f2e4231793e13782af33cbcefab474 Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Wed, 5 Nov 2025 10:42:41 +0100 Subject: [PATCH 1/2] Simplify form configuration, remove generators reference --- src/servala/core/crd.py | 2 +- src/servala/core/schemas/form_config_schema.json | 15 +-------------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/servala/core/crd.py b/src/servala/core/crd.py index 8c31a27..6ae70c9 100644 --- a/src/servala/core/crd.py +++ b/src/servala/core/crd.py @@ -560,7 +560,7 @@ class CustomFormMixin(FormGeneratorMixin): field = self.fields[field_name] field_type = field_config.get("type") - field.label = field_config.get("label", field_config["name"]) + field.label = field_config.get("label", field_name) field.help_text = field_config.get("help_text", "") field.required = field_config.get("required", False) diff --git a/src/servala/core/schemas/form_config_schema.json b/src/servala/core/schemas/form_config_schema.json index 1049ed8..15f79df 100644 --- a/src/servala/core/schemas/form_config_schema.json +++ b/src/servala/core/schemas/form_config_schema.json @@ -23,13 +23,8 @@ "minItems": 1, "items": { "type": "object", - "required": ["name", "type", "label", "controlplane_field_mapping"], + "required": ["type", "label", "controlplane_field_mapping"], "properties": { - "name": { - "type": "string", - "description": "Unique field name/identifier", - "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$" - }, "type": { "type": "string", "description": "Field type", @@ -97,14 +92,6 @@ "type": "string", "enum": ["email", "fqdn", "url", "ipv4", "ipv6"] } - }, - "generators": { - "type": "array", - "description": "Array of generator function names (for future use)", - "items": { - "type": "string", - "enum": ["suggest_fqdn_from_name"] - } } } } From ca485978b93b8997bdbe774127503dcdc1765e9f Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Wed, 5 Nov 2025 10:45:37 +0100 Subject: [PATCH 2/2] Code style --- src/servala/core/forms.py | 2 +- .../core/migrations/0013_add_form_config.py | 6 ++++- .../frontend/templates/account/login.html | 4 ++- .../service_offering_detail.html | 4 ++- .../includes/control_plane_user_info.html | 6 ++--- .../includes/tabbed_fieldset_form.html | 27 +++++++++++-------- 6 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/servala/core/forms.py b/src/servala/core/forms.py index 36f8be5..dacd956 100644 --- a/src/servala/core/forms.py +++ b/src/servala/core/forms.py @@ -192,7 +192,7 @@ class ServiceDefinitionAdminForm(forms.ModelForm): schema = None try: schema = crd.resource_schema - except Exception as e: + except Exception: pass if not schema or not (spec_schema := schema.get("properties", {}).get("spec")): diff --git a/src/servala/core/migrations/0013_add_form_config.py b/src/servala/core/migrations/0013_add_form_config.py index bd35891..2819a6c 100644 --- a/src/servala/core/migrations/0013_add_form_config.py +++ b/src/servala/core/migrations/0013_add_form_config.py @@ -15,7 +15,11 @@ class Migration(migrations.Migration): name="form_config", field=models.JSONField( blank=True, - help_text='Optional custom form configuration. When provided, this configuration will be used to render the service form instead of auto-generating it from the OpenAPI spec. Format: {"fieldsets": [{"title": "Section", "fields": [{...}]}]}', + help_text=( + "Optional custom form configuration. When provided, this configuration will " + "be used to render the service form instead of auto-generating it from the OpenAPI spec. " + 'Format: {"fieldsets": [{"title": "Section", "fields": [{...}]}]}' + ), null=True, verbose_name="Form Configuration", ), diff --git a/src/servala/frontend/templates/account/login.html b/src/servala/frontend/templates/account/login.html index f4ca590..906a9fa 100644 --- a/src/servala/frontend/templates/account/login.html +++ b/src/servala/frontend/templates/account/login.html @@ -31,7 +31,9 @@ {% for provider in socialaccount_providers %} {% provider_login_url provider process=process scope=scope auth_params=auth_params as href %} -
+ {% csrf_token %} {{ redirect_field }} {% endif %} -
+
{% if form and form.context %}{{ form.context }}{% endif %} {% if form and form.get_fieldsets|length == 1 %} {# Single fieldset - render without tabs #} @@ -41,8 +42,7 @@