from django.contrib import admin

from apps.accounts.permissions import accessible_company_ids
from .models import AuditLog


@admin.register(AuditLog)
class AuditLogAdmin(admin.ModelAdmin):
    list_display = ("created_at", "company", "user", "action", "module", "object_repr")
    list_filter = ("company", "module", "action")
    search_fields = ("object_repr", "object_id", "user__username")
    readonly_fields = [f.name for f in AuditLog._meta.fields]

    def get_queryset(self, request):
        qs = super().get_queryset(request).select_related("company", "user")
        if request.user.is_superuser:
            return qs
        ids = accessible_company_ids(request.user)
        return qs.filter(company_id__in=ids) if ids else qs.none()

    def has_add_permission(self, request):
        return False

    def has_change_permission(self, request, obj=None):
        return False

    def has_delete_permission(self, request, obj=None):
        return False
