from django.contrib import admin from django.contrib.contenttypes.admin import GenericTabularInline from . import models, forms class TagAdmin(admin.ModelAdmin): list_display = ['id', 'name'] search_fields = ['name'] class TagToObjectAdmin(admin.ModelAdmin): list_display = ['id', 'tag', 'object_id', 'content_type'] search_fields = ['tag__name', 'object_id', 'content_type__name'] autocomplete_fields = ['tag'] class TagInline(GenericTabularInline): model = models.TagToObject autocomplete_fields = ['tag'] extra = 0 verbose_name = 'Tag' classes = ['collapse'] class VideoAdmin(admin.ModelAdmin): form = forms.VideoForm fields = [ 'title', 'slug', 'status', 'description', 'local_file', 's3_file', 'thumbnail', 'duration', 'creator', 'closed_captions', 'categories', 'created', 'updated' ] list_display = ['id', 'title', 'slug', 'status', 'duration'] readonly_fields = ['s3_file', 'created', 'updated'] search_fields = ['title', 'slug'] list_filter = ('status',) inlines = [TagInline] def has_add_permission(self, request): return False def save_model(self, request, obj, form, change): obj.creator = request.user super().save_model(request, obj, form, change) class PlaylistVideoInline(admin.TabularInline): model = models.PlaylistVideo autocomplete_fields = ['video'] extra = 0 verbose_name = 'Video' verbose_name_plural = 'Video' fields = ('video',) class PlayListAdmin(admin.ModelAdmin): list_display = ['id', 'title', 'type'] readonly_fields = ['created', 'updated'] list_filter = ('type', 'sort') inlines = [TagInline, PlaylistVideoInline] def get_inlines(self, request, obj): if obj and obj.type == models.DYNAMIC: return [TagInline, PlaylistVideoInline] return [PlaylistVideoInline] class CategoryAdmin(admin.ModelAdmin): list_display = ['id', 'name', ] admin.site.register(models.Video, VideoAdmin) admin.site.register(models.Playlist, PlayListAdmin) admin.site.register(models.Category, CategoryAdmin) admin.site.register(models.Tag, TagAdmin) admin.site.register(models.TagToObject, TagToObjectAdmin)