diff --git a/hub/services/admin.py b/hub/services/admin.py index 6b71007..574a65f 100644 --- a/hub/services/admin.py +++ b/hub/services/admin.py @@ -143,7 +143,7 @@ class PlanInline(admin.StackedInline): @admin.register(ServiceOffering) class ServiceOfferingAdmin(admin.ModelAdmin): - list_display = ("service", "cloud_provider") + list_display = ("service", "cloud_provider", "status") list_filter = ("service", "cloud_provider") search_fields = ("service__name", "cloud_provider__name", "description") inlines = [PlanInline] diff --git a/hub/services/migrations/0003_serviceoffering_status.py b/hub/services/migrations/0003_serviceoffering_status.py new file mode 100644 index 0000000..3326d58 --- /dev/null +++ b/hub/services/migrations/0003_serviceoffering_status.py @@ -0,0 +1,26 @@ +# Generated by Django 5.1.5 on 2025-01-31 15:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("services", "0002_lead_offering"), + ] + + operations = [ + migrations.AddField( + model_name="serviceoffering", + name="status", + field=models.CharField( + choices=[ + ("available", "Available"), + ("planned", "Planned"), + ("on_request", "On Request"), + ], + default="available", + max_length=20, + ), + ), + ] diff --git a/hub/services/models.py b/hub/services/models.py index c6131b9..09064b9 100644 --- a/hub/services/models.py +++ b/hub/services/models.py @@ -166,6 +166,15 @@ class ServiceOffering(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) + STATUS_CHOICES = [ + ("available", "Available"), + ("planned", "Planned"), + ("on_request", "On Request"), + ] + status = models.CharField( + max_length=20, choices=STATUS_CHOICES, default="available" + ) + class Meta: unique_together = ["service", "cloud_provider"] ordering = ["service__name", "cloud_provider__name"] diff --git a/hub/services/templates/services/offering_list.html b/hub/services/templates/services/offering_list.html index 34bb780..42340fb 100644 --- a/hub/services/templates/services/offering_list.html +++ b/hub/services/templates/services/offering_list.html @@ -107,15 +107,16 @@
View Details {% if offering.plans.exists %} + {% if offering.status == 'available' %} {% if offering.plans.count == 1 %} {% with plan=offering.plans.first %} Show Interest + class="btn btn-success">Order {% endwith %} {% else %} {% endif %} - {% else %} + {% elif offering.status == 'planned' %} Show Interest + {% else %} + Request Information {% endif %} + {% else %} + {% if offering.status == 'available' %} + Order + {% elif offering.status == 'planned' %} + Show Interest + {% else %} + Request Information + {% endif %} + {% endif %}
diff --git a/hub/services/templates/services/service_detail.html b/hub/services/templates/services/service_detail.html index 9adf4ec..bc9bf86 100644 --- a/hub/services/templates/services/service_detail.html +++ b/hub/services/templates/services/service_detail.html @@ -83,7 +83,15 @@ {% endif %} Show Interest + class="btn btn-success"> + {% if offering.status == 'available' %} + Order + {% elif offering.status == 'planned' %} + Show Interest + {% else %} + Request Information + {% endif %} + diff --git a/hub/services/templates/services/service_list.html b/hub/services/templates/services/service_list.html index 1d9641f..c093d4e 100644 --- a/hub/services/templates/services/service_list.html +++ b/hub/services/templates/services/service_list.html @@ -104,7 +104,7 @@ {% if service.offerings.exists %}