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"), - )