from sets.admin import *
from .models import *
from django.contrib import admin
from django.utils.translation import gettext_lazy as _
# from nested_inline.admin import NestedStackedInline, NestedTabularInline, NestedModelAdmin, NestedInline
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin





class Admin_Inline_WidgetForBlock(SuperInlineModelAdmin, Admin_Trans_BaseIconStackedInline):
# class Admin_Inline_WidgetForBlock(Admin_Trans_BaseIconTabularInline, SuperInlineModelAdmin):

    def formfield_for_dbfield(self, db_field, request, **kwargs):
        field = super(Admin_Inline_WidgetForBlock, self).formfield_for_dbfield(db_field, request, **kwargs)
        return sets_for_formfield_for_dbfield(field, db_field)
        # return field

    model = WidgetForBlock
    extra = 0
    # fields = ['title', 'description', 'picture', 'bg_color', 'but_title', 'but_color', 'url']
    fieldsets = [
        (None, {
            'classes': [],
            'fields': [
                (
                    # 'title',
                    'name', 'description', 'text',
                    'picture'
                ),
                ('bg_color', ),
                ('but_title', 'but_color', 'but_icon'),
                ('url', 'order'),
            ]
        })
    ]



class Admin_StackedInline_Block(Admin_Trans_GenericBaseIconStackedInline, SuperInlineModelAdmin):
# class Admin_StackedInline_Block(Admin_Trans_GenericBaseIconStackedInline):

    def formfield_for_dbfield(self, db_field, request, **kwargs):
        field = super(Admin_StackedInline_Block, self).formfield_for_dbfield(db_field, request, **kwargs)
        return sets_for_formfield_for_dbfield(field, db_field)

    model = Block
    extra = 0
    fieldsets = [
        (None, {
            'classes': [],
            'fields': [
                ('block_type',
                 # 'title',
                 'name', 'description', 'picture'),
                ('bg_color', 'bg_image'),
                ('but_title', 'but_color', 'but_icon'),
                ('url',),
                ('child_in_row_count', 'order'),
            ]
        })
    ]

    inlines = [Admin_Inline_WidgetForBlock]





# class Admin_StaticPage(NestedModelAdmin, Admin_Trans_BaseModelViewPage):
class Admin_StaticPage(SuperModelAdmin, Admin_Trans_BaseModelViewPage):


    fieldsets = [
        (None, {
            'classes': ['wide'],
            'fields': ('name',
                       'url',
                       # 'title',
                       'description', 'text',
                       'picture',
                       'order',
                       )
        }),
        ('SEO', {
            'classes': ['wide', 'collapse'],
            'fields': (
                'seo_title', 'seo_description', 'seo_keywords', 'seo_text',
           )
        }),
    ]


    list_display = [
        'image_thumb',
        'id',
        'name', 'url',
        # 'title',
        'order', 'modifiedDT', 'createDT'
    ]

    list_display_links = ['id']
    list_editable = ['order']

    list_filter = ['modifiedDT', 'createDT']
    search_fields = ['name', 'title']
    # filter_horizontal = ['options']

    inlines = [Admin_StackedInline_Block]

    def has_delete_permission(self, request, obj=None):
        if request.user.is_superuser:
           return True

        if obj.url in ('main', 'spec_technics', 'works'):
            return False

admin.site.register(StaticPage,Admin_StaticPage)

class Admin_Block(Admin_Trans_BaseModelViewPage):



    inlines = [Admin_StackedInline_Block]

    def has_delete_permission(self, request, obj=None):
        if request.user.is_superuser:
           return True

        if obj.name in ('About US', 'machines', 'works'):
            return False

admin.site.register(Block,Admin_Block)

class Admin_Option(Admin_Trans_BaseModel):

    # def get_fieldsets(self, request, obj=None):
    #     fieldsets = super(type(self), self).get_fieldsets(request, obj)
    #     fieldsets.insert(
    #         1, ('Контент', {
    #             'classes': ['wide'],
    #             'fields': (
    #                 'opt_type', 'prefix', 'value', 'picture'
    #             )
    #
    #         })
    #     )
    #     return fieldsets
    fieldsets = [
        (_('Контент'), {
            'classes': ['wide'],
            'fields': (
                'name', 'opt_type', 'prefix', 'value', 'picture'
            )
        }),
    ]

    list_display = ['image_thumb', 'opt_type', 'name', 'prefix', 'value']
    list_editable = ['value', 'prefix']
    list_filter = ['opt_type']

admin.site.register(Option,Admin_Option)
