allow manual ordering of consulting partner
This commit is contained in:
parent
e82f563ca3
commit
1daa288cdd
4 changed files with 39 additions and 5 deletions
|
@ -137,11 +137,19 @@ class ServiceOfferingAdmin(admin.ModelAdmin):
|
||||||
|
|
||||||
|
|
||||||
@admin.register(ConsultingPartner)
|
@admin.register(ConsultingPartner)
|
||||||
class ConsultingPartnerAdmin(admin.ModelAdmin):
|
class ConsultingPartnerAdmin(SortableAdminMixin, admin.ModelAdmin):
|
||||||
list_display = ("name", "website", "logo_preview", "disable_listing", "is_featured")
|
list_display = (
|
||||||
|
"name",
|
||||||
|
"website",
|
||||||
|
"logo_preview",
|
||||||
|
"disable_listing",
|
||||||
|
"is_featured",
|
||||||
|
"order",
|
||||||
|
)
|
||||||
search_fields = ("name", "description")
|
search_fields = ("name", "description")
|
||||||
prepopulated_fields = {"slug": ("name",)}
|
prepopulated_fields = {"slug": ("name",)}
|
||||||
filter_horizontal = ("services", "cloud_providers")
|
filter_horizontal = ("services", "cloud_providers")
|
||||||
|
ordering = ("order",)
|
||||||
|
|
||||||
def logo_preview(self, obj):
|
def logo_preview(self, obj):
|
||||||
if obj.logo:
|
if obj.logo:
|
||||||
|
|
|
@ -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),
|
||||||
|
),
|
||||||
|
]
|
|
@ -183,12 +183,16 @@ class ConsultingPartner(models.Model):
|
||||||
CloudProvider, related_name="consulting_partners", blank=True
|
CloudProvider, related_name="consulting_partners", blank=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
order = models.IntegerField(default=0)
|
||||||
is_featured = models.BooleanField(default=False)
|
is_featured = models.BooleanField(default=False)
|
||||||
disable_listing = models.BooleanField(default=False)
|
disable_listing = models.BooleanField(default=False)
|
||||||
|
|
||||||
created_at = models.DateTimeField(auto_now_add=True)
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
updated_at = models.DateTimeField(auto_now=True)
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
ordering = ["order"]
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ def partner_list(request):
|
||||||
cloud_provider_id = request.GET.get("cloud_provider", "")
|
cloud_provider_id = request.GET.get("cloud_provider", "")
|
||||||
|
|
||||||
# Start with all active partners
|
# 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
|
# Apply filters based on request parameters
|
||||||
if search_query:
|
if search_query:
|
||||||
|
@ -36,7 +36,7 @@ def partner_list(request):
|
||||||
).distinct()
|
).distinct()
|
||||||
available_cloud_providers = CloudProvider.objects.filter(
|
available_cloud_providers = CloudProvider.objects.filter(
|
||||||
id__in=available_cloud_provider_ids, disable_listing=False
|
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
|
# For the current selection, we need to make sure we include the selected items
|
||||||
# even if they don't match other filters
|
# even if they don't match other filters
|
||||||
|
@ -64,7 +64,7 @@ def partner_list(request):
|
||||||
"partners": partners.prefetch_related("services", "cloud_providers"),
|
"partners": partners.prefetch_related("services", "cloud_providers"),
|
||||||
"services": Service.objects.filter(disable_listing=False).order_by("name"),
|
"services": Service.objects.filter(disable_listing=False).order_by("name"),
|
||||||
"cloud_providers": CloudProvider.objects.filter(disable_listing=False).order_by(
|
"cloud_providers": CloudProvider.objects.filter(disable_listing=False).order_by(
|
||||||
"name"
|
"order"
|
||||||
),
|
),
|
||||||
"available_services": available_services,
|
"available_services": available_services,
|
||||||
"available_cloud_providers": available_cloud_providers,
|
"available_cloud_providers": available_cloud_providers,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue