# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.contrib import admin
from adminsortable2.admin import SortableAdminMixin, SortableInlineAdminMixin
from .models import *
from django.utils.html import format_html

from solo.admin import SingletonModelAdmin

#импорт экспорт
from import_export import resources
from import_export.admin import ImportExportModelAdmin
from import_export.fields import Field

from django.shortcuts import render, HttpResponse
from .forms import *

#Редактирование новости
from django.shortcuts import redirect
import operator

# Функции фильтрации для массовой публикации/снятия с публикации новостей.
def all_post(modeladmin, reguest, queryset):
    for qs in queryset:
        print (qs.title)

def complete_post(modeladmin, reguest, queryset):
    queryset.update(active=True)
complete_post.short_description = 'Опубликовать новости'

def incomplete_post(modeladmin, reguest, queryset):
    queryset.update(active=False)
incomplete_post.short_description = 'Снять с публикации'

def duplicate_event(modeladmin, request, queryset):
    for object in queryset:
        object.id = None
        object.nomer_id = None
        object.slug = 1
        object.save()
        object.nomer_id = object.id
        object.slug = object.id
        object.save()

duplicate_event.short_description = "Сделать дубликат"

# ////////////////////////////////////////////


class AkciyaAdmin(SortableAdminMixin, admin.ModelAdmin):
    fieldsets = [
        ('Основные настройки',        {'fields': ['name_block', 'slug', 'image', ('alt' , 'title' ),  'text_block',  'active',  'template_name', ]}),
        ('Сео оптимизация', {'fields': ['title_us','description',]}),
    ]
    list_display = ['name_block', 'nomer_id', "image_img", "active",  "created_at",]
    list_display_links = ["name_block",]
    list_editable = ['active', ]
    list_filter = ["active","created_at",]
    search_fields = ["name_block"]
    list_per_page = 30

    #автозаполнение slug
    prepopulated_fields = {"slug": ("name_block",)}

    actions = [all_post, complete_post, incomplete_post, duplicate_event]


    class Meta:
        model = Akciya

# ////////////////////////////

class SliderAdmin(SortableAdminMixin, admin.ModelAdmin):
    fieldsets = [
        ('Основные настройки',        {'fields': ['name_block', 'image', 'active', ]}),
    ]
    list_display = ['name_block', 'nomer_id', "image", "active",  "created_at",]
    list_display_links = ["name_block", "image",]
    list_editable = ['active', ]
    list_filter = ["active","created_at",]
    search_fields = ["name_block"]
    list_per_page = 30
    actions = [all_post, complete_post, incomplete_post, duplicate_event]


    class Meta:
        model = Slider


# ////////////////////////////


# class GlavnayaAdmin(admin.ModelAdmin):
#     fieldsets = [
#         ('Основные настройки',        {'fields': ['name_block',  'opisanie', 'opisanie_detail', ]}),
#         ('Сео оптимизация', {'fields': ['title_us','description',]}),
#     ]
#     list_display = ["name_block",]
#     list_display_links = ["name_block",]
#     list_per_page = 30

#     class Meta:
#         model = Glavnaya



# ////////////////////////////


class ProstopagesAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Основные настройки',        {'fields': ['name_block',  'slug',   'image', ('alt' , 'title' ), 'text_block', 'template_name', 'active',]}),
        
        ('Параметры для страниц', {'fields': [ 'fotos', 'fotos2', 'fotos3', 'salonkrasoti', 'master', 'masterzarabotoy', 'uslugi',]}),


        ('Сео оптимизация', {'fields': ['title_us','description',]}),
    ]
    list_display = ["name_block", 'image_img', "active",'slug',"created_at",]
    list_display_links = ["name_block",]
    list_editable = ['active', 'slug', ]
    list_filter = ["active","created_at",]
    search_fields = ["name_block"]
    list_per_page = 30

    filter_horizontal = ('fotos', 'fotos2', 'fotos3',  'master', 'masterzarabotoy', 'salonkrasoti',) 

    #автозаполнение slug
    prepopulated_fields = {"slug": ("name_block",)}

    actions = [all_post, complete_post, incomplete_post, duplicate_event]


    class Meta:
        model = Prostopages





# ////////////////////////////

class PreimushestvaAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Основные настройки услуг',        {'fields': ['name_block',  'image_pr', 'text_block', 'active',]}),
    ]
    list_display = ["name_block", 'active',]
    list_display_links = ["name_block",]
    list_editable = ['active', ]
    search_fields = ["name_block"]
    list_per_page = 30

    actions = [all_post, complete_post, incomplete_post, duplicate_event]

    class Meta:
        model = Preimushestva

