Improve error on viewing remotely-deleted instance

This commit is contained in:
Tobias Kunze 2025-05-20 22:25:09 +02:00
parent 857105b01f
commit 51bcd620e1
3 changed files with 17 additions and 1 deletions

View file

@ -50,6 +50,11 @@ urlpatterns = [
views.ServiceInstanceDetailView.as_view(),
name="organization.instance",
),
path(
"instances/<slug:slug>/update/",
views.ServiceInstanceUpdateView.as_view(),
name="organization.instance.update",
),
]
),
),

View file

@ -9,6 +9,7 @@ from .service import (
ServiceDetailView,
ServiceInstanceDetailView,
ServiceInstanceListView,
ServiceInstanceUpdateView,
ServiceListView,
ServiceOfferingDetailView,
)
@ -22,6 +23,7 @@ __all__ = [
"ServiceDetailView",
"ServiceInstanceDetailView",
"ServiceInstanceListView",
"ServiceInstanceUpdateView",
"ServiceListView",
"ServiceOfferingDetailView",
"ProfileView",

View file

@ -2,6 +2,7 @@ from django.contrib import messages
from django.core.exceptions import ValidationError
from django.shortcuts import redirect
from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
from django.views.generic import DetailView, ListView
from servala.core.crd import deslugify
@ -105,6 +106,8 @@ class ServiceOfferingDetailView(OrganizationViewMixin, HtmxViewMixin, DetailView
).first()
def get_instance_form(self):
if not self.context_object:
return None
return self.context_object.model_form_class(
data=self.request.POST if self.request.method == "POST" else None,
initial={
@ -130,6 +133,10 @@ class ServiceOfferingDetailView(OrganizationViewMixin, HtmxViewMixin, DetailView
return self.render_to_response(context)
form = self.get_instance_form()
if not form: # Should not happen if context_object is valid, but as a safeguard
messages.error(self.request, _("Could not initialize service form."))
return self.render_to_response(context)
if form.is_valid():
try:
service_instance = ServiceInstance.create_instance(
@ -143,7 +150,9 @@ class ServiceOfferingDetailView(OrganizationViewMixin, HtmxViewMixin, DetailView
except ValidationError as e:
messages.error(self.request, e.message or str(e))
except Exception as e:
messages.error(self.request, str(e))
messages.error(
self.request, _("Error creating instance: {}").format(str(e))
)
# If the form is not valid or if the service creation failed, we render it again
context["service_form"] = form