from django.contrib import admin
from django.utils.html import format_html
from django import forms
from .models import Person

class PersonAdminForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = '__all__'
        widgets = {
            '사진': forms.FileInput(attrs={
                'style': 'border: 1px solid #ccc; padding: 5px; border-radius: 3px;'
            })
        }

@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
    form = PersonAdminForm
    list_display = ['SEQUENCE', '이름', '소속', '직책', '연락처', 'user', '모든사람보기권한', '비밀번호설정필요', '사진']
    list_filter = ['모든사람보기권한', '비밀번호설정필요', '소속', '직책']
    search_fields = ['이름', '소속', '직책', '연락처', 'keyword1']
    readonly_fields = ['수정일시', '사진미리보기']
    list_editable = ['SEQUENCE']
    list_display_links = ['이름']
    ordering = ['이름']

    fieldsets = (
        ('기본 정보', {
            'fields': ('이름', '연락처', 'user')
        }),
        ('상세 정보', {
            'fields': ('소속', '직책', '주소', '생년월일')
        }),
        ('미디어', {
            'fields': ('사진', '사진미리보기')
        }),
        ('설정', {
            'fields': ('모든사람보기권한', '비밀번호설정필요', 'TITLE', 'SEQUENCE', 'keyword1')
        }),
    )

    class Media:
        css = {
            'all': ('admin/css/custom_admin.css',)
        }

    def 사진미리보기(self, obj):
        if obj.사진:
            return format_html(
                '<img src="{}" style="max-width: 100px; max-height: 100px; border-radius: 5px;" />',
                obj.사진.url
            )
        return "사진 없음"
    사진미리보기.short_description = '사진 미리보기'

    def 모든사람보기권한(self, obj):
        if obj.모든사람보기권한:
            return format_html('<span style="color: green;">✓ 모든 사람 보기</span>')
        else:
            return format_html('<span style="color: blue;">👤 회원가입자만 보기</span>')
    모든사람보기권한.short_description = '보기 권한'

    def 비밀번호설정필요(self, obj):
        if obj.비밀번호설정필요:
            return format_html('<span style="color: red;">⚠️ 비밀번호 설정 필요</span>')
        else:
            return format_html('<span style="color: green;">✓ 비밀번호 설정 완료</span>')
    비밀번호설정필요.short_description = '비밀번호 설정 상태'

    def 수정일시(self, obj):
        return obj.user.date_joined if obj.user else 'N/A'
    수정일시.short_description = '수정일시'

    def has_delete_permission(self, request, obj=None):
        return request.user.is_superuser

    def has_add_permission(self, request):
        return request.user.is_superuser

    def has_change_permission(self, request, obj=None):
        return request.user.is_superuser

    def has_view_permission(self, request, obj=None):
        return request.user.is_superuser