from sqladmin import ModelView from wtforms import PasswordField, SelectField from app.backoffice.admin.models import Admin from app.backoffice.mixins import SuperAdminOnly class AdminAdmin(SuperAdminOnly, ModelView, model=Admin): name = "관리자 계정" name_plural = "관리자 계정 목록" icon = "fa-solid fa-user-shield" category = "백오피스 설정" page_size = 30 column_list = [ "id", "username", "name", "role", "is_active", "last_login_at", "created_at", ] column_details_list = [ "id", "username", "name", "role", "is_active", "last_login_at", "created_at", "updated_at", ] form_columns = ["username", "password", "name", "role", "is_active"] form_overrides = { "password": PasswordField, "role": SelectField, } form_args = { "role": { "label": "권한", "choices": [("superadmin", "전체 관리자"), ("viewer", "조회 전용")], "default": "viewer", } } column_searchable_list = [Admin.username, Admin.name] column_default_sort = (Admin.created_at, True) column_sortable_list = [ Admin.id, Admin.username, Admin.is_active, Admin.last_login_at, Admin.created_at, ] column_labels = { "id": "ID", "username": "아이디", "name": "이름", "role": "권한", "is_active": "활성화", "last_login_at": "마지막 로그인", "created_at": "생성일시", "updated_at": "수정일시", } can_delete = False