from django.contrib import admin

from home.models import Tag, Choice, Post, Blueprint, ActiveCode, PostImage, Function, Comment, ItemIn, ItemOut, Record, \
    Verify, Version, Assets


# Register your models here.
class BluePrintAdmin(admin.ModelAdmin):
    list_display = ["post", "name", "downloads"]
    search_fields = ["post__title", "name", "notes"]


class BluePrintInline(admin.StackedInline):
    model = Blueprint
    fields = ('name', 'notes', 'downloads', 'file', 'warn')
    extra = 0


class PostImageInline(admin.StackedInline):
    model = PostImage
    extra = 0


class ItemInInline(admin.StackedInline):
    model = ItemIn
    extra = 0


class ItemOutInline(admin.StackedInline):
    model = ItemOut
    extra = 0


class PostAdmin(admin.ModelAdmin):
    inlines = [ItemInInline, ItemOutInline, BluePrintInline, PostImageInline]
    list_display = ["title", "author", "create_time", "sender", "posted", "removed"]
    list_filter = ["working_behavior", "space_behavior", "design", "posted", "removed"]
    search_fields = ["title", "author", "sender__username", "description", "function__name", "content"]


class TagAdmin(admin.ModelAdmin):
    list_display = ["type", "name", "sec_name"]
    list_filter = ["type"]
    search_fields = ["name", "sec_name"]


class ChoiceAdmin(admin.ModelAdmin):
    list_display = ["name", "type"]
    list_filter = ["type"]
    search_fields = ["name"]


class FunctionAdmin(admin.ModelAdmin):
    list_display = ["name", "parent"]
    search_fields = ['name']


class CommentAdmin(admin.ModelAdmin):
    list_display = ["user", "post", '__str__']
    search_fields = ['user__username', 'post__title', 'content']


class CodeAdmin(admin.ModelAdmin):
    list_display = ["code", "creator", 'user', "valid_time", "valid"]
    search_fields = ['code', 'creator__username', 'user__username']
    list_filter = ["valid"]


class RecordAdmin(admin.ModelAdmin):
    list_display = ["type", "user", 'comment', "time"]
    search_fields = ["type", "user__username", 'comment', "time"]
    list_filter = ["type"]


class VersionAdmin(admin.ModelAdmin):
    list_display = ['mc_ver', "create_ver", "loader"]
    search_fields = ['mc_ver__name', "create_ver__name", "loader__name"]


class VerifyAdmin(admin.ModelAdmin):
    list_display = ["post", '__str__']
    search_fields = ["post__title"]


class AssetsAdmin(admin.ModelAdmin):
    list_display = ['name']
    search_fields = ['name']


admin.site.register(Tag, TagAdmin)
admin.site.register(Choice, ChoiceAdmin)
admin.site.register(Function, FunctionAdmin)
admin.site.register(Post, PostAdmin)
admin.site.register(Blueprint, BluePrintAdmin)
admin.site.register(Comment, CommentAdmin)
admin.site.register(ActiveCode, CodeAdmin)
admin.site.register(Record, RecordAdmin)
admin.site.register(Version, VersionAdmin)
admin.site.register(Verify, VerifyAdmin)
admin.site.register(Assets, AssetsAdmin)
