
    @Wj4                         S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJr  Sr\R.                  S 5       rS rS rS	 rS
 rS rS rS rS r S r!S r"S r#S r$S r%g)    )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           
      t   [        U 5      nUR                  S5      =(       d    0 n[        UR                  S5      S5      nU(       d  [        S5      e[        R
                  R                  US9n[        R
                  R                  US9n[        R
                  R                  US9n	[        R                  " 5       n
UR                  S5      =(       d    0 R                  S5      =(       d    UR                  S5      nUc  [        S
5      eSU 3n[        R
                  R                  5       R                  US9R                  5       nUc"  [        R
                  R                  USSU
U
S9nO#SUl        SUl        Xl        UR%                  SS9  [&        R
                  R                  UUS9R                  5       nUc1  [&        R
                  R                  UUUR                  S5      U
U
S9  O+UR                  S5      Ul        Xl        UR%                  SS9  [*        R
                  R                  UU	S9R-                  5       (       d   [*        R
                  R                  UU	U
U
S9  0 n0 n[/        U5      n[1        U 5      nS	nU GH%  nUR                  S5      nUb  [3        U5      OSn[4        R
                  R                  UUS9R                  5       nUc+  [4        R
                  R                  UU[7        U5      U
U
S9nO&[7        U5      Ul        U
Ul        UR%                  SS9  [;        UR                  S5      =(       d)    UR                  S5      =(       d    UR                  S5      5      [;        UR                  S5      5      S.n[<        R
                  R                  UUS 9R                  5       nUc)  [<        R
                  R                  " S6UUS .UDU
U
S!.D6nO*US"   Ul        US#   Ul         U
Ul        UR%                  S$S9  [B        R
                  R                  US%9RE                  5         [F        R
                  R                  US%9RE                  5         / n[        UR                  S&5      S'5      nU Ht  n[I        UUUUU
5      n[K        UUUUU
5      n[B        R
                  R                  UUU
U
S(9  UR                  S)5      nU(       d  M[  US*:w  d  Mc  URM                  U5        Mv     U(       d  US	S+ n[N        RQ                  U5       H#  n[F        R
                  R                  UUU
U
S,9  M%     [S        UR                  [3        UR                  S-5      5      5      5      nU(       d  GM  Uc  [U        U
5      n[V        R
                  R                  UUS.9R                  5       n [Y        UR                  S/5      5      [[        UR                  S05      5      [[        UR                  S15      5      [;        UR                  S25      5      =(       d    S3S4.n!U c+  [V        R
                  R                  " S6UUS..U!DU
U
S!.D6  GM  U!R]                  5        H  u  n"n#[_        U U"U#5        M     U
U l        U R%                  / U!Ra                  5       QS5P7S9  GM(     U$ )7z7Save 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_idNz)productData does not contain a product idali_express_keyNameF)r!   	isDigitalisFreecreatedDateupdatedDate)r"   r#   r%   update_fields)	productId
languageIdsubject)r(   r)   namer$   r%   r+   r%   )r(   collectionId)r(   r-   r$   r%   sku_attr )r(   serial)r(   r0   stockr$   r%   )r1   r%   offer_sale_priceoffer_bulk_sale_price	sku_price)	salePriceoriginalPrice)skuId
currencyId)r$   r%   r5   r6   )r5   r6   r%   )r7   ae_sku_property_dtosae_sku_property_d_t_o)r7   productOptionValueIdr$   r%   	sku_image0   )r7   imageUrlr$   r%   sku_id)
skuPriceIdsellerShippingCostIdfree_shippingmin_delivery_daysmax_delivery_daysshipping_fee_centg        )isFreeShippingminDeliveryDaysmaxDeliveryDayscostr%    )1_getProductResultget	_getItems
ValueErrorr   objectsr   r   r   nowr   select_for_updatefilterfirstcreater"   r#   r%   saver
   r+   r	   exists_getProductImages_getFreightBySkustrr   	_getStockr1   _toFloatr   r5   r6   r   deleter   _getOrCreateOption_getOrCreateOptionValueappenddictfromkeys_getDeliveryOption_getSellerShippingCostr   _toBool_toIntOrNoneitemssetattrkeys)$productDatar8   r)   r-   resultbaseInfoskuDataListcurrencylanguage
collectionrQ   r(   
productKeyproductproductLanguage	optionMapoptionValueMapproductImagesfreightBySkusellerShippingCostskuDatar0   skupriceValuesskuPrice	skuImagesskuPropertiesskuPropertyoptionoptionValuer?   deliveryOptionshippingCostshippingValuesfieldvalues$                                       ڃ/Users/waleedhassanin/Documents/snowflake_co_dev_github/snow_flake_back_end_deploy/mama_care_api/ali_express_ds/pms/save_product.pysaveProductr      s    {+Fzz128bH

*+ K
 @AA##z#2H##z#2H##''<'8J
,,.C 
1	2	8b==>OP 	&<<%  DEE	{+Joo//1888LRRTG//(( ) 
 "!#IJ%--44 5  eg  &&i( 	' 	
  (||I6&)#+BC$$++ ,  fh 	!!((#	 	) 	
 IN%f-M#K0LZ( & 2Vkk  76 BHHJ;++$$!( % C "'*CI!COHH#;H< "./ ,;;67,;;{+
 &gkk+&>?
 ##** + 
 %' 	 ''.. #   H "-[!9H%0%AH"#&H MMK   	%%C%0779c*113	!KK./#

 )K'F 2K ""))%0	 *  #{3HxHO  *1 )4 %bq)Ii0H##!	 $  1 ,SX!678
 >!)%;C%@"'//66#%7 7  eg 
 #*.*<*<_*M"N#/"&&':;$ $0"&&':;$ !!3!34G!HIPS	N #$$++ '); % !$ # %3$8$8$:LE5L%7 %;+.(!!"IN$7$7$9"I="I " y @ N    c                 V   [        U [        5      (       d  [        S5      eU R                  SU 5      n[        U[        5      (       d  [        S5      e[         H<  nX!;   d  M
  UR                  U5      =(       d    0 R                  S5      =(       d    0 s  $    UR                  SU5      $ )Nz productData must be a dictionaryproductJsonz,productData.productJson must be a dictionaryrk   )
isinstancera   rO   rM   PRODUCT_RESPONSE_KEYS)rj   r   responseKeys      r   rL   rL      s    k4((;<<//-=Kk4((GHH,%OOK06B;;HEKK - ??8[11r   c                     [        U [        5      (       a	  X;   a  X   n [        U [        5      (       a  U $ [        U [        5      (       a
  U (       a  U /$ / $ N)r   ra   list)	containeritemKeys     r   rN   rN      sK    )T""w';&	)T"")T""y{Ir   c                 :   UR                  S5      n[        UR                  S5      =(       d    S5      nUb  SU 3OUnXs;  a  [        R                  R	                  U US9R                  5       nUc!  [        R                  R                  U UUUS9nOXHl        UR                  SS9  [        R                  R	                  UUS	9R                  5       n	U	c"  [        R                  R                  UUUUUS
9  OXil
        XIl        U	R                  SS9  XU'   X7   $ )Nsku_property_idsku_property_namer   option_)r(   r!   )r(   r!   r$   r%   )r%   r&   )productOptionIdr)   )r   r)   r+   r$   r%   r,   )rM   rZ   r   rP   rS   rT   rU   r%   rV   r   r+   )
rr   ro   r   rt   rQ   optionId
optionName	optionKeyr   optionLanguages
             r   r^   r^     sC   01H[__%89EXFJ(0(<'($*I!&&-- . 
 %' 	 >"**11!!	 2 F "%KK&6K7.66==" > 
 %' 	 !!))00 &# 1  #-),&.EF%)r   c                    UR                  S5      n[        UR                  S5      =(       d    S5      n[        UR                  S5      =(       d    U5      nUb  SU 3OUnU R                  U4n	X;  a  [        R                  R                  U US9R                  5       n
U
c"  [        R                  R                  U UUUUS9n
OXjl        XJl	        U
R                  SS	9  [        R                  R                  U
US
9R                  5       nUc"  [        R                  R                  U
UUUUS9  OX{l        XKl	        UR                  SS	9  XU	'   X9   $ )Nproperty_value_idsku_property_valuer   property_value_definition_namevalue_)r   r!   )r   r!   r   r$   r%   )r   r%   r&   )r;   r)   )r;   r)   r+   r$   r%   r,   )rM   rZ   r   r   rP   rS   rT   rU   r   r%   rV   r   r+   )r   ro   r   ru   rQ   valueIdr   	valueNamevalueKeymapKeyr   optionValueLanguages               r   r_   r_   0  sz    oo12G 45@AEKOO$DENOI%,%8y!eHii"F#(0077" 8 
 %' 	 ,44;; &  < K !&&)#+CD8@@GG!, H 
 %' 	 &&..55%0# 6  (1$.1+$$3J$K!,v!!r   c                    U R                  S5      =(       d    0 R                  S5      =(       d    Sn[        U[        5      (       a2  U Vs/ s H$  o"(       d  M  [        U5      R	                  5       PM&     sn$ [        U5      R                  S5       Vs/ s H  o"(       d  M  UR	                  5       PM     sn$ s  snf s  snf )Nae_multimedia_info_dto
image_urlsr/   ;)rM   r   r   rZ   stripsplit)rk   	imageUrlsr?   s      r   rX   rX   d  s    45;@@NTRTI)T""6?Li(8%H##%iLL-0^-A-A#-FS-F(HNN-FSS MSs   
B;B;
C $C c                 &   [        U [        5      (       d  0 $ U R                  S/ 5       Vs0 s HX  n[        U[        5      (       d  M  UR                  S5      c  M.  [        UR                  S5      5      UR                  S5      _MZ     sn$ s  snf )NfreightResultsr7   freightJson)r   ra   rM   rZ   )rj   items     r   rY   rY   k  s    k4((	  OO$4b99DdD! 	8&*hhw&7 	8DHHW 779  s   B	B.Bc                 6   [        U [        5      (       d  g U R                  SU 5      n[        U[        5      (       a  UR                  SU5      O0 n[        [        U[        5      (       a  UR                  S5      =(       d    0 O0 S5      nU(       a  US   $ S $ )N$aliexpress_ds_freight_query_responserk   delivery_optionsdelivery_option_d_t_or   )r   ra   rM   rN   )r   responserk   optionss       r   rc   rc   v  s    k4((E{SH1;Hd1K1KX\\(H-QSF2<VT2J2J&	'	-2PRG !71:*d*r   c                     [         R                  R                  SS9R                  5       nU(       a  U$ [         R                  R	                  SU U S9$ )Nali_expressr    )r!   r$   r%   )r   rP   rS   rT   rU   )rQ   rx   s     r   rd   rd     s\    +33:: ; eg  !!%%,, -  r   c                     U R                  S5      SL a  gU R                  S5      nUc  U R                  S5      n[        U5      $ )N	sku_stockFr   sku_available_stockipm_sku_stock)rM   _toInt)ry   r1   s     r   r[   r[     sB    {{;5(KK-.E}O,%=r   c                 F     [        U 5      $ ! [        [        4 a     g f = fr   )float	TypeErrorrO   r   s    r   r\   r\     s(    U|z"    
   c                 F     [        U 5      $ ! [        [        4 a     gf = f)Nr   )intr   rO   r   s    r   r   r     s(    5zz" r   c                 ,    U b  U S:X  a  g [        U 5      $ )Nr/   )r   r   s    r   rf   rf     s    }%=r   c                     [        U [        5      (       a  U $ [        U 5      R                  5       R	                  5       S;   $ )N)1trueyes)r   boolrZ   r   lowerr   s    r   re   re     s6    %u:##%)===r   N)&	django.dbr   django.utilsr   basic.modelsr   shop.modelsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   atomicr   rL   rN   r^   r_   rX   rY   rc   rd   r[   r\   r   rf   re   rK   r   r   <module>r      s    ! ! !    &  J JZ2' T1"hT
+>r   