84 lines
3.1 KiB
Python
84 lines
3.1 KiB
Python
|
|
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
|