allow manual ordering of consulting partner

This commit is contained in:
Tobias Brunner 2025-03-14 14:57:34 +01:00
parent e82f563ca3
commit 1daa288cdd
No known key found for this signature in database
4 changed files with 39 additions and 5 deletions

View file

@ -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:

View file

@ -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),
),
]

View file

@ -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

View file

@ -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,