# ////////////////////////////

class PagesAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Базовые настройки', {'fields': [ 'name_block',  'slug', 'razdel', 'image', 'alt' , 'title','title_us','description','template_name', 'active',]}),
        
        ('Новый дизайн', {'fields': ['pagesnew_h2_1','pagesnew_h2_2','pagesnew_h2_3','text_block6','text_block7',
        'text_block8','gallary6','tovar_magazin','poxozhie_uslugi','preimushestva','masters','otziv_master',]}),
        
        ('старый дизайн', {'fields': ['text_block', 'gallary1','text_block2', 'gallary2',
            'text_block3', 'gallary3','text_block4', 'gallary4','text_block5', 'gallary5',]}),
        
        ('Работа с прайсами', {'fields': [ 'price_kos', 'price_nog',  'price_par', 'price_kol','knopka',]}),
        
    ]
    list_display = ["name_block", 'image_img', 'razdel', "active",'slug',"created_at",]
    list_display_links = ["name_block",]
    list_editable = ['active', 'slug',  ]
    list_filter = ["active", 'razdel', "created_at",]
    search_fields = ["name_block"]
    list_per_page = 30

    filter_horizontal = ('price_kos', 'price_nog',  'price_par', 'price_kol', 'gallary1', 'gallary2', 'gallary3', 'gallary4', 'gallary5',
     'poxozhie_uslugi',
     'tovar_magazin',
     'preimushestva',
     'masters',
     'otziv_master',
     'gallary6',
     ) 
    #автозаполнение slug
    prepopulated_fields = {"slug": ("name_block",)}

    actions = [all_post, complete_post, incomplete_post, duplicate_event]


    class Meta:
        model = Pages

# ////////////////////////////


class OtzivResource(resources.ModelResource):


    #nomer_id = Field(attribute=id_field2, column_name='nomer_id')


    #nomer_id = Field(attribute='1', column_name='nomer_id')
    #name_block = Field(attribute="name", column_name='name_block')
    #created_at = Field(attribute="2019-04-29 00:29:37.093538+00", column_name='created_at')
    #updated_at = Field(attribute="2019-04-29 00:29:37.093538+00", column_name='updated_at') 
    #template_name = Field(attribute="''", column_name='template_name')

    class Meta:
        model = Otziv
        # skip_unchanged = True
        # report_skipped = True
        #exclude = ('created_at', 'updated_at',  )
        
        fields = ( 'id', 'name_block', 'image', 'text_block', 'name_aftor', 'master',  'data', 'nomer_id','active','created_at', 'updated_at', 'template_name', )

        def get_queryset(self):
            return self._meta.model.objects.order_by('-data') 

        #import_id_fields = (  'text_block', 'name_aftor','active', 'image',  'master',  'data',)




class OtzivAdmin(ImportExportModelAdmin):
    fieldsets = [
        ('Основные настройки',        {'fields': ['name_block', 'data', 'image',  'master',  'text_block', 'name_aftor', 'active',]}),
    ]
    list_display = ["name_block", 'nomer_id', 'image', 'data',  "active", ]
    list_display_links = ["name_block",]
    list_editable = ['data','active', ]
    list_filter = ['image', "active","created_at",]
    search_fields = ["name_block"]
    list_per_page = 30
    actions = [all_post, complete_post, incomplete_post, duplicate_event]

    resource_class = OtzivResource

    # #автозаполнение slug
    # prepopulated_fields = {"slug": ("name_block",)}

    # actions = [all_post, complete_post, incomplete_post]


    class Meta:
        model = Otziv


# ////////////////////////////

class MastersAdmin(SortableAdminMixin, admin.ModelAdmin):
    fieldsets = [
        ('Основные настройки',        {'fields': ['name_block',  'slug',  'image', 'text_block', 'text_block2',
        'text_block3', 'text_block4', 'text_block5',  'image_diplom', 'image_rabots', 'template_name',  'active',]}),
        ('Сео оптимизация', {'fields': ['title_us','description',]}),
    ]
    list_display = ["name_block", 'nomer_id', 'image_img',  "active",'slug',"created_at",]
    list_display_links = ["name_block",]
    list_editable = ['active', 'slug',]
    list_filter = ["active","created_at",]
    search_fields = ["name_block"]
    list_per_page = 30

    filter_horizontal = ('image_diplom','image_rabots',)
    #автозаполнение slug
    prepopulated_fields = {"slug": ("name_block",)}

    actions = [all_post, complete_post, incomplete_post, duplicate_event]


    class Meta:
        model = Masters




