This commit is contained in:
parent
4e44b283b1
commit
6e644dfe44
2 changed files with 42 additions and 1 deletions
|
@ -457,3 +457,12 @@ class ServiceInstance(ServalaModelMixin, models.Model):
|
||||||
class urls(urlman.Urls):
|
class urls(urlman.Urls):
|
||||||
base = "{self.organization.urls.instances}{self.name}/"
|
base = "{self.organization.urls.instances}{self.name}/"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def create_instance(cls, organization, context, created_by, spec_data):
|
||||||
|
name = spec_data.get("spec.name")
|
||||||
|
return cls.objects.create(
|
||||||
|
name=name,
|
||||||
|
organization=organization,
|
||||||
|
created_by=created_by,
|
||||||
|
context=context,
|
||||||
|
)
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
|
from django.contrib import messages
|
||||||
|
from django.shortcuts import redirect
|
||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
from django.views.generic import DetailView, ListView
|
from django.views.generic import DetailView, ListView
|
||||||
|
|
||||||
from servala.core.models import Service, ServiceOffering, ServiceOfferingControlPlane
|
from servala.core.models import (
|
||||||
|
Service,
|
||||||
|
ServiceInstance,
|
||||||
|
ServiceOffering,
|
||||||
|
ServiceOfferingControlPlane,
|
||||||
|
)
|
||||||
from servala.frontend.forms.service import ControlPlaneSelectForm, ServiceFilterForm
|
from servala.frontend.forms.service import ControlPlaneSelectForm, ServiceFilterForm
|
||||||
from servala.frontend.views.mixins import HtmxViewMixin, OrganizationViewMixin
|
from servala.frontend.views.mixins import HtmxViewMixin, OrganizationViewMixin
|
||||||
|
|
||||||
|
@ -107,3 +114,28 @@ class ServiceOfferingDetailView(OrganizationViewMixin, HtmxViewMixin, DetailView
|
||||||
context["selected_plane"] = self.selected_plane
|
context["selected_plane"] = self.selected_plane
|
||||||
context["service_form"] = self.get_instance_form()
|
context["service_form"] = self.get_instance_form()
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
self.object = self.get_object()
|
||||||
|
context = self.get_context_data(object=self.object)
|
||||||
|
|
||||||
|
if not self.context_object:
|
||||||
|
context["form_error"] = True
|
||||||
|
return self.render_to_response(context)
|
||||||
|
|
||||||
|
form = self.get_instance_form()
|
||||||
|
if form.is_valid():
|
||||||
|
try:
|
||||||
|
service_instance = ServiceInstance.create_instance(
|
||||||
|
organization=self.organization,
|
||||||
|
context=self.context_object,
|
||||||
|
created_by=request.user,
|
||||||
|
spec_data=form.get_nested_data(),
|
||||||
|
)
|
||||||
|
return redirect(service_instance.urls.base)
|
||||||
|
except Exception as e:
|
||||||
|
messages.error(self.request, str(e))
|
||||||
|
|
||||||
|
# If the form is not valid or if the service creation failed, we render it again
|
||||||
|
context["service_form"] = form
|
||||||
|
return self.render_to_response(context)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue