Files
SignatureSystem/routes/__pycache__/db_api.cpython-39.pyc

156 lines
11 KiB
Plaintext
Raw Normal View History

2026-07-20 13:16:17 +08:00
a
bOj<4F>D<00>@s<>ddlZddlZddlmZmZmZmZddlmZddl m
Z
m Z m Z ddl mZddlmZmZede<12>Ze<01>e<12>Zejddgd <09>d
d <0B><00>Zejd dgd <09>d d<0E><00>Zejddgd <09>dd<11><00>Zejddgd <09>dd<14><00>Zejddgd <09>dd<18><00>Zejddgd <09>dd<1C><00>Zejddgd <09>dd <20><00>Zejd!dgd <09>d"d#<23><00>Zd$d%<25>Zejd&dgd <09>d'd(<28><00>Z ejd&dgd <09>d)d*<2A><00>Z!ejd+dgd <09>d,d-<2D><00>Z"ejd+dgd <09>d.d/<2F><00>Z#ejd0dgd <09>d1d2<64><00>Z$ejd3dgd <09>d4d5<64><00>Z%dS)6<>N)<04> Blueprint<6E>request<73>jsonify<66>Response)<03>validate_user_id<69>validate_user_name<6D>validate_image_size)<01>get_limits_config)<02>preview_remove_white<74>preview_binarizeZdb_apiz /api/db/listZGET)<01>methodsc
Cs<>tjjddtd<03>}tjjddtd<03>}tj<01>dd<07>}z$tj|||pBdd<08>}td |d
<EFBFBD><02>WSty<>}z2t<08> d t
|<04><01>td t
|<04>d <0A><02>dfWYd}~Sd}~00dS)N<>page<67><00><01>type<70> page_size<7A><00>keyword<72><00>r rrT<><02>success<73>datau查询列表失败: %sF<73>r<00>message<67><65>) r<00>args<67>get<65>int<6E>db<64> query_allr<00> Exception<6F>logger<65>error<6F>str)r rr<00>result<6C>e<>r'<00>routes/db_api.py<70>db_list sr)z/api/db/get/<user_id>c
Cs<>zVt<00>|<00>}|s,tdd|<00>d<03>d<04><02>dfWSt|d<00>|d<|<01>dd<00>td|d <09><02>WSty<>}z2t<06>d
t|<02><01>tdt|<02>d<04><02>d fWYd}~Sd}~00dS) NFu未找到人员ID=u 的记录r<00><><00> is_signature<72>
sign_imageTru查询记录失败: %sr) r<00>query_by_user_idr<00>bool<6F>popr!r"r#r$)<03>user_id<69>recordr&r'r'r(<00>db_gets
 r2z/api/db/image/<user_id>c
Cs<>z8t<00>|<00>}|s$tddd<03><02>dfWS|d}t|dd<07>WSty<>}z2t<05>dt|<03><01>tdt|<03>d<03><02>d fWYd}~Sd}~00dS)
NF<EFBFBD>未找到记录rr*r,<00> image/png<6E>Zmimetype<70>获取图片失败: %sr)rr-rrr!r"r#r$)r0r1<00>
image_datar&r'r'r(<00> db_get_image(s
r8z/api/db/preview/<user_id>c
Cs<>zZt<00>|<00>}|s$tddd<03><02>dfWS|d}t|d<00>}|rFt|<02>}nt|<02>}t|dd<08>WSty<>}z2t<08> d t
|<05><01>tdt
|<05>d<03><02>d
fWYd}~Sd}~00dS) NFr3rr*r,r+r4r5u预览图片失败: %sr) rr-rr.r r
rr!r"r#r$)r0r1r7<00>is_sig<69> processedr&r'r'r(<00>db_preview_image5s
 
