
    sQj%                         d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZ dZej        d             Zd Zd Zd	 Zd
 Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%dS )    )transaction)timezone)Language)
CollectionCurrencyProductProductCollectionProductLanguageProductOptionProductOptionLanguageProductOptionValueProductOptionValueLanguageSellerShippingCostShippingCostSKUSKUImageSKUOptionValueSKUPrice)"aliexpress_ds_product_get_response,aliexpress_ds_product_wholesale_get_responsec                 r	   t          |           }|                    d          pi }t          |                    d          d          }|st          d          t          j                            |          }t          j                            |          }t          j                            |          }	t          j	                    }
|                    d          pi                     d          p|                    d          }t          j                            d	| d
d
|
|
          }t          j                            |||                    d          |                    d          p|                    d          |
|
           t          j                            ||	|
|
           i }i }t          |          }t          |           }d}|D ]}|                    d          }t           j                            ||t#          |          ndt%          |          |
|
          }t&          j                            ||t)          |                    d          p)|                    d          p|                    d                    t)          |                    d                    |
|
          }g }t          |                    d          d          }|D ]}}t+          |||||
          }t-          |||||
          }t.          j                            |||
|
           |                    d          }|r|dk    r|                    |           ~|s
|dd         }t2                              |          D ]%}t6          j                            |||
|
           &t9          |                    t#          |                    d                                         }|r|t;          |
          }t<          j                            ||t?          |                    d!                    tA          |                    d"                    tA          |                    d#                    t)          |                    d$                    pd%|
|
&           |S )'z7Save an AliExpress product response in the shop models.ae_item_base_info_dtoae_item_sku_info_dtosae_item_sku_info_d_t_oz%productData does not contain SKU data)idproduct_id_converter_resultmain_product_id
product_idali_express_F)keyName	isDigitalisFreecreatedDateupdatedDatesubjectdetailmobile_detail)	productId
languageIdnamedescriptionr#   r$   )r(   collectionIdr#   r$   Nsku_attr )r(   serialstockr#   r$   offer_sale_priceoffer_bulk_sale_price	sku_price)skuId
currencyId	salePriceoriginalPricer#   r$   ae_sku_property_dtosae_sku_property_d_t_o)r4   productOptionValueIdr#   r$   	sku_image0   )r4   imageUrlr#   r$   sku_idfree_shippingmin_delivery_daysmax_delivery_daysshipping_fee_centg        )
skuPriceIdsellerShippingCostIdisFreeShippingminDeliveryDaysmaxDeliveryDayscostr#   r$   )!_getProductResultget	_getItems
ValueErrorr   objectsr   r   r   nowr   creater
   r	   _getProductImages_getFreightBySkur   str	_getStockr   _toFloat_getOrCreateOption_getOrCreateOptionValuer   appenddictfromkeysr   _getDeliveryOption_getSellerShippingCostr   _toBool_toIntOrNone)productDatar5   r)   r,   resultbaseInfoskuDataListcurrencylanguage
collectionrO   r(   product	optionMapoptionValueMapproductImagesfreightBySkusellerShippingCostskuDatar/   skuskuPrice	skuImagesskuPropertiesskuPropertyoptionoptionValuer>   deliveryOptions                                0mama_care_api/ali_express_ds/pms/save_product.pysaveProductrv      s    {++Fzz1228bH

*++  K
  B@AAA##z#22H##z#22H#''<'88J
,..C 
1	2	2	8b==>OPP 	&<<%%  o$$*y** %  G ""\\)$$LL**Khll?.K.K #    $$	 %    IN%f--M#K00L U UZ((k  "("43v;;;"G$$ ! 
 
 #**.// ,;;677,;;{++ 
 #7;;{#;#;<< + 
 
 	!KK.//#
 

 ) 	+ 	+K' F 2 K "))%0	 *    #{33H +HOO  *** 	*%bqb)Ii00 	 	H##!	 $     ,SX!6!67788
 
  	!)%;C%@%@" ''#%7&~'9'9/'J'JKK ,"&&':;;! ! !-"&&':;;! ! n001DEEFFM# (    N    c                 b   t          | t                    st          d          |                     d|           }t          |t                    st          d          t          D ]4}||v r.|                    |          pi                     d          pi c S 5|                    d|          S )Nz productData must be a dictionaryproductJsonz,productData.productJson must be a dictionaryr`   )