# ////////////////////////////

class Fotos_preimushestvaAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Основные настройки',        {'fields': ['name_block', 'image', 'alt',  'title',  'active', ]}),
    ]
    list_display = ['name_block', "image_img", 'alt',  'title',  "active", "created_at",]
    list_display_links = ["name_block",]
    list_editable = ['active', ]
    list_filter = ["active", "created_at",]
    search_fields = ["name_block"]
    list_per_page = 30
    actions = [all_post, complete_post, incomplete_post, duplicate_event]

    class Meta:
        model = Fotos_preimushestva




# ////////////////////////////

class FotosAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Основные настройки',        {'fields': ['name_block', 'image', 'alt',  'title', 'razdel', 'active', ]}),
    ]
    list_display = ['name_block', "image_img", 'alt',  'title', 'razdel', "active", "created_at",]
    list_display_links = ["name_block",]
    list_editable = ['active', 'razdel',]
    list_filter = ["active", 'razdel', "created_at",]
    search_fields = ["name_block"]
    list_per_page = 30
    actions = [all_post, complete_post, incomplete_post, duplicate_event]

    class Meta:
        model = Fotos


# ////////////////////////////

class BlogAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Основные настройки',        {'fields': ['name_block',  'slug', 'image_url', 'image', ('alt' , 'title' ), 'opisanie_small',
        'opisanie_full',  'active',  'template_name', ]}),
        ('Сео оптимизация', {'fields': ['title_us','description',]}),
    ]
    list_display = [ "name_block", 'image_img', 'image_url',  "active",]
    list_display_links = ["name_block",]
    list_editable = ['active',]
    list_filter = ["active","created_at",]
    search_fields = ["name_block"]
    list_per_page = 30

    #автозаполнение slug
    prepopulated_fields = {"slug": ("name_block",)}
    actions = [all_post, complete_post, incomplete_post, duplicate_event]


    class Meta:
        model = Blog

# ////////////////////////////

class BlogzalivkaAdmin(admin.ModelAdmin):

    def changelist_view(self, request, extra_context=None):
        response = super(BlogzalivkaAdmin, self).changelist_view(request, extra_context)


        if request.method=='POST' and 'blog_zalivka' in request.POST:
            forms= [
                BlogForm(dict(
                    name_block = nm,
                    slug = sl,
                    opisanie_small = os,
                    opisanie_full = of,
                    image_url = iu,
                    active = ac,
                    title_us = tu,
                    description = dn
                 ))
                for nm,sl,os,of,iu,ac,tu,dn in zip(
                    request.POST.getlist("name_block"),
                    request.POST.getlist("slug"),
                    request.POST.getlist("opisanie_small"),
                    request.POST.getlist("opisanie_full"),
                    request.POST.getlist("image_url"),
                    request.POST.getlist("active"),
                    request.POST.getlist("title_us"),
                    request.POST.getlist("description"),
                )
            ]
            if all(forms[i].is_valid() for i in range(len(forms))):
                print("1")
                forms.reverse()
                print("2")
                for form in forms:
                    print("3")
                    form.save()
                    print("4")
                    #return redirect('/svg_admin/prostopages/blogzalivka/')

            else:
                return HttpResponse("Нужно изменить url !")
            return redirect('/svg_admin/prostopages/blogzalivka/')
        else:
            forms = [BlogForm() for _ in range(1)]


        extra_context = {
             'forms': forms,
        }

        response.context_data.update(extra_context)

        return response


    class Meta:
        model = Blogzalivka

# ////////////////////////////

admin.site.register(Akciya, AkciyaAdmin, )
admin.site.register(Slider, SliderAdmin, )
admin.site.register(Pages, PagesAdmin, )
admin.site.register(Prostopages, ProstopagesAdmin, )
admin.site.register(Glavnaya, SingletonModelAdmin)
admin.site.register(Masters, MastersAdmin, )
admin.site.register(Fotos, FotosAdmin, )
admin.site.register(Fotos_preimushestva, Fotos_preimushestvaAdmin, )
admin.site.register(Preimushestva, PreimushestvaAdmin, )
admin.site.register(Blog, BlogAdmin, )
admin.site.register(Blogzalivka, BlogzalivkaAdmin)
admin.site.register(Otziv, OtzivAdmin, )


# There is only one item in the table, you can get it this way:
from .models import Glavnaya
config = Glavnaya.objects.get()

# get_solo will create the item if it does not already exist
config = Glavnaya.get_solo()