
    cHi                     d    S SK Jr  S SKJrJrJrJr   " S S5      r " S S\5      rS r	S r
S	 rg
)    session)DictListAnyOptionalc                      \ rS rSrSr\S 5       r\S 5       r\S 5       r\S\	\
   4S j5       r\S\
SS	4S
 j5       r\S\\
   4S j5       r\S\	\   4S j5       r\S\
SS	4S j5       r\SS j5       r\S\\
   4S j5       r\S\\
   SS	4S j5       r\S\	\
   4S j5       r\S\
SS	4S j5       r\S\	\
   4S j5       r\S\
SS	4S j5       rSrg	)SessionManager   u   
会话管理类：提供所有会话相关的操作

包括：
1. 会话状态管理
2. 会话数据存取
3. 数据库会话数据获取
c                 D    / SQnX;  a  [        SU  35      eU [        S'   g)u#  
更新会话状态

状态流程：
1. language_selected: 语言选择完成
2. vulnerability_selected: 漏洞选择完成
3. scene_selected: 场景选择完成
4. difficulty_selected: 难度选择完成
5. functions_allocated: 功能分配完成
6. challenge_generated: 题目生成完成
)language_selecteddifficulty_selectedvulnerability_selectedscene_selectedextra_selectedfunctions_allocatedchallenge_generatedu   无效的状态: current_stateN)
ValueErrorr   )statevalid_statess     :   /Users/yu22x/Desktop/ddd_副本5/ctf/app/models/session.pyupdate_session_state#SessionManager.update_session_state   s.    
 $0899#(     c                  0    [         R                  " SS5      $ )u   获取当前会话状态r   Nr   get r   r   get_session_state SessionManager.get_session_state+   s     {{?D11r   c                  (    S[         ;   a  [         S	 gg)u   清除会话状态r   Nr   r   r   r   clear_session_state"SessionManager.clear_session_state0   s     g%( &r   returnc                  .    [         R                  " S5      $ )u   获取选择的编程语言languager   r   r   r   get_selected_language$SessionManager.get_selected_language7   s     {{:&&r   r'   Nc                     U [         S'   g)u   设置选择的编程语言r'   Nr   )r'   s    r   set_selected_language$SessionManager.set_selected_language<   s     '
r   c                  0    [         R                  " S/ 5      $ )u   获取选择的漏洞列表vulnerabilitiesr   r   r   r   get_selected_vulnerabilities+SessionManager.get_selected_vulnerabilitiesA   s     {{,b11r   c                  .    [         R                  " S5      $ )u   获取选择的场景scener   r   r   r   get_selected_scene!SessionManager.get_selected_sceneF   s     {{7##r   stepc                     U [         S'   g)u   设置当前步骤current_stepNr   )r5   s    r   set_current_stepSessionManager.set_current_stepK   s     #'r   c                  .    [         R                  " 5         g)u   清除所有会话数据N)r   clearr   r   r   clear_sessionSessionManager.clear_sessionP   s     	r   c                  0    [         R                  " S/ 5      $ )u!   获取选择的漏洞名称列表vulnerability_namesr   r   r   r    get_selected_vulnerability_names/SessionManager.get_selected_vulnerability_namesU   s     {{0"55r   namesc                     U [         S'   g)u!   设置选择的漏洞名称列表r?   Nr   )rB   s    r    set_selected_vulnerability_names/SessionManager.set_selected_vulnerability_namesZ   s     */%&r   c                  .    [         R                  " S5      $ )u   获取选择的难度级别
difficultyr   r   r   r   get_selected_difficulty&SessionManager.get_selected_difficulty_   s     {{<((r   rG   c                     U [         S'   g)u   设置选择的难度级别rG   Nr   )rG   s    r   set_selected_difficulty&SessionManager.set_selected_difficultyd   s     !+r   c                  .    [         R                  " S5      $ )u   获取额外要求extra_requirementsr   r   r   r   get_extra_requirements%SessionManager.get_extra_requirementsi   s     {{/00r   requirementsc                     U [         S'   g)u   设置额外要求rN   Nr   )rQ   s    r   set_extra_requirements%SessionManager.set_extra_requirementsn   s     )5$%r   r   )r%   N)__name__
__module____qualname____firstlineno____doc__staticmethodr   r    r#   r   strr(   r+   r   r/   r   r3   r8   r<   r@   rD   rH   rK   rO   rS   __static_attributes__r   r   r   r
   r
      s    ) )6 2 2 ) ) '8C= ' ' ' ' ' ' 2$s) 2 2 $ $ $ 's 't ' '   6d3i 6 6 /S	 /d / / )Xc] ) ) +C +D + + 1HSM 1 1 5S 5T 5 5r   r
   c                       \ rS rSrSrSrg)SessionDatau   u5   兼容层：保持原有的SessionData类对外接口r   N)rU   rV   rW   rX   rY   r\   r   r   r   r^   r^   u   s    ?r   r^   c                 ,    [         R                  U 5      $ )u*   更新会话状态（向后兼容函数）)r
   r   )r   s    r   r   r   z   s    ..u55r   c                  *    [         R                  5       $ )u0   获取当前会话状态（向后兼容函数）)r
   r    r   r   r   r    r    ~   s    ++--r   c                  *    [         R                  5       $ )u*   清除会话状态（向后兼容函数）)r
   r#   r   r   r   r#   r#      s    --//r   N)flaskr   typingr   r   r   r   r
   r^   r   r    r#   r   r   r   <module>re      s6     , ,m5 m5b	. 	
6.0r   