isinstancerY   rM   rK   PRODUCT_RESPONSE_KEYS)r_   ry   responseKeys      ru   rJ   rJ      s    k4(( =;<<<//-==Kk4(( IGHHH, L L+%%OOK006B;;HEEKKKK & ??8[111rw   c                     t          | t                    r|| v r| |         } t          | t                    r| S t          | t                    r| r| gS g S N)rz   rY   list)	containeritemKeys     ru   rL   rL      sf    )T"" 'w)';';g&	)T"" )T"" y {Irw   c                 6   |                     d          }t          |                     d          pd          }|d| n|}||vrLt          j                            | |||          }t
          j                            |||||           |||<   ||         S )Nsku_property_idsku_property_namerr   option_)r(   r    r#   r$   )productOptionIdr)   r*   r#   r$   )rK   rS   r   rN   rP   r   )	rf   rd   rq   rg   rO   optionId
optionName	optionKeyrr   s	            ru   rV   rV      s    011H[__%899EXFFJ(0(<$($$$*I	!!&--	 . 
 
 	%,," 	- 	
 	
 	
  &	)Yrw   c                    |                     d          }t          |                     d          pd          }t          |                     d          p|          }|d| n|}| j        |f}	|	|vrMt          j                            | ||||          }
t          j                            |
||||           |
||	<   ||	         S )Nproperty_value_idsku_property_valuevalueproperty_value_definition_namevalue_)r   r    r   r#   r$   )r:   r)   r*   r#   r$   )rK   rS   r   r   rN   rP   r   )rr   rd   rq   rh   rO   valueIdr   	valueNamevalueKeymapKeyrs   s              ru   rW   rW      s     oo122G 455@AAEKOO$DEENOOI%,%8!!!!eHi"F^##(077" 8 
 
 	#*11!, 	2 	
 	
 	
 "-v&!!rw   c                     |                      d          pi                      d          pd}t          |t                    rd |D             S d t          |                              d          D             S )Nae_multimedia_info_dto
image_urlsr.   c                 T    g | ]%}|t          |                                          &S  )rS   strip.0r>   s     ru   
<listcomp>z%_getProductImages.<locals>.<listcomp>  s/    LLL(8LH##%%LLLrw   c                 :    g | ]}||                                 S r   )r   r   s     ru   r   z%_getProductImages.<locals>.<listcomp>  s'    SSS(SHNNSSSrw   ;)rK   rz   r   rS   split)r`   	imageUrlss     ru   rQ   rQ      s|    455;@@NNTRTI)T"" MLLiLLLLSSS^^-A-A#-F-FSSSSrw   c                 p    t          | t                    si S d |                     dg           D             S )Nc                     i | ]b}t          |t                    rK|                    d           ,t          |                    d                     |                    d          cS )r4   NfreightJson)rz   rY   rK   rS   )r   items     ru   
<dictcomp>z$_getFreightBySku.<locals>.<dictcomp>	  sj       dD!! '+hhw&7&7&C 	DHHW 7 7&C&C&Crw   freightResults)rz   rY   rK   )r_   s    ru   rR   rR     sI    k4(( 	 OO$4b99   rw   c                 F   t          | t                    sd S |                     d|           }t          |t                    r|                    d|          ni }t          t          |t                    r|                    d          pi ni d          }|r|d         nd S )N$aliexpress_ds_freight_query_responser`   delivery_optionsdelivery_option_d_t_or   )rz   rY   rK   rL   )r   responser`   optionss       ru   r[   r[     s    k4(( tE{SSH1;Hd1K1KSX\\(H---QSF2<VT2J2JR&	'	'	-2PR G !*71::d*rw   c                     t           j                            d                                          }|r|S t           j                            d| |           S )Nali_express)r    )r    r#   r$   )r   rN   filterfirstrP   )rO   rk   s     ru   r\   r\     sg    +3:: ;  egg   "!!%,, -   rw   c                     |                      d          du rdS |                      d          }||                      d          }t          |          S )N	sku_stockFr   sku_available_stockipm_sku_stock)rK   _toInt)rl   r0   s     ru   rT   rT   +  sR    {{;5((qKK-..E}O,,%==rw   c                 R    	 t          |           S # t          t          f$ r Y d S w xY wr~   )float	TypeErrorrM   r   s    ru   rU   rU   5  s:    U||z"   tt    &&c                 R    	 t          |           S # t          t          f$ r Y dS w xY w)Nr   )intr   rM   r   s    ru   r   r   <  s:    5zzz"   qqr   c                 4    | | dk    rd S t          |           S )Nr.   )r   r   s    ru   r^   r^   C  s     }t%==rw   c                     t          | t                    r| S t          |                                                                           dv S )N)1trueyes)rz   boolrS   r   lowerr   s    ru   r]   r]   I  sC    % u::##%%)===rw   N)&	django.dbr   django.utilsr   basic.modelsr   shop.modelsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r{   atomicrv   rJ   rL   rV   rW   rQ   rR   r[   r\   rT   rU   r   r^   r]   r   rw   ru   <module>r      s   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !                                 &  I I IX2 2 2       0" " "BT T T  
+ 
+ 
+          > > > > >rw   