Ilo/apps/courses/admin.py
2026-05-02 20:01:30 +03:30

63 lines
1.7 KiB
Python

from django.contrib import admin
from modeltranslation.admin import TabbedTranslationAdmin
from .models import Category, Course, CourseFAQ, CourseHighlight, Lesson, Section
@admin.register(Category)
class CategoryAdmin(TabbedTranslationAdmin):
list_display = ("name", "slug", "order")
search_fields = ("name", "slug")
ordering = ("order", "slug")
class CourseHighlightInline(admin.TabularInline):
model = CourseHighlight
extra = 0
class CourseFAQInline(admin.TabularInline):
model = CourseFAQ
extra = 0
class SectionInline(admin.TabularInline):
model = Section
extra = 0
fields = ("title", "order")
show_change_link = True
@admin.register(Course)
class CourseAdmin(TabbedTranslationAdmin):
list_display = ("title", "instructor", "category", "level", "status", "created_at")
list_filter = ("status", "level", "category")
search_fields = ("title", "slug")
raw_id_fields = ("instructor",)
readonly_fields = ("created_at", "updated_at", "published_at")
prepopulated_fields = {}
inlines = [CourseHighlightInline, CourseFAQInline, SectionInline]
class LessonInline(admin.TabularInline):
model = Lesson
extra = 0
fields = ("title", "kind", "order", "is_preview", "status")
show_change_link = True
@admin.register(Section)
class SectionAdmin(TabbedTranslationAdmin):
list_display = ("title", "course", "order")
list_filter = ("course",)
raw_id_fields = ("course",)
inlines = [LessonInline]
@admin.register(Lesson)
class LessonAdmin(TabbedTranslationAdmin):
list_display = ("title", "section", "kind", "status", "is_preview", "order")
list_filter = ("kind", "status", "is_preview")
search_fields = ("title",)
raw_id_fields = ("section",)