feat: add people sections and opt-in read more

This commit is contained in:
mohamad
2026-10-14 18:33:11 +03:30
parent 4bcb5f196d
commit 473637f477
33 changed files with 722 additions and 68 deletions
+14 -10
View File
@@ -9,14 +9,14 @@ from .models import Article, ArticleCitation, ArticleSection, MainProduct, Produ
class ArticleCitationInline(admin.TabularInline):
model = ArticleCitation
extra = 1
fields = ("text", "url", "order")
fields = ("text", "read_more_text", "url", "order")
ordering = ("order",)
class ArticleSectionInline(admin.TabularInline):
model = ArticleSection
extra = 1
fields = ("title", "value_format", "value", "order")
fields = ("title", "value_format", "value", "read_more_value", "order")
ordering = ("order",)
@@ -24,7 +24,7 @@ class SubProductArticleInline(admin.StackedInline):
model = Article
fk_name = "sub_product"
extra = 0
fields = ("badge", "title", "description", "order")
fields = ("badge", "title", "description", "read_more_description", "order")
ordering = ("order",)
show_change_link = True
@@ -33,7 +33,7 @@ class MainProductArticleInline(admin.StackedInline):
model = Article
fk_name = "main_product"
extra = 0
fields = ("badge", "title", "description", "order")
fields = ("badge", "title", "description", "read_more_description", "order")
ordering = ("order",)
show_change_link = True
@@ -47,6 +47,7 @@ class ProductVideoInline(admin.StackedInline):
"title",
"description_format",
"description",
"read_more_description",
"video_source",
"video_url",
"video_file",
@@ -63,7 +64,7 @@ class ProductVideoInline(admin.StackedInline):
class SubProductInline(admin.StackedInline):
model = SubProduct
extra = 0
fields = ("name", "slug", "short_description", "image", "logo", "show_on_homepage", "homepage_order", "order", "is_active")
fields = ("name", "slug", "short_description", "read_more_short_description", "image", "logo", "show_on_homepage", "homepage_order", "order", "is_active")
ordering = ("order",)
show_change_link = True
prepopulated_fields = {"slug": ("name",)}
@@ -85,10 +86,11 @@ class MainProductAdmin(admin.ModelAdmin):
"name",
"slug",
"short_description",
"read_more_short_description",
)
},
),
("Description", {"fields": ("description_format", "description")}),
("Description", {"fields": ("description_format", "description", "read_more_description")}),
("Media", {"fields": ("image",)}),
("Homepage", {"fields": ("show_on_homepage", "homepage_order")}),
("Settings", {"fields": ("order", "is_active")}),
@@ -104,6 +106,7 @@ class SubProductVideoInline(admin.StackedInline):
"title",
"description_format",
"description",
"read_more_description",
"video_source",
"video_url",
"video_file",
@@ -143,10 +146,11 @@ class SubProductAdmin(admin.ModelAdmin):
"name",
"slug",
"short_description",
"read_more_short_description",
)
},
),
("Description", {"fields": ("description_format", "description")}),
("Description", {"fields": ("description_format", "description", "read_more_description")}),
("Media", {"fields": ("image", "logo")}),
("Homepage", {"fields": ("show_on_homepage", "homepage_order")}),
("Settings", {"fields": ("order", "is_active")}),
@@ -163,7 +167,7 @@ class ArticleAdmin(admin.ModelAdmin):
inlines = [ArticleSectionInline, ArticleCitationInline]
fieldsets = (
(None, {"fields": ("main_product", "sub_product", "badge", "title")}),
("Description", {"fields": ("description_format", "description")}),
("Description", {"fields": ("description_format", "description", "read_more_description")}),
("Citation Badge", {"fields": ("citation_count_display", "citation_count_label"), "description": "Number and optional label for the dashed citation circle badge. Both are optional — a label without a number shows an empty circle with the label; neither hides the badge entirely."}),
("Settings", {"fields": ("order",)}),
)
@@ -186,7 +190,7 @@ class ProductVideoAdmin(admin.ModelAdmin):
raw_id_fields = ("main_product", "sub_product")
readonly_fields = ("video_preview",)
fieldsets = (
(None, {"fields": ("main_product", "sub_product", "badge", "title", "description_format", "description")}),
(None, {"fields": ("main_product", "sub_product", "badge", "title", "description_format", "description", "read_more_description")}),
VIDEO_ADMIN_FIELDSET,
("Settings", {"fields": ("order", "is_active")}),
)
@@ -212,6 +216,6 @@ class ArticleSectionAdmin(admin.ModelAdmin):
raw_id_fields = ("article",)
fieldsets = (
(None, {"fields": ("article", "title")}),
("Content", {"fields": ("value_format", "value")}),
("Content", {"fields": ("value_format", "value", "read_more_value")}),
("Settings", {"fields": ("order",)}),
)