Files
param-hub-python/modules/routes/__pycache__/api_items.cpython-310.pyc
T

57 lines
6.5 KiB
Plaintext
Raw Normal View History

2026-07-10 23:59:53 +08:00
o
Â1Qj®ã@s$dZddlZddlZddlmZddlmZmZmZmZddl m
2026-07-10 23:59:53 +08:00
Z
ddl m Z m
Z
mZedeƒZdd „Ze d
2026-07-10 23:59:53 +08:00
¡d dƒZe d ¡d
dƒZejd
dgdddƒZejd dgdddƒZejd dgdddƒZejddgdddƒZejddgdddƒZejd ddgdd!d"„ƒZdS)#u
动æ€åˆ†ç±»æ•°æ® API
2026-07-10 23:59:53 +08:00
éN)Údatetime)Ú BlueprintÚrequestÚjsonifyÚResponse)ÚDATA_DIR)Ú load_dataÚ save_dataÚparse_date_to_timestampÚ api_itemscCs$z ddl}t|ddƒWSYdS)NrÚREQUIRE_REVIEWF)ÚappÚgetattr)Ú
app_module©rú2works/param-hub-python/modules/routes/api_items.pyÚis_review_requireds
rz/api/items/<category_id>ctd|d}t|ƒ}tj dd¡dk}|rdd|Dƒ}tj dd¡tj d d
¡d
k}d d ˆdkrBt|d
dd}t|ƒSˆdvrRt|fdd|d}t|ƒS)items_ú.jsonÚallÚ0cSsg|]
}| dd¡r|qS)ÚvisibleT©Úget©Ú.0ÚirrrÚ
2026-07-10 23:59:53 +08:00
<listcomp>ózapi_items.<locals>.<listcomp>ÚsortÚdefaultÚorderÚdesccSs&| |¡}|dur|dvrdSdS|S)N)ÚpriceÚviewsÚyearrÚr)ÚkeyÚvalrrrÚsafe_keys
zapi_items.<locals>.safe_keycSs4| dd¡ t| dd¡ƒpt| dd¡ƒpd fS)NÚ is_pinnedFÚ publish_dater&Ú
created_atr)rr
©r'rrrÚ<lambda>%s ÿÿþzapi_items.<locals>.<lambda>)r()Únamer#r%r-r,r$Ú
updated_atcs
ˆ|ˆƒS)Nrr.©r*Úsort_byrrr/+s
)r(Úreverse)rrrÚargsrÚsortedr)Ú category_idÚ
items_fileÚitemsÚ hide_hiddenr4rr2rr sþz"/api/items/<category_id>/<item_id>csLtd|d}t|ƒ}tfdd|Dƒdƒ}|s"tddiƒdfSt|ƒS)Nrrc3ó |] }|dˆkr|VqdS©ÚidNrr©Úitem_idrrÚ <genexpr>3óz"api_item_detail.<locals>.<genexpr>ÚerrorúItem not foundé”)rrÚnextr©r7r?r8r9Úitemrr>rÚapi_item_detail/s rHÚPOST)ÚmethodscCst ¡}tƒr<ddlm}ddlm}|||dd}| dd¡}|dd |d
2026-07-10 23:59:53 +08:00
d d |d
|dœdtdd|d
2026-07-10 23:59:53 +08:00
dœƒSt d|d}t
|ƒ}t   ¡j
2026-07-10 23:59:53 +08:00
dd|d
<||d<t ¡ d¡|d<| dd¡|d<| dd¡|d<| dd¡|d<| dd¡|d<| |¡t||ƒt|ƒS)Nr)Úsubmit_for_review)Úcreate_notificationÚweb)Úsourcer0u未知u新产å“待审核u有新的产å“"u
"待审核ÚwarningÚreviewr=)Ú review_idÚcategory)ÚtitleÚmessageÚlevelrRÚdataTu*å·²æäº¤å®¡æ ¸ï¼Œè¯·ç­‰å¾…管ç†å‘˜ç¡®è®¤)ÚsuccessrTrQrré r7ú%Y-%m-%d %H:%M:%Sr-rr,r&r$r+F)rÚget_jsonrÚmodules.routes.api_reviewsrKÚ modules.routes.api_notificationsrLrrrrÚuuidÚuuid4ÚhexrÚnowÚstrftimeÚappendr )r7rVrKrLrPÚ product_namer8r9rrrÚapi_create_item9s4   
2026-07-10 23:59:53 +08:00
 û

