
    :_i                     B    S r SSKJrJr   " S S\R                  5      rg)u4   
系统配置模型

包含系统配置相关模型
   )dbget_beijing_nowc                      \ rS rSrSrSr\R                  " \R                  SS9r	\R                  " \R                  " S5      SS9r\R                  " \R                  SS9r\R                  " \R                  " S	5      5      r\R                  " \R                  " S
5      SS9r\R                  " \R                   SS9r\R                  " \R$                  \S9r\R                  " \R$                  \\S9r\R,                  " SSSS94rS rS rS r\SS j5       r\SS j5       r\S 5       r\S 5       r\S 5       r Sr!g)SystemConfig   u   系统配置模型system_configsT)primary_keyd   F)nullable   2   general)default)r   onupdatekeycategoryuq_config_key_category)namec           	      H   U R                   U R                  U R                  5       U R                  U R                  U R
                  U R                  (       a  U R                  R                  5       OS U R                  (       a  U R                  R                  5       S.$ S S.$ )N)idr   valuedescriptionr   enabled
created_at
updated_at)	r   r   	get_valuer   r   r   r   	isoformatr   )selfs    9/Users/yu22x/Desktop/ge/ctf/app/models/database/config.pyto_dictSystemConfig.to_dict   sz    ''88^^%++||9=$//335d9=$//335	
 		
 OS	
 		
    c                      SSK nUR                  U R                  5      $ !   U R                  R                  5       S;   a  U R                  R                  5       S:H  s $ U R                  s $ = f)u   获取配置值（解析JSON）    N)truefalser%   )jsonloadsr   lower)r   r'   s     r   r   SystemConfig.get_value)   s\    	::djj))	zz!%66zz'')V33::s   ! =A. A.c                     SSK n[        U[        5      (       a  UR                  U5      U l        g[        U[
        [        45      (       a  UR                  USS9U l        g[        U5      U l        g)u"   设置配置值（转换为JSON）r$   NF)ensure_ascii)r'   
isinstancebooldumpsr   dictliststr)r   r   r'   s      r   	set_valueSystemConfig.set_value4   sR    eT""E*DJd|,,E>DJUDJr"   Nc                     Uc  Sn[         R                  R                  XSS9R                  5       nU(       a  UR	                  5       $ U$ )u   获取配置值

Args:
    key: 配置键
    default: 默认值
    category: 配置类别（如 'ai'），如果为None则使用 'general'
r   T)r   r   r   )r   query	filter_byfirstr   )r   r   r   configs       r   
get_configSystemConfig.get_config?   sK      H##--#RV-W]]_##%%r"   c                 f   Uc  Sn[         R                  R                  XS9R                  5       nU(       a  UR	                  U5        U(       a  X$l        O<[        U SUUS9nUR	                  U5        [        R                  R                  U5        [        R                  R                  5         U$ )u   设置配置值

Args:
    key: 配置键
    value: 配置值
    description: 描述
    category: 配置类别（如 'ai', 'general'），如果为None则使用 'general'
r   )r   r    )r   r   r   r   )
r   r6   r7   r8   r3   r   r   sessionaddcommit)r   r   r   r   r9   s        r   
set_configSystemConfig.set_configO   s      H ##--#-IOOQU#%0"!'!	F U#JJNN6"


r"   c                      [         R                  SS5      n [        U [        5      (       a  U $ [        U [        5      (       a  U R                  5       S;  $ g)u   检查是否允许用户注册allow_registrationT)r&   0nooff)r   r:   r-   r.   r2   r)   r   s    r   is_registration_enabled$SystemConfig.is_registration_enabledn   sK     ''(<dCeT""LeS!!;;=(CCCr"   c                      SSK Jn   U R                  R                  SSSSS9R	                  5       nU(       a-  UR                  5       nU(       a  UR                  5       (       a  gg)uO   检查是否设置了全局Token（兼容方法，使用 ai_provider_configs）r   AIProviderConfigNaugmentTuser_idprovider_type	is_active
is_defaultF)ai_providerrM   r6   r7   r8   get_api_keystriprM   r9   api_keys      r   has_global_tokenSystemConfig.has_global_tokeny   s`     	2!''11#	 2 

 %' 	 ((*G7==??r"   c                     SSK Jn   U R                  R                  SSSSS9R	                  5       nU(       a  UR                  5       nU(       a  UR                  5       (       a  UR                  UR                  (       a  UR                  R                  5       OSUR                  (       a  UR                  R                  5       OSUR                  (       a  UR                  R                  5       S.$ SS.$ g)uf   获取全局Token信息（不包含实际Token内容）（兼容方法，使用 ai_provider_configs）r   rL   NrN   TrO   )r   r   r   	last_used)rT   rM   r6   r7   r8   rU   rV   r   r   r   r   r\   rW   s      r   get_global_token_info"SystemConfig.get_global_token_info   s     	2!''11#	 2 

 %' 	 ((*G7==??"KKCICTCT&"3"3"="="?Z^CICTCT&"3"3"="="?Z^AGAQAQ!1!1!;!;!=	  X\	  r"   rH   )NN)"__name__
__module____qualname____firstlineno____doc____tablename__r   ColumnIntegerr   Stringr   Textr   r   r   Booleanr   DateTimer   r   r   UniqueConstraint__table_args__r    r   r3   staticmethodr:   rA   rI   rY   r]   __static_attributes__ r"   r   r   r      sE   $M	2::4	0B
))BIIcNU
3CIIbgg.E))BIIcN+Kyy2	:Hii

D1G2;;@J2;;/ZJ 	E:4LMN

		$    <      r"   r   N)rc   baser   r   Modelr   ro   r"   r   <module>rr      s!    &Q288 Qr"   