
    bWi                         S r  " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r	 " S S\5      r
 " S S\5      rg)uh   
CTF 系统自定义异常类

提供统一的异常处理机制，便于错误追踪和响应格式化
c                   N   ^  \ rS rSrSrSrSrSS\S\S\	4U 4S jjjr
S	 rS
rU =r$ )CTFError	   u^   CTF 系统基础异常类

所有自定义异常的基类，提供统一的错误处理接口
u   操作失败  messagecodedetailsc                    > U=(       d    U R                   U l        U=(       d    U R                  U l        U=(       d    0 U l        [
        TU ]  U R                  5        g)u]   
Args:
    message: 错误消息
    code: HTTP 状态码
    details: 额外的错误详情
N)default_messager   default_coder   r   super__init__)selfr   r   r   	__class__s       =   /Users/yu22x/Desktop/ddd_副本131/ctf/app/core/exceptions.pyr   CTFError.__init__   sE     6$"6"6-D--	}"&    c                 z    SU R                   U R                  S.nU R                  (       a  U R                  US'   U$ )u*   转换为字典格式，用于 JSON 响应error)statusr   r   r   )r   r   r   )r   results     r   to_dictCTFError.to_dict   s8     ||II

 << $F9r   )r   r   r   NNN)__name__
__module____qualname____firstlineno____doc__r
   r   strintdictr   r   __static_attributes____classcell__r   s   @r   r   r   	   s=     %OL
' 
'# 
't 
' 
'	 	r   r   c                   D   ^  \ rS rSrSrSrSrS	S\S\4U 4S jjjrSr	U =r
$ )
ValidationError)   u0   验证错误

用于输入验证失败的情况
u   输入验证失败i  r   fieldc                 ~   > 0 nU(       a  X$S'   Ub  X4S'   [         TU ]  XR                  U(       a  U5        gS5        g)uc   
Args:
    message: 错误消息
    field: 验证失败的字段名
    value: 验证失败的值
r(   Nvaluer   r   r   )r   r   r(   r*   r   r   s        r   r   ValidationError.__init__1   s?     $G$G"3"3WRTRr    r   r   r   r   r   r   r
   r   r   r   r"   r#   r$   s   @r   r&   r&   )   s0     +OLS S3 S Sr   r&   c                   D   ^  \ rS rSrSrSrSrS	S\S\4U 4S jjjrSr	U =r
$ )
NotFoundError@   u?   资源未找到错误

用于请求的资源不存在的情况
u   资源不存在i  r   resource_typec                 ~   > 0 nU(       a  X$S'   Ub  X4S'   [         TU ]  XR                  U(       a  U5        gS5        g)ux   
Args:
    message: 错误消息
    resource_type: 资源类型（如 'challenge', 'user'）
    resource_id: 资源ID
r2   Nresource_idr+   )r   r   r2   r4   r   r   s        r   r   NotFoundError.__init__H   s?     '4O$"%0M""3"3WRTRr   r-   r   r.   r$   s   @r   r0   r0   @   s0     (OLS S3 S Sr   r0   c                   D   ^  \ rS rSrSrSrSrS	S\S\4U 4S jjjrSr	U =r
$ )
PermissionDeniedErrorW   uB   权限不足错误

用于用户没有权限执行操作的情况
u   权限不足i  r   required_permissionc                 p   > 0 nU(       a  X#S'   [         TU ]  XR                  U(       a  U5        gS5        g)uJ   
Args:
    message: 错误消息
    required_permission: 所需的权限
r9   Nr+   )r   r   r9   r   r   s       r   r   PermissionDeniedError.__init___   s2     -@)*"3"3WRTRr   r-   NNr.   r$   s   @r   r7   r7   W   s0     %OL	S 	S 	S 	Sr   r7   c                   @   ^  \ rS rSrSrSrSrSS\4U 4S jjjrSr	U =r
$ )	AuthenticationErrork   u<   认证错误