rdÚPUTcszt ¡}td|d}t|ƒ}tfdd|Dƒdƒ}|s&tddiƒdfS| |¡t ¡  d¡|d <t
||ƒt|ƒS)
2026-07-11 00:34:47 +08:00
Nrrc3r;r<rrr>rrr@`rAz"api_update_item.<locals>.<genexpr>rBrCrDrYr1) rrZrrrErÚupdaterr`rar )r7r?rVr8r9rGrr>rÚapi_update_item[s

rgÚDELETEcs@td|d}t|ƒ}fdd|Dƒ}t||ƒtddiƒS)Nrrcsg|]
2026-07-11 00:34:47 +08:00
}|dˆkr|qS)r=rrr>rrrmrz#api_delete_item.<locals>.<listcomp>rWT)rrr r)r7r?r8r9rr>rÚapi_delete_itemis

 riz*/api/items/<category_id>/<item_id>/visiblecsrtd|d}t|ƒ}tfdd|Dƒdƒ}|s"tddiƒdfS| dd ¡ |d<t||ƒtd |dd
œƒS) Nrrc3r;r<rrr>rrr@vrAz*api_toggle_item_visible.<locals>.<genexpr>rBrCrDrT)rWr)rrrErrr rFrr>rÚapi_toggle_item_visiblers
2026-07-11 00:34:47 +08:00
rjz/api/items/<category_id>/exportÚGETc
Cz<td|d}t|ƒ}d||t|ƒt ¡ d¡ddœ}tj|ddd }t|d
d d |d
t ¡ d¡did}|WSt yX}zt
dt |ƒiƒdfWYd}~Sd}~ww)u!导出指定分类的所有数æ®rrr9rYz1.0)Útyper7r9ÚcountÚ export_timeÚversionFé)Ú ensure_asciiÚindentzapplication/jsonzContent-Dispositionzattachment; filename=z-export-z %Y%m%d%H%M%S)ÚmimetypeÚheadersrBéôN) rrÚlenrr`raÚjsonÚdumpsrÚ ExceptionrÚstr)r7r8r9Ú export_dataÚjson_strÚresponseÚerrrÚapi_export_items€s* úý ÿrz/api/items/<category_id>/importc
sPztjdkrtd|ddddidœƒWSt ¡}|rd|vr(td d
iƒd fWStj dd ¡}td
2026-07-10 23:59:53 +08:00
|d}t|ƒ}|d}dddgdœ}|D]9‰tfdd|Dƒdƒ}|rt|dkrj|  ˆ¡|dd7<qH|d 
ˆd¡qH| 
ˆ¡|dd7<qHt ||ƒt|ƒWSt }ztd t
2026-07-10 23:59:53 +08:00
|ƒiƒdfWYd}~Sd}~ww)u导入指定分类的数æ®rkz /api/items/z/importrIÚmodeumerge 或 replace)ÚendpointÚmethodÚparamsr9rBu缺少 items 字段iÚmergerrTr)rWÚimportedÚupdatedÚskippedc3s$|]
2026-07-11 00:34:47 +08:00
}|dˆdkr|VqdSr<rr©rGrrr@¬s€"z#api_import_items.<locals>.<genexpr>NÚreplacer†ér‡r=r…ru)rrrrZr5rrrrErfrbr ryrz) r7Ú import_datar€r8r9Úimported_itemsÚresultÚexistingr~rrˆrÚapi_import_items™s4