73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
팀확인 다이얼로그 모듈
|
|
레코드의 팀 확인 상태를 관리하는 다이얼로그입니다.
|
|
"""
|
|
|
|
from typing import Dict
|
|
from PySide6.QtWidgets import QVBoxLayout, QDialogButtonBox
|
|
from PySide6.QtCore import Qt
|
|
|
|
from ui.base.base_dialog import BaseDialog
|
|
from ui.components.team_confirmation_widget import TeamConfirmationWidget
|
|
from database.models import SectionBase
|
|
from core.logger import get_logger
|
|
import json
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
class TeamConfirmationDialog(BaseDialog):
|
|
"""
|
|
팀확인 다이얼로그
|
|
|
|
레코드의 팀 확인 상태를 토글 방식으로 관리합니다.
|
|
"""
|
|
|
|
def __init__(self, parent=None, record: SectionBase = None):
|
|
super().__init__(parent, title="팀 확인")
|
|
|
|
self.record = record
|
|
self.confirmations = {}
|
|
|
|
if record:
|
|
try:
|
|
self.confirmations = json.loads(record.team_confirmations) if isinstance(record.team_confirmations, str) else record.team_confirmations
|
|
if not isinstance(self.confirmations, dict):
|
|
self.confirmations = {}
|
|
except (json.JSONDecodeError, TypeError):
|
|
self.confirmations = {}
|
|
|
|
self._setup_ui()
|
|
|
|
def _setup_ui(self):
|
|
"""UI 설정"""
|
|
# 팀확인 위젯
|
|
self.confirmation_widget = TeamConfirmationWidget(self.confirmations, self)
|
|
self.confirmation_widget.confirmation_changed.connect(self._on_confirmation_changed)
|
|
self.content_layout.addWidget(self.confirmation_widget)
|
|
|
|
# 버튼
|
|
button_box = QDialogButtonBox(
|
|
QDialogButtonBox.Ok | QDialogButtonBox.Cancel,
|
|
Qt.Horizontal,
|
|
self
|
|
)
|
|
button_box.accepted.connect(self.accept)
|
|
button_box.rejected.connect(self.reject)
|
|
self.content_layout.addWidget(button_box)
|
|
|
|
def _on_confirmation_changed(self, team: str, confirmed: bool):
|
|
"""확인 상태 변경"""
|
|
self.confirmations[team] = confirmed
|
|
logger.debug(f"팀 확인 상태 변경: {team} = {confirmed}")
|
|
|
|
def get_confirmations(self) -> Dict[str, bool]:
|
|
"""확인 상태 반환"""
|
|
return self.confirmations.copy()
|
|
|
|
|
|
|
|
|
|
|