from django.contrib import admin
from .models import *

from import_export import resources, fields
from import_export.admin import ImportExportModelAdmin
from import_export.widgets import ForeignKeyWidget,ManyToManyWidget



class ProductResource(resources.ModelResource):
    category = fields.Field(
        column_name='category_id',
        attribute='category',
        widget=ForeignKeyWidget(Category, 'id')  # ID ile ilişkilendirdik
    )

    # sizes = fields.Field(column_name='sizes')
    sizes = fields.Field(
        attribute='sizes',
        column_name='sizes', # Excel'deki sütun adı
        widget=ManyToManyWidget(Size, separator=',', field='name') # Size modelini, ayıracın virgül olduğunu ve Size'daki 'name' alanına göre eşleştirme yapılacağını belirtir
    )

    def dehydrate_sizes(self, product):
         return ','.join([size.name for size in product.sizes.all()])

    # def import_field(self, field, obj, data, is_m2m=False, **kwargs):
    #     if field.attribute == 'sizes':
    #         size_names = data.get('sizes', '').split(',')
    #         sizes = Size.objects.filter(name__in=[s.strip() for s in size_names if s.strip()])
    #         obj.save()
    #         obj.sizes.set(sizes)
    #         return
    #     return super().import_field(field, obj, data, is_m2m=is_m2m, **kwargs)

    def import_field(self, field, obj, data, is_m2m=False, **kwargs):
        if field.attribute == 'sizes':
            
                                  
            # Burada gelen veri virgülle ayrılıyor ve boşluklar temizleniyor
            size_names = data.get('sizes', '').split(',')
            size_names = [s.strip() for s in size_names if s.strip()]  # Boşlukları temizle
            sizes = Size.objects.filter(name__in=size_names)  # Bedenleri veritabanından filtrele
            obj.sizes.set(sizes)  # Ürünle bedenleri ilişkilendir
            return
        return super().import_field(field, obj, data, is_m2m=is_m2m, **kwargs)



   
    
    class Meta:
        model = Product
        import_id_fields = ['product_number']
        fields = (
            'product_number',
            'name',
            'category',  # burası artık category_id üzerinden çalışacak
            'sizes',
            'description',
            'kombined',
            'price',
            'rating',
            'shopier_url',
            'is_active',
            'is_mainpage',
            'is_sale',
            'image_url',
            'created_date',
        )
        skip_unchanged = True
        report_skipped = True

#  Product Admin (M2M beden gösterimi dahil)
@admin.register(Product)
class ProductAdmin(ImportExportModelAdmin):
    resource_class = ProductResource
    list_display = ['name', 'price', 'is_active', 'is_mainpage', 'created_date', 'get_sizes']
    search_fields = ['name', 'product_number']
    list_filter = ['category', 'is_active', 'is_mainpage']

    def get_sizes(self, obj):
        return ", ".join([s.name for s in obj.sizes.all()])
    get_sizes.short_description = "Beden_Ölçüleri"


@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    list_display = ('name','id','is_active','is_mainpage','slug')
    list_filter = ('is_active',)

@admin.register(Size)
class SizeAdmin(admin.ModelAdmin):
    list_display = ('name',) 


# @admin.register(Product)
# class ProductAdmin(ImportExportModelAdmin):
#     resource_class = ProductResource
#     list_display = ['name', 'price', 'is_active', 'is_mainpage', 'created_date','get_sizes']
#     search_fields = ['name', 'product_number']
#     list_filter = ['category', 'is_active', 'is_mainpage']

# @admin.register(Product)
# class ProductAdmin(admin.ModelAdmin):
#     list_display = ('name','price', 'slug', 'rating', 'get_sizes',)

    # def get_sizes(self, obj):
    #     return ", ".join([s.name for s in obj.sizes.all()])
    # get_sizes.short_description = "Beden_Ölcüleri"

@admin.register(KampanyaSliders)
class KampanyaSlidersAdmin(admin.ModelAdmin):
    list_display = ('kampanya_title','kampanya_desciription',)

@admin.register(Slider)
class SliderAdmin(admin.ModelAdmin):
    list_display = ('title','image',)

@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    list_display = ("title","created_date","update_at","slug",)

@admin.register(About)
class AboutAdmin(admin.ModelAdmin):
    list_display = ("title","image",)



@admin.register(Setting)
class SettingAdmin(admin.ModelAdmin):
    list_display = ("phone_mobil","email",)


@admin.register(KvkkAydinlatma)
class KvkkAydinlatmaAdmin(admin.ModelAdmin):
    list_display = ("title",)


@admin.register(KullanimKosullari)
class KullanimKosullariAdmin(admin.ModelAdmin):
    list_display = ("title",)

@admin.register(GizlilikPolitikasi)
class GizlilikPolitikasiAdmin(admin.ModelAdmin):
    list_display = ("title",)

@admin.register(IadeveDegisiklikPolitikasi)
class IadeveDegisiklikPolitikasıAdmin(admin.ModelAdmin):
    list_display = ("title",)

@admin.register(BultenAbonelik)
class BultenAbonelikAdmin(admin.ModelAdmin):
    list_display = ("email",'created_date',)