from django.contrib import admin
from .models import (
    Settings,
    Catalogs,
    Categories,
    Series,
    Products,
    ProductGallery,
    NewsAndPressReleases,
    NewsGallery,
    FeaturedProducts,
    NewArrivalProducts,
)
from django.utils.translation import gettext_lazy as _


# Register your models here.
class NewArrivalProductsAdmin(admin.ModelAdmin):
    search_fields = ["product__name"]
    list_display = ["product__name", "created_at"]
    ordering = ["created_at"]


admin.site.register(NewArrivalProducts, NewArrivalProductsAdmin)


class CatalogsAdmin(admin.ModelAdmin):
    search_fields = ["title"]
    list_display = ["title", "image_path", "link"]


admin.site.register(Catalogs, CatalogsAdmin)


class CategoriesAdmin(admin.ModelAdmin):
    search_fields = ["main_category_name", "sub_category_name"]
    list_filter = ["is_active"]
    list_display = ["id", "main_category_name", "sub_category_name"]


admin.site.register(Categories, CategoriesAdmin)


class SeriesAdmin(admin.ModelAdmin):
    search_fields = ["name"]
    list_filter = ["is_active"]
    list_display = ["id", "name", "is_active"]


admin.site.register(Series, SeriesAdmin)


class ProductCategoryFilter(admin.SimpleListFilter):  # pragma: no cover
    title = _("Main Category")
    parameter_name = "main_category_filter"

    def lookups(self, request, model_admin):
        return [
            ("Bedroom", _("Bedroom")),
            ("Living", _("Living")),
            ("Dining", _("Dining")),
        ]

    def queryset(self, request, queryset):
        if self.value():
            return queryset.filter(category__main_category_name__overlap=[self.value()])
        return queryset


class ProductsAdmin(admin.ModelAdmin):
    search_fields = [
        "name",
        "edp_number",
        "article_number",
        "description",
        "finish",
        "size",
    ]
    list_filter = [
        "is_new_arrival",
        "is_discounted",
        "sold_as_set",
        "series__name",
        ProductCategoryFilter,
        "category__sub_category_name",
        "is_coming_soon",
    ]

    list_display = (
        "id",
        "name",
        "edp_number",
        "category__main_category_name",
        "is_new_arrival",
    )


admin.site.register(Products, ProductsAdmin)


class ProductGalleryAdmin(admin.ModelAdmin):
    search_fields = ["product__name"]
    list_filter = ["is_shown"]


admin.site.register(ProductGallery, ProductGalleryAdmin)


class NewsAndPressReleaseAdmin(admin.ModelAdmin):
    search_fields = ["title", "short_description", "long_description"]
    list_filter = ["type"]


admin.site.register(NewsAndPressReleases, NewsAndPressReleaseAdmin)


class NewsGalleryAdmin(admin.ModelAdmin):
    search_fields = ["news__title"]


admin.site.register(NewsGallery, NewsGalleryAdmin)


class SettingsAdmin(admin.ModelAdmin):
    search_fields = ["name"]
    list_filter = ["type"]


admin.site.register(Settings, SettingsAdmin)

admin.site.register(FeaturedProducts)