用于用户未登录或认证失败的情况
u   请先登录i  r   c                 8   > [         TU ]  XR                  5        g Nr+   )r   r   r   s     r   r   AuthenticationError.__init__s   s    "3"34r   r-   rA   r.   r$   s   @r   r>   r>   k   s%     %OL5 5 5r   r>   c                   H   ^  \ rS rSrSrSrSrS
S\S\S\4U 4S jjjr	S	r
U =r$ )AIServiceErrorw   u7   AI 服务错误

用于 AI 服务调用失败的情况
u   AI 服务调用失败r   r   providererror_detailsc                    > U=(       d    0 nU(       a  X$S'   [         TU ]  XR                  U(       a  U5        gS5        g)ub   
Args:
    message: 错误消息
    provider: AI 提供商名称
    error_details: 错误详情
rF   Nr+   )r   r   rF   rG   r   r   s        r   r   AIServiceError.__init__   s6      %2"*J"3"3WRTRr   r-   r   )r   r   r   r   r   r
   r   r   r!   r   r"   r#   r$   s   @r   rD   rD   w   s9     .OL
S 
Sc 
SQU 
S 
Sr   rD   c                   H   ^  \ rS rSrSrSrSrS
S\S\S\4U 4S jjjrS	r	U =r
$ )GenerationError   u6   题目生成错误

用于题目生成失败的情况
u   题目生成失败r   r   stagetask_idc                    > 0 nU(       a  X$S'   U(       a  X4S'   [         TU ]  XR                  U(       a  U5        gS5        g)uO   
Args:
    message: 错误消息
    stage: 生成阶段
    task_id: 任务ID
rM   rN   Nr+   )r   r   rM   rN   r   r   s        r   r   GenerationError.__init__   s<     $G!(I"3"3WRTRr   r-   r   r.   r$   s   @r   rK   rK      s8     +OLS S3 S S Sr   rK   c                   H   ^  \ rS rSrSrSrSrS
S\S\S\4U 4S jjjrS	r	U =r
$ )DeploymentError   u2   部署错误

用于 Docker 部署失败的情况
u   部署失败r   r   deployment_uuidcontainer_idc                    > 0 nU(       a  X$S'   U(       a  X4S'   [         TU ]  XR                  U(       a  U5        gS5        g)u\   
Args:
    message: 错误消息
    deployment_uuid: 部署UUID
    container_id: 容器ID
rT   rU   Nr+   )r   r   rT   rU   r   r   s        r   r   DeploymentError.__init__   s=     )8%&&2N#"3"3WRTRr   r-   r   r.   r$   s   @r   rR   rR      s9     %OLS SS SWZ S Sr   rR   c                   D   ^  \ rS rSrSrSrSrS	S\S\4U 4S jjjrSr	U =r
$ )
DatabaseError   u6   数据库错误

用于数据库操作失败的情况
u   数据库操作失败r   r   	operationc                 p   > 0 nU(       a  X#S'   [         TU ]  XR                  U(       a  U5        gS5        g)uc   
Args:
    message: 错误消息
    operation: 操作类型（如 'create', 'update', 'delete'）
r[   Nr+   )r   r   r[   r   r   s       r   r   DatabaseError.__init__   s1     #,K "3"3WRTRr   r-   r<   r.   r$   s   @r   rY   rY      s0     .OL	S 	Ss 	S 	Sr   rY   c                   D   ^  \ rS rSrSrSrSrS	S\S\4U 4S jjjrSr	U =r
$ )
ConfigurationError   u3   配置错误

用于配置缺失或无效的情况
u   配置错误r   r   
config_keyc                 p   > 0 nU(       a  X#S'   [         TU ]  XR                  U(       a  U5        gS5        g)u>   
Args:
    message: 错误消息
    config_key: 配置键名
ra   Nr+   )r   r   ra   r   r   s       r   r   ConfigurationError.__init__   s1     $.L!"3"3WRTRr   r-   r<   r.   r$   s   @r   r_   r_      s0     %OL	S 	S 	S 	Sr   r_   N)r   	Exceptionr   r&   r0   r7   r>   rD   rK   rR   rY   r_   r-   r   r   <module>re      s   y @Sh S.SH S.SH S(	5( 	5SX S*Sh S.Sh S.SH S(S Sr   