Skip to content
Snippets Groups Projects
Select Git revision
  • 3cd776a7e1e218930ebfedfe8c872e0624292ceb
  • test default
  • master protected
3 results

admin.py

Blame
  • admin.py 2.27 KiB
    from django.contrib import admin
    from markdownx.admin import MarkdownxModelAdmin
    
    from .forms import LectureGroupTypeFormset
    from .models import (
        Lecture,
        LectureCategory,
        LectureGroup,
        LectureGroupType,
        LectureLector,
        LectureMaterial,
        LectureRecording,
    )
    
    # Register your models here.
    
    
    class IndexHiddenModelAdmin(MarkdownxModelAdmin):
        def has_module_permission(self, request):
            return False
    
    
    class LectureGroupAdmin(MarkdownxModelAdmin):
        autocomplete_fields = ("user_groups",)
        search_fields = ("name",)
    
        list_display = ("name", "priority")
    
    
    class LectureRecordingInline(admin.StackedInline):
        model = LectureRecording
        extra = 1
    
    
    class LectureMaterialInline(admin.StackedInline):
        model = LectureMaterial
        extra = 1
    
    
    class LectureGroupTypeInline(admin.StackedInline):
        model = LectureGroupType
        autocomplete_fields = ("group",)
        formset = LectureGroupTypeFormset
        extra = 1
    
    
    class LectureAdmin(MarkdownxModelAdmin):
        inlines = (
            LectureGroupTypeInline,
            LectureRecordingInline,
            LectureMaterialInline,
        )
    
        autocomplete_fields = ("lectors", "rsvp_users", "category")
        search_fields = ("name", "description")
        readonly_fields = ("rsvp_users",)
    
        list_display = (
            "name",
            "timestamp",
            "display_lecture_group_types",
        )
    
        @admin.display(description="Výukové skupiny")
        def display_lecture_group_types(self, obj) -> str:
            group_names = []
    
            for lecture_group_type in obj.lecture_group_types.all():
                group_names.append(str(lecture_group_type.group))
    
            display_string = ", ".join(group_names)
    
            if len(display_string) > 64:
                display_string = display_string[:64] + "..."
    
            return display_string
    
    
    class LectureCategoryAdmin(MarkdownxModelAdmin):
        search_fields = ("name",)
    
    
    class LectureLectorAdmin(MarkdownxModelAdmin):
        search_fields = ("name", "username")
    
    
    for model in (
        LectureMaterial,
        LectureRecording,
        LectureGroupType,
    ):
        admin.site.register(model, IndexHiddenModelAdmin)
    
    admin.site.register(LectureLector, LectureLectorAdmin)
    admin.site.register(LectureCategory, LectureCategoryAdmin)
    admin.site.register(Lecture, LectureAdmin)
    admin.site.register(LectureGroup, LectureGroupAdmin)