r;z /api/db/addZPOSTc
Csf<00>z<>tjp d}d|vr<>tj<02>dd<01>}tj<02>dd<01>}tj<02>dd<06>}tj<04>d<07>}t|<01>\}}|sptd|d <09><02>d
fWSt|<02>\}}|s<>td|d <09><02>d
fWS|s<>tdd d <09><02>d
fWS|<04><08>}|d vr<>d nd}t <09>
||||<08>tddd <09><02>WStj dd<11>} | <09>s
tddd <09><02>d
fWS| <09>dd<01>}| <09>dd<01>}| <09>dd<0E>}| <09>dd<01>}
t|<01>\}}|<05>s`td|d <09><02>d
fWSt|<02>\}}|<05>s<>td|d <09><02>d
fWS|
<EFBFBD>s<>tdd d <09><02>d
fWSt <0C> |
<EFBFBD>}|dv<00>r<>d nd}t <09>
||||<08>tddd <09><02>WSt<0E>y} z"tdt| <0B>d <09><02>d
fWYd} ~ Sd} ~ 0t<10>y`} z2t<11>dt| <0B><01>tdt| <0B>d <09><02>dfWYd} ~ Sd} ~ 00dS)Nr<00>multipart/form-datar0<00> user_namer+<00>0r,Fr<00><>u缺少签章图片<E59BBE><03>1<>true<75>TruerrTu 新增成功<E68890>Zsilentu无效请求数据<E695B0>sign_image_base64<36>rrATrB<00>新增记录失败: %sr)r<00> content_type<70>formr<00>filesrrr<00>readr<00> insert_record<72>get_json<6F>base64<36> b64decode<64>
ValueErrorr$r!r"r#) rHr0r=r+<00>
image_file<EFBFBD>valid<69>msgr7r9<00> json_data<74> image_b64r&r'r'r(<00>db_addGsV
          
*rVz/api/db/update/<user_id>ZPUTc
Cs0z<>tjp
d}d}d}d}d|vrjtj<02>d<03>}tj<02>d<04>}|durP|dvrLdnd}tj<04>d<08>}|r<>|<06><05>}nTtjd d
<EFBFBD>}|r<>|<07>d<03>}|<07>d<04>}|dur<>|d vr<>dnd}|<07>d <0C>} | r<>t<07>| <09>}t j
||||d <0A>t d dd<0F><02>WSt <0C>y*}
z2t <0A>dt|
<EFBFBD><01>t dt|
<EFBFBD>d<0F><02>dfWYd}
~
Sd}
~
00dS)Nrr<r=r+r@rrr,TrDrFrE<00>r=r,r+u 更新成功r<00>更新记录失败: %sFr)rrHrIrrJrKrMrNrOr<00> update_recordrr!r"r#r$) r0rHr=r,r+Z
is_sig_strrQrT<00>
is_sig_valrUr&r'r'r(<00> db_update<74>s6
   
 



r[z/api/db/delete/<user_id>ZDELETEc
Csjzt<00>|<00>tddd<03><02>WStyd}z2t<04>dt|<01><01>tdt|<01>d<03><02>dfWYd}~Sd}~00dS)NTu 删除成功r<00>删除记录失败: %sFr<00>rZ delete_recordrr!r"r#r$<00>r0r&r'r'r(<00> db_delete<74>s 
r_z/api/db/batch_importc Cs<><00>z<>tj<01>d<01>}tj<03>dd<03>dk}tj<03>dd<06>}tj<03>dd<03>}|dvrJd nd
}g}d
}d
}d }|D<00>]} | jppd }
d |
vr<>|
<EFBFBD>d d <09>d
n|
} |r<>|<02>|d <0A><04>} |d 7}n| } | } | <09><07>}z.t<08> | | ||<04>|<05>
|
| dd<0F><03>|d 7}Wqbt <0B>y.}z,|<05>
|
| dt |<0F>d<11><04>|d 7}WYd}~qbd}~0t <0A>yr}z,|<05>
|
| dt |<0F>d<11><04>|d 7}WYd}~qbd}~00qbtdt|<00>|||d<13>d<14><02>WSt <0A>y<>}z2t<10>dt |<0F><01>tdt |<0F>d<17><02>dfWYd}~Sd}~00dS)NrJ<00>auto_idr>rA<00> id_prefixZUSERr+r@rrr<00>.Z04dr)<03>filenamer0<00>status<75>fail)rcr0rdrT)<04>totalrre<00>resultsru批量导入失败: %sFrr)rrJZgetlistrIrrc<00>rsplitrKrrL<00>appendrPr$r!r<00>lenr"r#)rJr`rar+r9rgZ success_countZ
fail_countZ
id_counter<EFBFBD>frc<00> name_partr0r=r7r&r'r'r(<00>db_batch_import<72>sP 


  <02><04>
rmc Cszd}|<00>d<02>r6zt|d<00>}Wnty4d}Yn0|<00>d<03>|<00>d<04>t|<00>d<05><01>|t|<00>d<06>pbd<07>t|<00>d<08>prd<07>d <09>S)
u8将内部记录转换为 SPA 期望的列表项格式。rr,r0r=r+<00> create_timer<00> update_time)r0r=r+<00>
image_sizernro)rrjr!r.r$)r1rpr'r'r(<00>_records_to_spa<70>s
 
 <10>rqz/api/db/recordsc
Cs<>zxtj<01>d<01>pd}tjjddtd<04>}tjjddtd<04>}tj|||d<07>}dd <09>|<03>d
g<00>D<00>}td ||<03>d t|<04><01>d <0A><03>WSty<>}z4t <09>
dt |<05><01>tdt |<05>gd<10><03>dfWYd}~Sd}~00dS)N<>qr rrr<00><>rcSsg|] }t|<01><01>qSr')rq)<02>.0<EFBFBD>rr'r'r(<00>
<listcomp><3E><00>z'db_records_list_spa.<locals>.<listcomp>rTrf)r<00>recordsrfu查询记录列表失败: %sF)rrrxr) rrrrrr rrjr!r"r#r$)rr rr%rxr&r'r'r(<00>db_records_list_spa<70>s<0E>
ryc
Cs<>tjdd<02>pi}|<00>d<03>pd<04><03>}|<00>d<05>p.d<04><03>}|<00>dd<07>}|<00>d<08>pLd}t|<01>\}}|sptd|d <09><02>d
fSt|<02>\}}|s<>td|d <09><02>d
fS|s<>tdd d <09><02>d
fSzt<07>|<04>}Wn<t y<>}z$tdd |<08><00>d <09><02>d
fWYd}~Sd}~00t
<EFBFBD>} t || d <00>\}}|<05>s$td|d <09><02>d
fS|<03>r.dnd}
zt <0C> ||||
<EFBFBD>Wn<>t<0E>y<>}z"tdt|<08>d <09><02>d
fWYd}~Sd}~0t <09>y<>}z2t<10>dt|<08><01>tdt|<08>d <09><02>dfWYd}~Sd}~00td||t|
<EFBFBD>d<12>d<13><02>S)NTrDr0rr=r+F<> image_base64rr?u 缺少图片<E59BBE>图片 Base64 解码失败: <20>image_max_bytesrrrGr<00>r0r=r+<00>rr1)rrMr<00>striprrrrNrOr!r rrrLrPr$r"r#r.) <0B>payloadr0r=r+rUrRrSr7r&<00>limitsr9r'r'r(<00>db_records_add_spasD   .*,<06><04>r<EFBFBD>z/api/db/records/<user_id>c
Cs~tjdd<02>pi}|<01>d<03>}|<01>d<04>}|<01>d<05>}d}|r<>zt<03>|<04>}Wn<ty<>}z$tdd|<06><00>d<08><02>d fWYd}~Sd}~00t<07>}t||d
<00>\}} |s<>td| d<08><02>d fS|dur<>t |<02>\}} |s<>td| d<08><02>d fSd}
|dur<>|r<>d nd }
zt
j ||||
d <0A>WnLt<05>yT}z2t <0C> dt|<06><01>tdt|<06>d<08><02>dfWYd}~Sd}~00td|||
du<01>rpt|
<EFBFBD>ndd<10>d<11><02>S)NTrDr=r+rzFr{rr?r|rrrWrXrr}r~)rrMrrNrOr!rr rrrrYr"r#r$r.) r0r<>r=r+rUr,r&r<>rRrSrZr'r'r(<00>db_records_update_spa0s>


