from django.contrib import admin
from .models import Product, ProductCategory, ProductBrand, PackagingOption
from django.utils.html import format_html
from django.urls import reverse
from django.shortcuts import redirect
from django.contrib import messages
from django import forms



@admin.action(description="Duplicate selected products")
def duplicate_product(modeladmin, request, queryset):
    for obj in queryset:
        obj.pk = None  # Reset primary key
        obj.slug = f"{obj.slug}-copy"  # Change slug to avoid conflicts
        obj.save()
    messages.success(request, "Selected products duplicated successfully.")

class ProductAdmin(admin.ModelAdmin):
    list_display = ("name", "category", "brand", "duplicate_link", 'nutritional_benefits')
    list_filter = ("category", "brand")
    search_fields = ("name", "brand__name", "category__name")
    actions = [duplicate_product]


    @admin.display(description="Duplicate")
    def duplicate_link(self, obj):
        url = reverse("admin:products_product_change", args=[obj.pk])  # Adjust your app name
        return format_html('<a href="{}" class="button">Duplicate</a>', url)

    duplicate_link.short_description = "Duplicate"



    class Meta:
        model = Product
        fields = "__all__"
        
        
class PackagingOptionInline(admin.TabularInline):
    model = PackagingOption
    extra = 1


admin.site.register(Product, ProductAdmin)
admin.site.register(ProductCategory)
admin.site.register(ProductBrand)
