"""
Data Policy Admin - Django admin configuration for data policies.
"""
from django.contrib import admin
from django.utils.html import format_html

from .models import DataPolicy, DataScope


@admin.register(DataPolicy)
class DataPolicyAdmin(admin.ModelAdmin):
    """Admin configuration for DataPolicy."""

    list_display = [
        'name',
        'slug',
        'module',
        'resource',
        'policy_type',
        'priority',
        'is_active',
        'created_at',
    ]
    list_filter = ['is_active', 'policy_type', 'module']
    search_fields = ['name', 'slug', 'description', 'module', 'resource']
    readonly_fields = ['created_at', 'updated_at']
    filter_horizontal = ['applies_to_roles']

    fieldsets = (
        (None, {
            'fields': ('name', 'slug', 'description')
        }),
        ('Target', {
            'fields': ('module', 'resource', 'policy_type', 'actions')
        }),
        ('Conditions', {
            'fields': ('conditions', 'is_allow', 'priority')
        }),
        ('Role Assignment', {
            'fields': ('applies_to_roles',),
            'description': 'Leave empty to apply to all roles.'
        }),
        ('Status', {
            'fields': ('is_active',)
        }),
        ('Timestamps', {
            'fields': ('created_at', 'updated_at'),
            'classes': ('collapse',)
        }),
    )


@admin.register(DataScope)
class DataScopeAdmin(admin.ModelAdmin):
    """Admin configuration for DataScope."""

    list_display = [
        'name',
        'slug',
        'scope_type',
        'is_active',
        'created_at',
    ]
    list_filter = ['scope_type', 'is_active']
    search_fields = ['name', 'slug', 'description']
    readonly_fields = ['created_at', 'updated_at']

    fieldsets = (
        (None, {
            'fields': ('name', 'slug', 'description')
        }),
        ('Configuration', {
            'fields': ('scope_type', 'configuration', 'is_active')
        }),
        ('Timestamps', {
            'fields': ('created_at', 'updated_at'),
            'classes': ('collapse',)
        }),
    )