.  ,<14><04>r<EFBFBD>c
Cshzt<00>|<00>tddi<01>WStyb}z2t<04>dt|<01><01>tdt|<01>d<05><02>dfWYd}~Sd}~00dS)NrTr\Frrr]r^r'r'r(<00>db_records_delete_spaVs 
r<>z/api/db/records/importc Cs<>tjdd<02>pi}|<00>d<03>pg}|<00>d<04>p*d<05><03>p2d}t|<00>d<06>pBd<07>}tdtt|<00>d<08>pZd <09>d
<EFBFBD><02>}t|<00>d d <0C><02>}|r|dnd }t<08>}d }d } g}
t |<01>D<00>]\} } | <0C>d<0E>p<>|<02>| dd|<04>d<10><03>d<11>} d| vr<>| <0A>
dd<07>d n| }| <0C>d<13>p<>|}|<02>|| d|<04>d<10><03><04>}| <0C>d|<05>}|<11>r$dnd }| <0C>d<15><01>p6d}|<13>s\| d7} |
<EFBFBD> | dd| d<19><04>q<>zt <0C> |<13>}WnTt<0E>y<>}z:| d7} |
<EFBFBD> | dd|<15><00>| d<19><04>WYd}~q<>WYd}~n
d}~00t||d<00>\}}|<16>s<>| d7} |
<EFBFBD> | d|| d<19><04>q<>zt<10>||||<12>|d7}Wq<>t<12>yX}z,| d7} |
<EFBFBD> | dt|<15>| d<19><04>WYd}~q<>d}~0t<0E>y<>}z,| d7} |
<EFBFBD> | d t|<15>| d<19><04>WYd}~q<>d}~00q<>td|| |
d!<21><04>S)"u<>SPA 批量导入JSON + Base64。
返回结构需让前端能识别失败条目(含 index以便保留待二次处理。
TrD<00>itemsZauto_id_prefix<69>UZ auto_id_startrZauto_id_padding<6E>r<00>default_is_signatureFrZimage_filenamer><00>dz.pngrbr=r+rzrZ MISSING_IMAGEu缺少图片 Base64)<04>index<65>coderrcZINVALID_BASE64uBase64 解码失败: Nr|ZIMAGE_TOO_LARGEZ DUPLICATEZERROR)r<00>imported<65>failed<65>failures)rrMrrr<00>max<61>minr.r <00> enumeraterhrirNrOr!rrrLrPr$r)r<>r<>raZid_startZ
id_paddingr<EFBFBD>Zdefault_is_sigr<67>r<>r<>r<><00>idx<64>itemrcrlr=r0r+r9rUr7r&rRrSr'r'r(<00>db_records_import_spa`sv & <04>
<EFBFBD>"<04> <08><08> <02>r<EFBFBD>z/api/db/records/<user_id>/imagec
Cs<>zrt<00>|<00>}|s$tddd<03><02>dfWStj<04>d<05>dv}|d}|rbt|<01>d<08><01>rXt|<03>}qft|<03>}n|}t |d d
<EFBFBD>WSt
y<EFBFBD>}z2t <0B> d t |<05><01>tdt |<05>d<03><02>d fWYd}~Sd}~00dS) NFr3rr*r:)rArBrCZyesr,r+r4r5r6r)rr-rrrrr.r r
rr!r"r#r$)r0r1r:r7r<>r&r'r'r(<00>db_records_image_spa<70>s


r<>)&rNZloggingZflaskrrrrZlib.dbrZlib.validatorsrrrZ
lib.configr Zlib.image_processorr
r <00>__name__Z db_api_bpZ getLoggerr"Zrouter)r2r8r;rVr[r_rmrqryr<>r<>r<>r<>r<>r'r'r'r(<00><module>sJ  






8
!

9

(
%

C