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