
    lOi                        S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SS	KJr  \R                   " S
S/S9\S 5       5       r\R                   " SS/S9\S 5       5       r\R                   " SS/S9\S 5       5       r\R                   " SS/S9\S 5       5       r\R                   " SS/S9\S 5       5       r\R                   " SS/S9\S 5       5       rg)u6   
Writeup API

提供 Writeup 文件的管理功能。
    N)request)category_api_bp)category_admin_required)APIResponse)NotFoundError)WriteupFile)KnowledgeServicez/<category_id>/writeupsGET)methodsc                 d    [        5       nUR                  U 5      n[        R                  " SU0S9$ )u*   获取方向下所有 Writeup 文件列表writeupsdata)r	   list_all_writeupsr   success)category_idservicer   s      K   /Users/yu22x/Desktop/ddd_副本121/ctf/app/routes/admin/category/writeup.pylist_writeupsr      s2      G((5HZ$:;;    z(/<category_id>/writeups/<int:writeup_id>DELETEc                     [        5       nUR                  U5      nU(       d  [        S5      e[        R                  " SS9$ )u   根据 ID 删除 Writeup   文件不存在   删除成功messager	   delete_writeupr   r   r   r   
writeup_idr   r   s       r   delete_writeup_by_idr!      <      G$$Z0G-..~66r   z//<category_id>/writeups/by-name/<path:filename>c                     [        5       nUR                  X5      nU(       d  [        S5      e[        R                  " SS9$ )uG   根据文件名删除 Writeup（同时删除文件和数据库记录）r   r   r   )r	   delete_writeup_filer   r   r   )r   filenamer   r   s       r   delete_writeup_by_namer&   '   s<      G))+@G-..~66r   z5/<category_id>/knowledge/items/<int:item_id>/writeupsc                     [         R                  R                  US9R                  5       n[        R
                  " SU Vs/ s H  o3R                  5       PM     sn0S9$ s  snf )u'   获取知识点关联的 Writeup 列表)knowledge_item_idr   r   )r   query	filter_byallr   r   to_dict)r   item_idr   wps       r   get_item_writeupsr/   4   sW       **W*EIIKH(;(B::<(;< ;s   A 
z2/<category_id>/knowledge/writeups/<int:writeup_id>c                 $   [         R                  R                  U5      nU(       d  [        S5      eUR	                  5       nUR
                  (       aa  [        R                  R                  UR
                  5      (       a3   [        UR
                  SSS9 nUR                  5       US'   SSS5        OUR                  =(       d    SUS'   [        R                  " SU0S	9$ ! , (       d  f       N$= f!   UR                  =(       d    SUS'    NC= f)
u-   获取单个 Writeup 详情（包含内容）u   Writeup 不存在rzutf-8)encodingcontentN writeupr   )r   r)   getr   r,   	file_pathospathexistsopenreadr3   r   r   )r   r    r5   resultfs        r   get_writeup_detailr?   ?   s     ##J/G/00__F RWW^^G,=,=>>	6g''w?1$%FFHy! @?
 $OO1ryY$788 @?	6 ' 52F9s*   C3 C"+C3 "
C0,C3 0C3 3Dc                     [        5       nUR                  U5      nU(       d  [        S5      e[        R                  " SS9$ )u   删除 Writeupr   r   r   r   r   s       r   delete_writeup_by_id_apirA   V   r"   r   )__doc__r8   flaskr   app.routes.admin.categoryr   app.middleware.authr   app.utils.responser   app.utils.exceptionsr   app.models.database.modelsr   app.services.categoryr	   router   r!   r&   r/   r?   rA    r   r   <module>rL      s:  
 
  5 7 * . 2 2 05'B<  C< AH:V7  W7 HS[R\]7  ^7 NY^X_`  a KV[U\]9  ^9* KV^U_`7  a7r   