diff --git a/hub/services/admin.py b/hub/services/admin.py
index 3ba72d8..314f479 100644
--- a/hub/services/admin.py
+++ b/hub/services/admin.py
@@ -137,11 +137,19 @@ class ServiceOfferingAdmin(admin.ModelAdmin):
@admin.register(ConsultingPartner)
-class ConsultingPartnerAdmin(admin.ModelAdmin):
- list_display = ("name", "website", "logo_preview", "disable_listing", "is_featured")
+class ConsultingPartnerAdmin(SortableAdminMixin, admin.ModelAdmin):
+ list_display = (
+ "name",
+ "website",
+ "logo_preview",
+ "disable_listing",
+ "is_featured",
+ "order",
+ )
search_fields = ("name", "description")
prepopulated_fields = {"slug": ("name",)}
filter_horizontal = ("services", "cloud_providers")
+ ordering = ("order",)
def logo_preview(self, obj):
if obj.logo:
diff --git a/hub/services/migrations/0021_alter_consultingpartner_options_and_more.py b/hub/services/migrations/0021_alter_consultingpartner_options_and_more.py
new file mode 100644
index 0000000..339e4c7
--- /dev/null
+++ b/hub/services/migrations/0021_alter_consultingpartner_options_and_more.py
@@ -0,0 +1,22 @@
+# Generated by Django 5.1.5 on 2025-03-14 13:56
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("services", "0020_alter_cloudprovider_options_cloudprovider_order"),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name="consultingpartner",
+ options={"ordering": ["order"]},
+ ),
+ migrations.AddField(
+ model_name="consultingpartner",
+ name="order",
+ field=models.IntegerField(default=0),
+ ),
+ ]
diff --git a/hub/services/models.py b/hub/services/models.py
index b547d71..6e5568c 100644
--- a/hub/services/models.py
+++ b/hub/services/models.py
@@ -183,12 +183,16 @@ class ConsultingPartner(models.Model):
CloudProvider, related_name="consulting_partners", blank=True
)
+ order = models.IntegerField(default=0)
is_featured = models.BooleanField(default=False)
disable_listing = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
+ class Meta:
+ ordering = ["order"]
+
def __str__(self):
return self.name
diff --git a/hub/services/templates/400.html b/hub/services/templates/400.html
index 1de10f9..23a23ac 100644
--- a/hub/services/templates/400.html
+++ b/hub/services/templates/400.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load static %}
{% block title %}Bad Request (400){% endblock %}
diff --git a/hub/services/templates/404.html b/hub/services/templates/404.html
index 023e65d..e4828e2 100644
--- a/hub/services/templates/404.html
+++ b/hub/services/templates/404.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load static %}
{% block title %}Page Not Found (404){% endblock %}
diff --git a/hub/services/templates/500.html b/hub/services/templates/500.html
index c515220..7267e77 100644
--- a/hub/services/templates/500.html
+++ b/hub/services/templates/500.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load static %}
{% block title %}Server Error (500){% endblock %}
diff --git a/hub/services/templates/services/base.html b/hub/services/templates/base.html
similarity index 96%
rename from hub/services/templates/services/base.html
rename to hub/services/templates/base.html
index 851b93f..f12ed0e 100644
--- a/hub/services/templates/services/base.html
+++ b/hub/services/templates/base.html
@@ -24,6 +24,16 @@
@@ -94,10 +94,9 @@
-
Cloud-Agnostic & Vendor-Independent
+ Sovereign & Open
-
Deploy services on any cloud or on-premises, ensuring maximum
- flexibility.
+
Deploy services on any cloud or on-premises, ensuring maximum flexibility.
diff --git a/hub/services/templates/pages/homepage.html b/hub/services/templates/pages/homepage.html
index 8d68f96..cb83ae6 100644
--- a/hub/services/templates/pages/homepage.html
+++ b/hub/services/templates/pages/homepage.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load static %}
{% block title %}Open Cloud Native Services Hub{% endblock %}
diff --git a/hub/services/templates/services/contact_form.html b/hub/services/templates/services/contact_form.html
index afd89f9..172de2c 100644
--- a/hub/services/templates/services/contact_form.html
+++ b/hub/services/templates/services/contact_form.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load contact_tags %}
{% block title %}Contact Us{% endblock %}
diff --git a/hub/services/templates/services/lead_form.html b/hub/services/templates/services/lead_form.html
index 5739d06..dd41150 100644
--- a/hub/services/templates/services/lead_form.html
+++ b/hub/services/templates/services/lead_form.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load form_tags %}
{% block title %}Contact Us{% endblock %}
diff --git a/hub/services/templates/services/offering_detail.html b/hub/services/templates/services/offering_detail.html
index 391c99d..563fec3 100644
--- a/hub/services/templates/services/offering_detail.html
+++ b/hub/services/templates/services/offering_detail.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load static %}
{% block title %}{{ offering.service.name }} on {{ offering.cloud_provider.name }}{% endblock %}
diff --git a/hub/services/templates/services/offering_list.html b/hub/services/templates/services/offering_list.html
index 9192e9d..16a11fa 100644
--- a/hub/services/templates/services/offering_list.html
+++ b/hub/services/templates/services/offering_list.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% block title %}Service Offerings{% endblock %}
diff --git a/hub/services/templates/services/partner_detail.html b/hub/services/templates/services/partner_detail.html
index c673b12..9c80c23 100644
--- a/hub/services/templates/services/partner_detail.html
+++ b/hub/services/templates/services/partner_detail.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load contact_tags %}
{% block title %}Consulting Partner {{ partner.name }}{% endblock %}
diff --git a/hub/services/templates/services/partner_list.html b/hub/services/templates/services/partner_list.html
index ac6a1a4..0af7991 100644
--- a/hub/services/templates/services/partner_list.html
+++ b/hub/services/templates/services/partner_list.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load static %}
{% load contact_tags %}
@@ -120,6 +120,9 @@
+
diff --git a/hub/services/templates/services/provider_detail.html b/hub/services/templates/services/provider_detail.html
index 7292c4d..ae61b0b 100644
--- a/hub/services/templates/services/provider_detail.html
+++ b/hub/services/templates/services/provider_detail.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load contact_tags %}
{% block title %}Service Provider {{ provider.name }}{% endblock %}
diff --git a/hub/services/templates/services/provider_list.html b/hub/services/templates/services/provider_list.html
index e788dd0..aa9fd11 100644
--- a/hub/services/templates/services/provider_list.html
+++ b/hub/services/templates/services/provider_list.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load static %}
{% load contact_tags %}
@@ -103,6 +103,9 @@
+
diff --git a/hub/services/templates/services/service_detail.html b/hub/services/templates/services/service_detail.html
index 45607d3..88c039d 100644
--- a/hub/services/templates/services/service_detail.html
+++ b/hub/services/templates/services/service_detail.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% block title %}Service {{ service.name }}{% endblock %}
diff --git a/hub/services/templates/services/service_list.html b/hub/services/templates/services/service_list.html
index 4b11cc6..39fa7e9 100644
--- a/hub/services/templates/services/service_list.html
+++ b/hub/services/templates/services/service_list.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% load static %}
{% load contact_tags %}
diff --git a/hub/services/templates/services/thank_you.html b/hub/services/templates/services/thank_you.html
index 7ab96d4..b993332 100644
--- a/hub/services/templates/services/thank_you.html
+++ b/hub/services/templates/services/thank_you.html
@@ -1,4 +1,4 @@
-{% extends 'services/base.html' %}
+{% extends 'base.html' %}
{% block title %}Thanks{% endblock %}
diff --git a/hub/services/views/partners.py b/hub/services/views/partners.py
index becad07..4645c69 100644
--- a/hub/services/views/partners.py
+++ b/hub/services/views/partners.py
@@ -10,7 +10,7 @@ def partner_list(request):
cloud_provider_id = request.GET.get("cloud_provider", "")
# Start with all active partners
- partners = ConsultingPartner.objects.filter(disable_listing=False).order_by("name")
+ partners = ConsultingPartner.objects.filter(disable_listing=False).order_by("order")
# Apply filters based on request parameters
if search_query:
@@ -36,7 +36,7 @@ def partner_list(request):
).distinct()
available_cloud_providers = CloudProvider.objects.filter(
id__in=available_cloud_provider_ids, disable_listing=False
- ).order_by("name")
+ ).order_by("order")
# For the current selection, we need to make sure we include the selected items
# even if they don't match other filters
@@ -64,7 +64,7 @@ def partner_list(request):
"partners": partners.prefetch_related("services", "cloud_providers"),
"services": Service.objects.filter(disable_listing=False).order_by("name"),
"cloud_providers": CloudProvider.objects.filter(disable_listing=False).order_by(
- "name"
+ "order"
),
"available_services": available_services,
"available_cloud_providers": available_cloud_providers,