From d9469938ecbeb25a8a9f82c432583e935a2c17eb Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Sun, 16 Mar 2025 08:37:03 +0100 Subject: [PATCH] Data model: Use correct link between plan and offering --- src/servala/core/models/service.py | 32 ++++++++---------------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index 980e717..b2e89f5 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -86,30 +86,20 @@ class Plan(models.Model): # TODO schema pricing = models.JSONField(verbose_name=_("Pricing")) term = models.DurationField(verbose_name=_("Term")) + service_offering = models.ForeignKey( + to="ServiceOffering", + on_delete=models.PROTECT, + related_name="plans", + verbose_name=_("Service offering"), + ) def __str__(self): return self.name -class ServiceOfferingPlan(models.Model): - offering = models.ForeignKey( - to="ServiceOffering", - on_delete=models.CASCADE, - related_name="offering_plans", - verbose_name=_("Offering"), - ) - plan = models.ForeignKey( - to="Plan", - on_delete=models.CASCADE, - related_name="offering_plans", - verbose_name=_("Plan"), - ) - pricing = models.JSONField(verbose_name=_("Pricing")) - - class ServiceOffering(models.Model): description = models.TextField(blank=True, verbose_name=_("Description")) - services = models.ManyToManyField( + service = models.ForeignKey( to="Service", related_name="offerings", verbose_name=_("Services"), @@ -119,15 +109,9 @@ class ServiceOffering(models.Model): related_name="offerings", verbose_name=_("Providers"), ) - control_plane = models.ForeignKey( + control_plane = models.ManyToManyField( to="ControlPlane", on_delete=models.PROTECT, related_name="offerings", verbose_name=_("Control plane"), ) - plans = models.ManyToManyField( - to="Plan", - through="ServiceOfferingPlan", - related_name="offerings", - verbose_name=_("Plans"), - )