diff --git a/src/servala/core/admin.py b/src/servala/core/admin.py index 0b1b980..149635c 100644 --- a/src/servala/core/admin.py +++ b/src/servala/core/admin.py @@ -191,15 +191,6 @@ class ControlPlaneAdmin(admin.ModelAdmin): ), }, ), - ( - _("User Information"), - { - "fields": ("user_info",), - "description": _( - "Key-value information displayed to users when selecting this control plane." - ), - }, - ), ) def get_exclude(self, request, obj=None): diff --git a/src/servala/core/forms.py b/src/servala/core/forms.py index baa85fb..1fece41 100644 --- a/src/servala/core/forms.py +++ b/src/servala/core/forms.py @@ -1,20 +1,8 @@ from django import forms from django.utils.translation import gettext_lazy as _ -from django_jsonform.widgets import JSONFormWidget from servala.core.models import ControlPlane, ServiceDefinition -CONTROL_PLANE_USER_INFO_SCHEMA = { - "type": "object", - "properties": { - "CNAME Record": { - "title": "CNAME Record", - "type": "string", - }, - }, - "additionalProperties": {"type": "string"}, -} - class ControlPlaneAdminForm(forms.ModelForm): certificate_authority_data = forms.CharField( @@ -35,7 +23,6 @@ class ControlPlaneAdminForm(forms.ModelForm): class Meta: model = ControlPlane fields = "__all__" - widgets = {"user_info": JSONFormWidget(schema=CONTROL_PLANE_USER_INFO_SCHEMA)} def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/src/servala/core/migrations/0007_controlplane_user_info_and_more.py b/src/servala/core/migrations/0007_controlplane_user_info_and_more.py deleted file mode 100644 index 5dda2ed..0000000 --- a/src/servala/core/migrations/0007_controlplane_user_info_and_more.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 5.2.6 on 2025-09-08 07:14 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("core", "0006_remove_service_instance_soft_delete"), - ] - - operations = [ - migrations.AddField( - model_name="controlplane", - name="user_info", - field=models.JSONField( - blank=True, - help_text="Key-value information displayed to users when selecting this control plane", - null=True, - verbose_name="User Information", - ), - ), - migrations.AlterField( - model_name="cloudprovider", - name="external_links", - field=models.JSONField( - blank=True, - help_text='JSON array of link objects: {"url": "…", "title": "…"}. ', - null=True, - verbose_name="External links", - ), - ), - migrations.AlterField( - model_name="service", - name="external_links", - field=models.JSONField( - blank=True, - help_text='JSON array of link objects: {"url": "…", "title": "…", "featured": false}. Featured links will be shown on the service list page, all other links will only show on the service and offering detail pages.', - null=True, - verbose_name="External links", - ), - ), - ] diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index 3677cca..6944750 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -144,14 +144,6 @@ class ControlPlane(ServalaModelMixin, models.Model): related_name="control_planes", verbose_name=_("Cloud provider"), ) - user_info = models.JSONField( - null=True, - blank=True, - verbose_name=_("User Information"), - help_text=_( - "Key-value information displayed to users when selecting this control plane" - ), - ) class Meta: verbose_name = _("Control plane") diff --git a/src/servala/frontend/templates/frontend/organizations/service_instance_detail.html b/src/servala/frontend/templates/frontend/organizations/service_instance_detail.html index 337893a..a12efcf 100644 --- a/src/servala/frontend/templates/frontend/organizations/service_instance_detail.html +++ b/src/servala/frontend/templates/frontend/organizations/service_instance_detail.html @@ -58,8 +58,8 @@ -
- {% if instance.status_conditions %} + {% if instance.status_conditions %} +

{% translate "Status" %}

@@ -101,9 +101,8 @@
- {% endif %} - {% include "includes/control_plane_user_info.html" with control_plane=instance.context.control_plane %} -
+ + {% endif %} {% if instance.spec and spec_fieldsets %}
diff --git a/src/servala/frontend/templates/frontend/organizations/service_offering_detail.html b/src/servala/frontend/templates/frontend/organizations/service_offering_detail.html index 7f3863e..56dc7e2 100644 --- a/src/servala/frontend/templates/frontend/organizations/service_offering_detail.html +++ b/src/servala/frontend/templates/frontend/organizations/service_offering_detail.html @@ -7,11 +7,6 @@ {{ offering }} {% endblock page_title %} {% endblock html_title %} -{% partialdef control-plane-info %} -{% if selected_plane %} - {% include "includes/control_plane_user_info.html" with control_plane=selected_plane %} -{% endif %} -{% endpartialdef %} {% partialdef service-form %} {% if service_form %}
@@ -30,69 +25,57 @@ {% endpartialdef %} {% block content %}
-
-
-
-
- {% if service.logo %} - {{ service.name }} - {% endif %} -
-

{{ offering }}

- {{ offering.service.category }} +
+
+ {% if service.logo %} + {{ service.name }} + {% endif %} +
+

{{ offering }}

+ {{ offering.service.category }} +
+
+
+ {% if offering.description %} +
+
+

{{ offering.description|urlize }}

-
- {% if offering.description %} -
-
-

{{ offering.description|urlize }}

-
+ {% endif %} + {% if not has_control_planes %} +

{% translate "We currently cannot offer this service, sorry!" %}

+ {% else %} +
+ {{ select_form }} +
+ {% endif %} + {% if service.external_links %} +
+
+
{% translate "External Links" %}
+
+ {% for link in service.external_links %} + + {{ link.title }} + + + {% endfor %}
- {% endif %} - {% if not has_control_planes %} -

{% translate "We currently cannot offer this service, sorry!" %}

- {% else %} -
- {{ select_form }} -
- {% endif %} - {% if service.external_links %} -
-
-
{% translate "External Links" %}
-
- {% for link in service.external_links %} - - {{ link.title }} - - - {% endfor %} -
-
-
- {% endif %} +
-
-
{% partial service-form %}
-
-
- {% if has_control_planes %} -
{% partial control-plane-info %}
{% endif %}
+
{% partial service-form %}
{% endblock content %} diff --git a/src/servala/frontend/templates/includes/control_plane_user_info.html b/src/servala/frontend/templates/includes/control_plane_user_info.html deleted file mode 100644 index b9ffe99..0000000 --- a/src/servala/frontend/templates/includes/control_plane_user_info.html +++ /dev/null @@ -1,26 +0,0 @@ -{% load i18n %} -{% comment %} -Reusable snippet for displaying ControlPlane user_info -Usage: {% include "includes/control_plane_user_info.html" with control_plane=control_plane_object %} -{% endcomment %} -{% if control_plane.user_info %} -
-
-

{% translate "Service Provider Zone Information" %}

-
-
-
- - - {% for key, value in control_plane.user_info.items %} - - - - - {% endfor %} - -
{{ key }}{{ value }}
-
-
-
-{% endif %} diff --git a/src/servala/frontend/views/service.py b/src/servala/frontend/views/service.py index 7e3f162..201a510 100644 --- a/src/servala/frontend/views/service.py +++ b/src/servala/frontend/views/service.py @@ -73,7 +73,7 @@ class ServiceOfferingDetailView(OrganizationViewMixin, HtmxViewMixin, DetailView context_object_name = "offering" model = ServiceOffering permission_type = "view" - fragments = ("service-form", "control-plane-info") + fragments = ("service-form",) def has_permission(self): return self.has_organization_permission()