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( '', obj.사진.url ) return "사진 없음" 사진미리보기.short_description = '사진 미리보기' def 모든사람보기권한(self, obj): if obj.모든사람보기권한: return format_html('✓ 모든 사람 보기') else: return format_html('👤 회원가입자만 보기') 모든사람보기권한.short_description = '보기 권한' def 비밀번호설정필요(self, obj): if obj.비밀번호설정필요: return format_html('⚠️ 비밀번호 설정 필요') else: return format_html('✓ 비밀번호 설정 완료') 비밀번호설정필요.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