fix: show product in replacement of sub products in homepage

This commit is contained in:
mohamad
2026-05-26 17:38:53 +03:30
parent cacf1ba77b
commit 52516d5a5a
17 changed files with 402 additions and 205 deletions
+4 -3
View File
@@ -76,16 +76,17 @@ class SubProductInline(admin.StackedInline):
@admin.register(MainProduct)
class MainProductAdmin(admin.ModelAdmin):
list_display = ("name", "order", "is_active", "created_at")
list_filter = ("is_active",)
list_display = ("name", "show_on_homepage", "homepage_order", "order", "is_active", "created_at")
list_filter = ("is_active", "show_on_homepage")
search_fields = ("name", "description")
prepopulated_fields = {"slug": ("name",)}
list_editable = ("order", "is_active")
list_editable = ("order", "is_active", "show_on_homepage", "homepage_order")
inlines = [MainProductArticleInline, MainProductVersionInline, SubProductInline]
fieldsets = (
(None, {"fields": ("name", "slug", "short_description", "distribution")}),
("Description", {"fields": ("description_format", "description")}),
("Media", {"fields": ("image",)}),
("Homepage", {"fields": ("show_on_homepage", "homepage_order")}),
("Settings", {"fields": ("order", "is_active")}),
)
@@ -0,0 +1,23 @@
# Generated by Django 5.0.2 on 2026-05-26 12:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0010_release_version_main_product'),
]
operations = [
migrations.AddField(
model_name='mainproduct',
name='homepage_order',
field=models.PositiveIntegerField(default=0, help_text='Order within the homepage Products section.'),
),
migrations.AddField(
model_name='mainproduct',
name='show_on_homepage',
field=models.BooleanField(default=False, help_text='Display this product in the homepage Products section.'),
),
]
@@ -0,0 +1,26 @@
from django.db import migrations
def copy_subproduct_homepage_flags(apps, schema_editor):
SubProduct = apps.get_model("products", "SubProduct")
for sub in (
SubProduct.objects.filter(show_on_homepage=True)
.select_related("main_product")
.order_by("homepage_order", "order")
):
main = sub.main_product
if not main.show_on_homepage:
main.show_on_homepage = True
main.homepage_order = sub.homepage_order
main.save(update_fields=["show_on_homepage", "homepage_order"])
class Migration(migrations.Migration):
dependencies = [
("products", "0011_mainproduct_homepage_order_and_more"),
]
operations = [
migrations.RunPython(copy_subproduct_homepage_flags, migrations.RunPython.noop),
]
+2
View File
@@ -38,6 +38,8 @@ class MainProduct(models.Model):
)
order = models.PositiveIntegerField(default=0)
is_active = models.BooleanField(default=True)
show_on_homepage = models.BooleanField(default=False, help_text="Display this product in the homepage Products section.")
homepage_order = models.PositiveIntegerField(default=0, help_text="Order within the homepage Products section.")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)