
    nj~                    
   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dl 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d	lmZ d d
lZd dlm Z  d dl!m"Z" d dl#m$Z$ d dlm	Z	  G d de      Z% G d de      Z& G d de      Z' G d de      Z( G d de      Z) G d de      Z* G d de      Z+ G d de      Z, G d d e      Z- G d! d"e      Z. G d# d$e      Z/ G d% d&e      Z0 G d' d(e      Z1 G d) d*e      Z2y
)+    )APIView)Responsestatus)IsAuthenticated)QCount)*   )CustomProductCustomProductImageCustomProductVideoDynamicFilteringProductCategoryProductDescriptionProductReviewSalesUnitProductSelectionProductsSKUProductImageSpecialListTagsWishlistYouMayAlsoLike)ProductCategorySerializerN)Shop)UserLocation)get_object_or_404)r   c                       e Zd ZdZd Zy)CategoryListViewz.
    View for listing product categories.
    c                     t         j                  j                         }t        |d      }t	        |j
                  t        j                        S )NT)manyr   )r   objectsallr   r   datar   HTTP_200_OK)selfrequest
categories
serializers       LC:\Users\Saasvaap\Desktop\Akash\Saasvaap\DEMO\Navya-Bakers\products\views.pygetzCategoryListView.get&   s9    $,,002
.zE

0B0BCC    N)__name__
__module____qualname____doc__r,    r-   r+   r    r    !   s    Dr-   r    c                       e Zd Zd Zy)ProductListViewc                 l  ) |j                   j                  d      }|j                   j                  dg       }|j                   j                  dg       }	 |j                  j                  rtt        j
                  j                  |j                        j                         }t        j
                  j                  |j                        j                  dd      }nI|j                   j                  d      }t        j
                  j                  |	      j                         }g }|r|j                  r|j                  j                  }	t        j
                  j                  |	
      j                  d      }
|
D ci c]/  }|j                  r!|j                  j                  |j                   1 }}|r!t"        j
                  j                  |      }nt"        j
                  j%                         }n`|r0t"        j
                  j                  |d      j'                         }n.t"        j
                  j                  d      j'                         }|j                  ddg      j'                         }t(        j
                  j                  |      j'                         }t*        j
                  j                  |      j'                         }|r@t(        j
                  j                  |      }|j                  |      j'                         }|r@t*        j
                  j                  |      }|j                  |      j'                         }i }t,        j
                  j                  t/        d|j                  dd                  t,        j
                  j                  t/        d|j                  dd                  z  t,        j
                  j                  t/        d|            z  t,        j
                  j                  t/        dt0        j
                  j                  |       !            z  }|D ]\  }|r0|j                  r$t0        j
                  j                  |ddg"      }n$t0        j
                  j                  |ddgd#      }|j3                         skt4        j
                  j                  |$      }|j3                         r$|j                         j6                  j8                  nd }|j                  d%      j                         xs  |j                  d%      j                         }|r4|j:                  }|d&}|j<                  }|j>                  }|j@                  }d }|D ]  ))jB                  dk(  r*|jD                  )jF                  j%                         v r)} n)jB                  dk(  r*|jH                  )jJ                  j%                         v r)} nY)jB                  dk(  r |)jL                  j%                         v r)} n*)jB                  dk(  stO        )fd'|D              sɉ)} n |r1|jP                  }tS              d(tS        |d)z        z
  z  d&} | d*}!n} d+}!|jH                  jT                  }"|j                  |jV                  |jX                  |!|| ||D #cg c]D  }#|#j<                  |r'|j                  rj                  |#j                        n|#jZ                  d,F c}#|j                  j                  r|j                  v nd-d.}$|"|vr>|jH                  j\                  r |jH                  j\                  j8                  nd g d/||"<   ||"   j                  d0g       j_                  |$       _ |ja                         D %cg c]+  \  }%}|%|j                  d1d2      |j                  d0g       d3- }}%}tc        d(d4||D &cg c]  }&|&j                  |&jd                  d5 c}&|D 'cg c]  }'|'j                  |'jf                  d5 c}'d6d7th        jj                  8      S c c}w c c}#w c c}}%w c c}&w c c}'w # tl        $ r2}(tc        d9d:to        |(      d;th        jp                  8      cY d }(~(S d }(~(ww xY w)<Ncategory_codetag_idsdynamic_filter_idsuserproductTflatanonymous_idr>   sales_unit__uuidsku)item_category__category_code   )rC   skus__sku_expiry_duration__gtrE   VisibleOut of Stockskus__sku_status__inproducts__inid__intags__indynamicfiltering__inCategoryitem_category
DiscountOnApplicableCategory__inSubCategoryitem_sub_categoryrV   ApplicableSubCategory__inProductrV   ApplicableProduct__inSkuproduct__inrV   ApplicableSku__inr;   sku_status__inr;   re   sku_expiry_duration__gtr;   
sku_status.2fc              3   V   K   | ]   }|j                   j                         v  " y wNApplicableSkur$   .0rB   discounts     r+   	<genexpr>z'ProductListView.post.<locals>.<genexpr>   *      BKOCC8#9#9#=#=#??4   &)r   d   %0%sku_namerj   F
product_idproduct_nameproduct_typeofferprice
offerpriceproduct_imgrz   sku_quantitysku_unitskuswishlist)subcategory_imageproductsr   r    )subcategory_namer   r    Products retrieved successfully!idnametagsdynamic_filtersr   messager%   filtersr   r   An unexpected error occurred.r   r   	exception)9r%   r,   r:   is_authenticatedr   r#   filterfirstr   values_listshopuuidr   select_relatedrB   r   shop_admin_statusr   r$   distinctr   r   Discountr   r   existsr   imageurlsku_mrprz   r   r   rV   rT   ApplicableCategoryrY   ApplicableSubCategoryApplicableProductanyDiscountPercentagefloatsub_category_name	item_nameveg_or_non_veg_statusrj   standard_imageappenditemsr   tag_namefilter_namer   r&   	ExceptionstrHTTP_400_BAD_REQUEST)*r'   r(   r6   r7   r8   user_locationwishlist_itemsr>   resultsshop_idproduct_selections	selectionsku_status_mapr   	tags_listdynamic_filters_listr   r   subcategory_dict	discountsr;   r   product_imagesproduct_image_url	first_skur   r   rz   r   r   applicable_discountdiscount_percentager   r   r   rB   product_infosubcattagr   err   s*                                            @r+   postzProductListView.post-   s   ((9,,""9b1$\\--.BBGY	||,, , 4 4 ; ; ; N T T V!)!1!1!8!8gll!8!K!W!WXahl!W!m&||//? , 4 4 ; ;!- !< !%'  G!3!3',,11%>%F%F%M%M%, &N & .' #
 &8"%7	 }} MM$$i&A&AA%7  " !'//665B  7  H  (//335H !'//665B68  7   hj 
  (//6668  7  hj   &/%@ ' hj  +++BKKMI#3#;#;#B#B% $C $hj ! ||**'*:#??D?9BBD!"2":":"A"A- #B # $??)8 + (*   "   ''#-/7/C/C+$ 0D 0 ""))#02:2F2F/d 3G 3  ""))(K!& ""))#(*-++*<*<*<*R' 8 $ ]%7%7;;-- 'N8S . D ;;-- '(1>'B02 . D
 ;;=%1%9%9%@%@%@%QNLZLaLaLc(<(<(>(D(D(H(Him% y9??A J;;.;AGGI  !"+"3"3#*3-#,#5#5'0'='=#,#5#5 +/'$-$//:= ' 5 5'::>>@!A 3;/!$//=@ ' 9 9'==AAC!D 3;/!$//9< '8+E+E+I+I+K K2:/!%00E9c BKOB ? 3;/!3 %.8 +.A.T.T+(-eEBUX[B[<\8\(]^a'b
#6"7q 9%*
 $'.'@'@'R'R$&-jj(/(9(9(/(E(E!&!&&0'8$,(4$, (,!
 (, -0LLLY^k^p^pn.@.@.Hvy  wE  wE (,! ELLLDaDaGJJ.$@gl%$L, (/?? DK  D]  D]  Dl  DlSZSlSlS{S{SS  rv  DF  >G()9:$%56:::rJQQR^_u $D )9(>(>(@ )A$FH	 )/)16I2)N (Z <
 )A   A#QZ [QZ#!EQZ [h|+}h|^d699fFXFX,Yh|+} 	 )) e"p!" !\+}  	>!$Q
 22 	sx   D,a8 4a6K?a8 6Fa8 <a8 A>a8 A	a#B&a8 >0a(.a8 = a.a8 # a3a8 a8 8	b3'b.(b3.b3Nr.   r/   r0   r   r2   r-   r+   r4   r4   ,   s    ^r-   r4   c                       e Zd Zd Zy)ProductSearchViewc                 R  ) |j                   j                  d      }|j                   j                  dg       }|j                   j                  dg       }	 |j                  j                  rtt        j
                  j                  |j                        j                         }t        j
                  j                  |j                        j                  dd      }nI|j                   j                  d      }t        j
                  j                  |	      j                         }g }t        j
                  j                  t        |
      t        |      z  t        |      z  t        |      z        j                         }	|r|j                  r|j                  j                  }
t        j
                  j                  |
      j!                  d      }|D ci c]/  }|j"                  r!|j"                  j$                  |j&                  1 }}n |	j                  d      j                         }	|	j                  ddg      j                         }	t(        j
                  j                  |	      j                         }t*        j
                  j                  |	      j                         }|r@t(        j
                  j                  |      }|	j                  |      j                         }	|r@t*        j
                  j                  |      }|	j                  |      j                         }	t,        j
                  j                  t        d|	j                  dd                  t,        j
                  j                  t        d|	j                  dd                  z  t,        j
                  j                  t        d|	             z  t,        j
                  j                  t        d!t.        j
                  j                  |	"      #            z  }i }|	D ]  }|r0|j                  r$t.        j
                  j                  |ddg$      }n$t.        j
                  j                  |ddgd%      }|j1                         skt2        j
                  j                  |&      }|j1                         r$|j                         j4                  j6                  nd }|j                  d'      j                         xs  |j                  d'      j                         }|r4|j8                  }|d(}|j:                  }|j<                  }|j>                  }d }|D ]  ))j@                  dk(  r*|jB                  )jD                  jG                         v r)} n)j@                  dk(  r*|jH                  )jJ                  jG                         v r)} nY)j@                  dk(  r |)jL                  jG                         v r)} n*)j@                  d!k(  stO        )fd)|D              sɉ)} n |r1|jP                  }tS              d*tS        |d+z        z
  z  d(} | d,}!n} d-}!|jH                  jT                  }"|j$                  |jV                  |jX                  |!|| ||D #cg c]D  }#|#j:                  |r'|j                  rj                  |#j$                        n|#jZ                  d.F c}#|j                  j                  r|j$                  v nd/d0}$|"|vrg ||"<   ||"   j]                  |$        |j_                         D %	cg c]
  \  }%}	|%|	d1 }}%}	ta        d*d2||D &cg c]  }&|&j$                  |&jb                  d3 c}&|D 'cg c]  }'|'j$                  |'jd                  d3 c}'d4d5tf        jh                  6      S c c}w c c}#w c c}	}%w c c}&w c c}'w # tj        $ r2}(ta        d7d8tm        |(      d9tf        jn                  6      cY d }(~(S d }(~(ww xY w):Nsearch_termr7   r8   r9   r;   Tr<   r>   r?   )item_name__icontains)skus__sku_name__icontains)'item_category__category_code__icontains)/item_sub_category__sub_category_name__icontainsr@   rB   rD   rF   rG   rH   rI   rK   rM   rO   rQ   rS   rT   rU   rX   rY   rZ   r\   r]   r_   r`   rb   rd   rf   rh   ri   rk   c              3   V   K   | ]   }|j                   j                         v  " y wrm   rn   rp   s     r+   rs   z)ProductSearchView.post.<locals>.<genexpr>  rt   ru   r   rv   rw   rx   ry   Fr{   )r   r   r   r   r   r   r   r   r   r   )8r%   r,   r:   r   r   r#   r   r   r   r   r   r   r   r   r   r   r   rB   r   r   r   r   r   r   r   r   r   r   r   rz   r   r   rV   rT   r   r$   rY   r   r   r   r   r   r   r   r   rj   r   r   r   r   r   r   r&   r   r   r   )*r'   r(   r   r7   r8   r   r   r>   r   r   r   r   r   r   r   r   r   r   r   r   r;   r   r   r   r   r   r   rz   r   r   r   r   r   r   r   rB   r   r   r   r   r   rr   s*                                            @r+   r   zProductSearchView.post  s   ll&&}5,,""9b1$\\--.BBGH	||,, , 4 4 ; ; ; N T T V!)!1!1!8!8gll!8!K!W!WXahl!W!m  '||//? , 4 4 ; ;!- !< !%'  G  ''..{3k:;KHI KPQ
 hj  !3!3',,11%>%F%F%M%M%, &N & .' #
 &8"%7	 }} MM$$i&A&AA%7  " $???LUUW&/%@ ' hj  +++BKKMI#3#;#;#B#B% $C $hj ! ||**'*:#??D?9BBD!"2":":"A"A- #B # $??)8 + (*    ''#-/7/C/C+$ 0D 0 ""))#02:2F2F/d 3G 3  ""))(K!& ""))#(*-++*<*<*<*R' :  "# ]%7%7;;-- 'N8S . D ;;-- '(1>'B02 . D
 ;;=%1%9%9%@%@%@%QNLZLaLaLc(<(<(>(D(D(H(Him% y9??A J;;.;AGGI  !"+"3"3#*3-#,#5#5'0'='=#,#5#5 +/'$-$//:= ' 5 5'::>>@!A 3;/!$//=@ ' 9 9'==AAC!D 3;/!$//9< '8+E+E+I+I+K K2:/!%00E9c BKOB ? 3;/!3 %.8 +.A.T.T+(-eEBUX[B[<\8\(]^a'b
#6"7q 9%*
 $'.'@'@'R'R$&-jj(/(9(9(/(E(E!&!&&0'8$,(4$, (,!
 (, -0LLLY^k^p^pn.@.@.Hvy  wE  wE (,! ELLLDaDaGJJ.$@gl%$L* (/??=?()9:$%56==lKq $x )9(>(>(@(@$FH &,B(@  
 A#QZ [QZ#!EQZ [h|+}h|^d699fFXFX,Yh|+} 	 )) o"H! !\+}  	>!$Q
 22 	sx   F
_+  4_I>_+ F_+ _+ .A>_+ ,A	_5A_+ _!_+ 0 _!_+  _&6_+ _+ +	`&4'`!`&!`&Nr   r2   r-   r+   r   r     s    Mr-   r   c                       e Zd Zd Zy)ProductDetailViewc                 |  # 	 t         j                  j                  |      }	 t        j                  j                  |      }|j                  xs d|j
                  xs d|j                  xs d|j                  xs d|j                  xs dd}|j                  j                  d      }|D cg c]  }|j                  j                  |j                  |j                  j                  r|j                  j                  nd d|j                  j                   r|j                  j                   nd |j"                  |j$                  |j&                  |j(                  d }}t*        j                  j                  |	      j-                         }	|j                  j.                  rt0        j                  j                  |j                  
      j3                         }
t4        j                  j                  |j                  
      j7                  dd      }|j                  |v }nKd}|j8                  j                  d      }t0        j                  j                  |      j3                         }
|
r|
j:                  r|
j:                  j                  }t<        j                  j                  |      j?                  d      }|D ci c]/  }|j@                  r!|j@                  j                  |jB                  1 }}tD        j                  j                  |ddg      }|jG                         rtH        j                  j                  |      }|jG                         r$|D cg c]  }|jJ                  jL                   c}ng }|j                  j.                  r|j                  j                  nd|j                  |jN                  |jP                  |jR                  jT                  |jV                  jX                  |jR                  jZ                  ||j\                  |j^                  ||	D cg c]  }|j                  |j`                  d c}||g d}|D ]z  }|jb                  }|jd                  }|jf                  }|jh                  }d }tj        j                  j                  tm        d|jR                  g            tj        j                  j                  tm        d|jV                  g            z  tj        j                  j                  tm        d|g            z  tj        j                  j                  tm        d|g            z  }|D ]  ##jn                  dk(  r*|jR                  #jp                  js                         v r#} n#jn                  dk(  r*|jV                  #jt                  js                         v r#} nY#jn                  dk(  r |#jv                  js                         v r#} n*#jn                  dk(  sty        #fd |D              sɉ#} n |r1|jz                  }t}        |      d!t}        |d"z        z
  z  d#} | d$}!n|d#} d%}!|d&   j                  |j                  |j                  |d#| |||j                  |j                  |!|j                  |j                  d'      |j                  |j                  d(       } t        d!d)|d*t        j                  +      S tH        j                  j                  |      }|jG                         r$|D cg c]  }|jJ                  jL                   c}ng }|j                  j.                  r|j                  j                  nd|j                  |jN                  |jP                  |jR                  jT                  |jV                  jX                  |jR                  jZ                  ||j\                  |j^                  ||	D cg c]  }|j                  |j`                  d c}||g d}t        d,d-|d*t        j                  +      S tD        j                  j                  |ddgd./      }|jG                         rtH        j                  j                  |      }|jG                         r$|D cg c]  }|jJ                  jL                   c}ng }|j                  j.                  r|j                  j                  nd|j                  |jN                  |jP                  |jR                  jT                  |jV                  jX                  |jR                  jZ                  ||j\                  |j^                  ||	D cg c]  }|j                  |j`                  d c}||g d}|D ]k  }|jb                  }|jd                  }|jf                  }|jh                  }d }tj        j                  j                  tm        d|jR                  g            tj        j                  j                  tm        d|jV                  g            z  tj        j                  j                  tm        d|g            z  tj        j                  j                  tm        d|g            z  }|D ]  ##jn                  dk(  r*|jR                  #jp                  js                         v r#} n#jn                  dk(  r*|jV                  #jt                  js                         v r#} nY#jn                  dk(  r |#jv                  js                         v r#} n*#jn                  dk(  sty        #fd0|D              sɉ#} n |r1|jz                  }t}        |      d!t}        |d"z        z
  z  d#} | d$}!n|d#} d%}!|d&   j                  |j                  ||j                  |d#| |||j                  |j                  |!|j                  |j                  |j                  d1       n t        d!d)|d*t        j                  +      S tH        j                  j                  |      }|jG                         r$|D cg c]  }|jJ                  jL                   c}ng }|j                  j.                  r|j                  j                  nd|j                  |jN                  |jP                  |jR                  jT                  |jV                  jX                  |jR                  jZ                  ||j\                  |j^                  ||	D cg c]  }|j                  |j`                  d c}||g d}t        d!d2|d*t        j                  +      S # t        j                  $ r dddddd}Y w xY wc c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w # t         j                  $ r! t        d,d3d4t        j                  +      cY S t        $ r2}"t        d,d5t        |"      d6t        j                  +      cY d }"~"S d }"~"ww xY w)7Nr   rh   r   )IngredientszNutritional InfozAllergen DescriptionzAllergen InfozAdditional InfoT)is_approved )r:   	review_idusernameratingreview_headingreview_text
created_at)r   r9   r;   r<   Fr>   r?   r@   rB   rG   rH   rd   NAr   )user_idr|   r}   r~   product_categoryproduct_subcategoryproduct_category_codereviews	item_codeitem_descriptionimagesr   r   product_descriptionr   rS   rU   rX   rZ   r\   r]   r_   rb   c              3   V   K   | ]   }|j                   j                         v  " y wrm   rn   rp   s     r+   rs   z)ProductDetailView.post.<locals>.<genexpr>w  *      FOSx'='='A'A'C Ctru   r   rv   rk   rw   rx   r   Disabled)sku_idsku_coder   offer_pricer   r   sku_expiry_durationsku_bulk_qty_limitr   rj   same_day_deliverycustomization_availablez'Product details retrieved successfully!r   r   r%   r   r   zNo SKU details retrieved!rD   rf   c              3   V   K   | ]   }|j                   j                         v  " y wrm   rn   rp   s     r+   rs   z)ProductDetailView.post.<locals>.<genexpr>  r   ru   )r   rz   r   r   r   r   r   r   r   r   rj   r   r   z'SKU details not retrieved successfully!Product not found.r   r   r   r   )Mr   r#   r,   r   ingredient_infonutritional_infoallergen_descriptionallergen_infoadditional_infoDoesNotExistr   r   r:   r   r   
first_name	last_namer   r   r   r   r   r   r   r   r   r   r   r%   r   r   r   rB   r   r   r   r   r   r   r   r   rT   category_namerY   r   r6   r   r   r   r   rz   r   r   r   r   rV   r   r$   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   HTTP_404_NOT_FOUNDrj   r   r   r   )$r'   r(   r|   r;   r   description_datar   reviewreview_datar   r   r   wishlist_statusr>   r   r   r   r   r   r   r   product_image_urlsr   r   rB   r   rz   r   r   r   r   r   r   r   r   rr   s$                                      @r+   r   zProductDetailView.post  s   [	&&**j*9G&8&@&@&D&DW&D&U##6#F#F#L"(;(L(L(RPR,?,T,T,ZXZ%8%F%F%L"':'J'J'Pb$   oo,,,>G & &F #KK,,!'=C[[=S=S6;;#9#9Y["\\]w}  xC  xC  xM  xM^d^i^i^s^s  SU  ^V  !W$mm&,&;&;#)#5#5"("3"3 &   ++W+=FFHI ||,, , 4 4 ; ; ; N T T V!)!1!1!8!8gll!8!K!W!WXahl!W!m")**">"'&||//? , 4 4 ; ;!- !< !%'  !3!3',,11%>%F%F%M%M%, &N & .' #
 &8"%7	 }} MM$$i&A&AA%7  " {{))#Y4O *  ;;=%1%9%9%@%@%@%QN *002 7EEnUnE ' 291N1NGLL--TX&-jj(/(9(9(/(E(E,3,A,A,O,O/6/H/H/Z/Z181F1F1T1T#.%,%6%6,3,D,D"4QZ [QZ#!EQZ [$3/? "%$L,  $"%++#&<<'*'7'7#&<< /3+$,,33 !/9<C<Q<Q;R!" '..55 !/<(/(A(A?&!" '..55 !Ywi X" '..55 !/4!"# "2 )2H ( 3 3z A$+$9$9#+#>#>#B#B#D%E 7? 3 % ( 3 3} D$+$=$=#+#A#A#E#E#G%H 7? 3 % ( 3 3y @$+x/I/I/M/M/O$O6> 3 %!)!4!4!=# FOSF C 7? 3 %3 )28 /2E2X2X/-27^q5I\_bIbCc?c-deh,iK':&;1$=E-4SMK$(E$V,33*-&&,/LL.5c]/:0<,47:7N7N696L6L)..<.@.@.T585J5J;>;V;VK  $l $&''P$0
  &11  &2%9%9%@%@%@%QN *002 7EEnUnE ' 291N1NGLL--TX&-jj(/(9(9(/(E(E,3,A,A,O,O/6/H/H/Z/Z181F1F1T1T#.%,%6%6,3,D,D"4QZ [QZ#!EQZ [$3/? "%$L* $&''B$0
  &88  {{))#$-~#>,. * 
 ;;=%1%9%9%@%@%@%QN *002 7EEnUnE ' 291N1NGLL--TX&-jj(/(9(9(/(E(E,3,A,A,O,O/6/H/H/Z/Z181F1F1T1T#.%,%6%6,3,D,D"4QZ [QZ#!EQZ [$3/? "%$L*  $"%++#&<<'*'7'7#&<< /3+$,,33 !/9<C<Q<Q;R!" '..55 !/<(/(A(A?&!" '..55 !Ywi X" '..55 !Use L# ". )2H ( 3 3z A$+$9$9#+#>#>#B#B#D%E 7? 3 % ( 3 3} D$+$=$=#+#A#A#E#E#G%H 7? 3 % ( 3 3y @$+x/I/I/M/M/O$O6> 3 %!)!4!4!=# FOSF C 7? 3 %3 )26 /2E2X2X/-27^q5I\_bIbCc?c-deh,iK':&;1$=E-4SMK$(E$V,33*-&&,4,/LL.5c]/:0<,47:7N7N696L6L)..1nn585J5J;>;V;VE  $h $&''P$0
  &11  &2%9%9%@%@%@%QN *002 7EEnUnE ' 291N1NGLL--TX&-jj(/(9(9(/(E(E,3,A,A,O,O/6/H/H/Z/Z181F1F1T1T#.%,%6%6,3,D,D"4QZ [QZ#!EQZ [$3/? "%$L* $&''P$0
  &11 g &22 #%(*,.%'')$ @" F& !\R F& !\4 F& !\L F& !\  $$ 	3 00   	>!$Q
 22 	s    w A.u:  w 2B4v&E,w 4v!A*w 0v&B.w ; v+F8w w )Cw 4w 6v0B.w  v5!&w A)w 1v:B.w < v?F8w w *C	w 44w (wB.w 3 w	&w :vw v5w 1x;x;	'x60x;6x;Nr   r2   r-   r+   r   r     s    \r-   r   c                       e Zd Zd Zy)SpecialListProductViewc                   " 	 t         j                  j                         }g }d }|j                  j                  rtt
        j                  j                  |j                        j                         }t        j                  j                  |j                        j                  dd      }nL|j                  j                  dd      }|r.t
        j                  j                  |      j                         }t               }t               }|D ]k  }	|	j                  j                         D ]L  }
|j                  |
j                  j                          |j                  |
j"                  j                          N m t$        j                  j                  t'        d|	            t$        j                  j                  t'        d
|            z  t$        j                  j                  t'        d	j                  j                                     z  t$        j                  j                  t'        dt(        j                  j                  |	j                  j                                           z  }|r|j*                  r|j*                  j                   }t,        j                  j                  |      j/                  d      }|D ci c]/  }|j0                  r!|j0                  j2                  |j4                  1 }}|D ]#  }	|	j6                  |	j8                  r|	j8                  j:                  nd |	j<                  r|	j<                  j:                  nd g d}|	j                  j                         D ]  }
t(        j                  j                  |
ddg      }t>        j                  j                  |
      }|jA                         r$|j                         jB                  j:                  nd }|j                  d      j                         xs  |j                  d      j                         }|s|jD                  }||dnd}|jF                  }|jH                  }|jJ                  }d }|D ]  ""jL                  dk(  r*|
j                  "jN                  j                         v r"} n"jL                  d
k(  r*|
j"                  "jP                  j                         v r"} nY"jL                  dk(  r |
"jR                  j                         v r"} n*"jL                  dk(  stU        "fd|D              sɉ"} n |r1|jV                  }tY        |      dtY        |dz        z
  z  d}| d}n|}d}|
j2                  |
jZ                  |
j\                  ||||||||D cg c]+  }|jF                  |j                  |j2                  d       d!- c}|j                  j                  r|
j2                  v nd"d#}|d$   j_                  |        |j_                  |       & n0|D ]*  }	|	j6                  |	j8                  r|	j8                  j:                  nd |	j<                  r|	j<                  j:                  nd g d}|	j                  j                         D ]  }
t(        j                  j                  |
ddgd%&      }t>        j                  j                  |
      }|jA                         r$|j                         jB                  j:                  nd }|j                  d      j                         xs  |j                  d      j                         }|s|jD                  }||dnd}|jF                  }|jH                  }|jJ                  }d }|D ]  ""jL                  dk(  r*|
j                  "jN                  j                         v r"} n"jL                  d
k(  r*|
j"                  "jP                  j                         v r"} nY"jL                  dk(  r |
"jR                  j                         v r"} n*"jL                  dk(  stU        "fd'|D              sɉ"} n |r1|jV                  }tY        |      dtY        |dz        z
  z  d}| d}n|}d}|
j"                  j`                  } |
j2                  |
jZ                  |
j\                  ||||||||D cg c]  }|jF                  |jb                  d! c}|j                  j                  r|
j2                  v nd"d#}|d$   j_                  |        |j_                  |       - te        dd(|d)tf        jh                  *      S c c}w c c}w c c}w # tj        $ r2}!te        d+d,tm        |!      d-tf        jn                  *      cY d }!~!S d }!~!ww xY w).Nr9   r;   Tr<   r>   r   r?   rS   rU   rX   rZ   r\   r]   r_   r`   rb   r@   rB   )special_nameiconbanner_imager   rG   rH   rd   rh   ri   rk   zN/Ac              3   V   K   | ]   }|j                   j                         v  " y wrm   rn   rp   s     r+   rs   z.SpecialListProductView.post.<locals>.<genexpr>  +      J"SWCC8+A+A+E+E+G$GSWru   r   rv   rw   rx   Unknownry   Fr{   r   rD   rf   c              3   V   K   | ]   }|j                   j                         v  " y wrm   rn   rp   s     r+   rs   z.SpecialListProductView.post.<locals>.<genexpr>b  r  ru   z2Special lists and products retrieved successfully!r   r   r   r   r   )8r   r#   r$   r:   r   r   r   r   r   r   r%   r,   setr   addrT   r   rY   r   r   r   r   r   r   rB   r   r   r  r  r   r  r   r   r   r   rz   r   r   rV   r   r   r   r   r   r   r   r   r   r   rj   r   r   r&   r   r   r   )#r'   r(   special_listsr   r   r   r>   category_idssubcategory_idsspecial_listr;   r   r   r   r   r   special_list_datar   r   r   r   r   r   rz   r   r   r   r   r   r   rB   r   r   r   rr   s#                                     @r+   r   zSpecialListProductView.post  s	   a	'//335M G M||,, , 4 4 ; ; ; N T T V!)!1!1!8!8gll!8!K!W!WXahl!W!m&||//C$0$8$8$?$?%1 %@ %eg " 5L!eO -+4488:G $$W%:%:%?%?@ $''(A(A(F(FG  ; !.   ''LQ ""))#02A "")),BWBWB[B[B]^ ""))#++:L:LYeYnYnYrYrYt:L:uv & !3!3',,11%>%F%F%M%M%, &N & .' #
 &8"%7	 }} MM$$i&A&AA%7  " %2L(4(A(A9E9J9J 1 1 5 5PT  ,88 )5599!%$&	)% $0#8#8#<#<#>"{{11$+Y<W  2  
 *6)=)=)D)DW)D)UP^PePePgN,@,@,B,H,H,L,Lmq) !KK9K=CCE N#{{n{EKKM "
 %&/&7&7G8?8KwsmQVE'0'9'9H+4+A+AL'0'9'9H 37/,5$,$7$7:$E(/(=(='/'B'B'F'F'H)I ;C$7$)$,$7$7=$H(/(A(A'/'E'E'I'I'K)L ;C$7$)$,$7$79$D(/83M3M3Q3Q3S(S:B$7$)%-%8%8E%Ac J"SWJ" G" ;C$7$)3 -68  3$7$J$J !4 16eEJ]`cJcDd@d0efi/j
+>*?q(A-2
(, /6jj070A0A070M0M).)..8/@,40<,4 04)"/3 25^M_M_`c`f`fhqMr$s/3)" MTLLLiLiGJJ.,Hot,L$ .j9@@Ne $?j NN#45E %2L %2L(4(A(A9E9J9J 1 1 5 5PT  ,88 )5599!%$&	)% $0#8#8#<#<#>"{{11$+,5~+F46  2   *6)=)=)D)DW)D)UP^PePePgN,@,@,B,H,H,L,Lmq) !KK9K=CCE N#{{n{EKKM "
 %&/&7&7G8?8KwsmQVE'0'9'9H+4+A+AL'0'9'9H 37/,5$,$7$7:$E(/(=(='/'B'B'F'F'H)I ;C$7$)$,$7$7=$H(/(A(A'/'E'E'I'I'K)L ;C$7$)$,$7$79$D(/83M3M3Q3Q3S(S:B$7$)%-%8%8E%Ac J"SWJ" G" ;C$7$)3 -68  3$7$J$J !4 16eEJ]`cJcDd@d0efi/j
+>*?q(A-2
(, !( 9 9 K K - /6jj070A0A070M0M).)..8/@,40<,4 04)"
 04 58LL69nn%& 04)" MTLLLiLiGJJ.,Hot%,L* .j9@@Nu $?z NN#45U %2X S#
 )) s"~)"V)"0  	>!$Q
 22 	ss   Kf 4fD8f >C/f .f A(f +0fFf *C/f f /A>f - fA3f f 	g'g ggNr   r2   r-   r+   r  r    s    br-   r  c                       e Zd Zd Zy)CustomProductListViewc                    	 t         j                  j                         }g }|D ]  }t        j                  j	                  |      j                         }|r|j                  j                  nd }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                   |d
}|j#                  |        t%        dd|dt&        j(                        S # t*        $ r2}t%        ddt-        |      d	t&        j.                        cY d }~S d }~ww xY w)
Ncustom_product)
r|   r}   product_coder   r   min_sizemax_size	size_unitavailabilityr   r   z'Custom products retrieved successfully!r   r   r   r   r   )r   r#   r$   r   r   r   r   r   r   r   r   r   r   r!  r"  r#  r$  r   r   r   r&   r   r   r   )	r'   r(   custom_productscustom_product_listr;   product_imager   r   r   s	            r+   r   zCustomProductListView.post  s@   1	+33779O #%* 2 : : A A#* !B !%'  @MM$7$7$;$;RV! #***$+$5$5$+$5$5+2+C+C-4-J-J ' 0 0 ' 0 0!(!2!2$+$8$8#4  $**<8- +2 H/
 ))   	>!$Q
 22 	s   DD 	E'D>8E>ENr   r2   r-   r+   r  r    s    2r-   r  c                       e Zd Zd Zy)CustomProductDetailViewc                    	 t         j                  j                  |      j                         }|st	        dddt
        j                        S t        j                  j                  |      }t        j                  j                  |      }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                   |j"                  |j$                  |j&                  |D cg c]%  }|j(                  j*                  |j$                  d' c}|D cg c]%  }|j,                  j*                  |j$                  d' c}d	}t	        d
d|dt
        j.                        S c c}w c c}w # t0        $ r2}	t	        ddt3        |	      dt
        j4                        cY d }	~	S d }	~	ww xY w)Nr   r   zCustom product not found.r   r   r  )	image_urlcreated_date)	video_urlr,  )r|   r}   r   descriptionr   r!  r"  r#  r$  r,  updated_dater   videosr   z.Custom product details retrieved successfully!r   r   r   )r   r#   r   r   r   r   r  r   r   r   r   r   r   r   r!  r"  r#  r$  r,  r/  r   r   videor&   r   r   r   )
r'   r(   r|   r  r   r0  r   r1  product_datar   s
             r+   r,   zCustomProductDetailView.get  s   ;	*2299Z9HNNPN!"##> "44  (//66n6UF (//66n6UF -// . 8 8 . 8 8->>)7)M)M*33*33+55 . ; ; . ; ; . ; ; "(!' #(++//5CUCUV!' "(!' #(++//5CUCUV!'!L, O(
 ))   	>!$Q
 22 	sC   AF B=F *F7F =*F'#F 
F 	G'GGGN)r.   r/   r0   r,   r2   r-   r+   r)  r)    s    <r-   r)  c                       e Zd Zd Zy)DeleteReviewViewc                 V   	 |j                   j                  st        dddt        j                        S t
        j                  j                  |      }|j                   |j                   k7  rt        dddt        j                        S |j                          t        dddt        j                        S # t
        j                  $ r! t        dd	dt        j                        cY S t        $ r2}t        dd
t        |      dt        j                        cY d }~S d }~ww xY w)Nr   User not authenticated.r   r   r   z%You can only delete your own reviews.r   zReview deleted successfully!Review not found.r   r   )r:   r   r   r   HTTP_401_UNAUTHORIZEDr   r#   r,   HTTP_403_FORBIDDENdeleter&   r   r  r   r   r   )r'   r(   r   r  r   s        r+   r:  zDeleteReviewView.delete  s   '	<<00 -FG!77 
 #**..).<F {{gll* -TU!44  MMO)GH)) 
 )) 	)<=00 
  	>!$Q
 22 	s/   3B; AB; -B; ;1D(.D(6'D#D(#D(N)r.   r/   r0   r:  r2   r-   r+   r4  r4    s    (r-   r4  c                       e Zd Zd Zy)EditReviewViewc           
         	 |j                   j                  st        dddt        j                        S t
        j                  j                  |      }|j                   |j                   k7  rt        dddt        j                        S |j                  j                  d|j                        }|j                  j                  d|j                        }|j                  j                  d	|j                        }|r|r|st        dd
dt        j                        S ||_
        ||_        ||_        d|_        |j                          t        dd|j                   j                   ||||j"                  ddt        j$                        S # t
        j&                  $ r! t        dddt        j(                        cY S t*        $ r2}t        ddt-        |      dt        j                        cY d }~S d }~ww xY w)Nr   r6  r   r   r   z#You can only edit your own reviews.r   r   r   Missing required fields.Fr   zReview updated successfully!r:   r   r   r   r   r   r7  r   r   )r:   r   r   r   r8  r   r#   r,   r9  r%   r   r   r   r   r   saver   r   r&   r   r  r   r   )r'   r(   r   r  r   r   r   r   s           r+   putzEditReviewView.putH  s   @	<<00 -FG!77 
 #**..).<F {{gll* -RS!44 
 \\%%h>F$\\--.>@U@UVN!,,**=&:L:LMK { -GH!66  #FM$2F!!,F!&FKKM= & 0 0"(*8'2&,&7&7
 ))  )) 	)<=00 
  	>!$Q
 22 	s7   3F AF BF #A.F 1G?G?'G:4G?:G?N)r.   r/   r0   rA  r2   r-   r+   r<  r<  G  s    Ar-   r<  c                       e Zd Zd Zy)AddReviewViewc           
      @   	 t         j                  j                  |      }|j                  j                  st        dddt        j                        S |j                  }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|r|r|st        dd	dt        j                        S t        |||||
      }|j                          t        dd|j                  ||||j                  ddt        j                        S # t         j                  $ r! t        dddt        j                         cY S t"        $ r2}	t        ddt%        |	      dt        j                        cY d }	~	S d }	~	ww xY w)Nr   r   r6  r   r   r   r   r   r>  )r;   r:   r   r   r   r   zReview added successfully!r?  r   r   r   r   )r   r#   r,   r:   r   r   r   r8  r%   r   r   r@  r   r   HTTP_201_CREATEDr   r  r   r   )
r'   r(   r|   r;   r:   r   r   r   r  r   s
             r+   r   zAddReviewView.post  s   =	&&**j*9G <<00 -FG!77 
 <<D\\%%h/F$\\--.>?N!,,**=9K { -GH!66  #-'F KKM; $		"(*8'2&,&7&7
 ..  $$ 	)=>00 
  	>!$Q
 22 	s2   AD0 B D0 AD0 01F#F+'FFFNr   r2   r-   r+   rC  rC    s    >r-   rC  c                       e Zd Zd Zy)AddToWishlistViewc                    	 t         j                  j                  |      }|j                  j                  st        dddt        j                        S |j                  }t        ||      }|j                          t        dddt        j                        S # t         j                  $ r! t        dd	dt        j                        cY S t        $ r2}t        dd
t        |      dt        j                        cY d }~S d }~ww xY w)Nr   r   r6  r   r   r:   r;   r   z'Product added to wishlist successfully!r   r   r   )r   r#   r,   r:   r   r   r   r8  r   r@  rE  r   r  r   r   r   r'   r(   r|   r;   r:   wishlist_itemr   s          r+   r   zAddToWishlistView.post  s    	&&**j*9G<<00 -FG!77 
 <<D$$@M )RS.. 
 $$ 	)=>00 
  	)HWZ[\W]^22 	s+   AB AB 1D
D
'D?D
D
Nr   r2   r-   r+   rG  rG    s    r-   rG  c                       e Zd Zd Zy)RemoveFromWishlistViewc                 ^   	 t         j                  j                  |      }|j                  j                  st        dddt        j                        S |j                  }t        j                  j                  ||      j                         }|j                          t        dddt        j                        S # t         j                  $ r! t        dd	dt        j                        cY S t        $ r2}t        dd
t!        |      dt        j"                        cY d }~S d }~ww xY w)Nr   r   r6  r   r   rI  r   z+Product removed from wishlist successfully!r   r   r   )r   r#   r,   r:   r   r   r   r8  r   r   r   r:  r&   r   r  r   r   r   rJ  s          r+   r   zRemoveFromWishlistView.post  s   	&&**j*9G<<00 -FG!77 
 <<D$,,33w3OUUWM  ")VW)) 
 $$ 	)=>00 
  	)HWZ[\W]^22 	s+   AB? A(B? ?1D,2D,:'D'!D,'D,Nr   r2   r-   r+   rM  rM    s    r-   rM  c                       e Zd Zd Zy)WishlistListViewc                     	 |j                   j                  d      }|j                  }|j                  j                  r9t        j
                  j                  |j                        j                         }n.t        j
                  j                  |      j                         }t        j
                  j                  |      j                  d      }|j                         st        dddt        j                        S g }|D ]  }|j                  }d	}	g }
|r|j                  r}|j                  j                   }t"        j
                  j                  ||j$                  d
dgd
      j'                         }|D ]  }|
j)                  |j*                          |
rd}	nd	}	nt"        j
                  j                  d|j$                  d
dg      j'                         }|D ]  }|
j)                  |j*                          |
rd}	n_d	}	t"        j
                  j                  |j$                  d
dg      j'                         }|D ]  }|
j)                  |j*                          t,        j
                  j                  |      }|j                         r$|j                         j.                  j0                  nd }|	r$|
d   }|j2                  }|d}|j4                  }|j6                  }|j8                  }d }t:        j
                  j                  t=        d|j>                  g      t=        d|j@                  g      z  t=        d|g      z  t=        dtB        j
                  j                  |            z        }|D ]    jD                  dk(  r&|j>                   jF                  jI                         v s jD                  dk(  r&|j@                   jJ                  jI                         v sP jD                  dk(  r| jL                  jI                         v s% jD                  dk(  stO         fd|
D              s } n |r1|jP                  }tS        |      dtS        |dz        z
  z  d}| d}n|}d}|j$                  |jT                  |jV                  ||||||||
D cg c]  }|j4                  |jX                  d  c}|	d!}|j)                  |       |
s|
d   }|j2                  }|d}|j4                  }|j6                  }|j8                  }d }t:        j
                  j                  t=        d|j>                  g      t=        d|j@                  g      z  t=        d|g      z  t=        dtB        j
                  j                  |            z        }|D ]    jD                  dk(  r&|j>                   jF                  jI                         v s jD                  dk(  r&|j@                   jJ                  jI                         v sP jD                  dk(  r| jL                  jI                         v s% jD                  dk(  stO         fd"|
D              s } n |r1|jP                  }tS        |      dtS        |dz        z
  z  d}| d}n|}d}|j$                  |jT                  |jV                  ||||||||
D cg c]  }|j4                  |jX                  d  c}|	d!}|j)                  |        t        dd#|d$t        j                        S c c}w c c}w # tZ        $ r2}t        dd%t]        |      d&t        j^                        cY d }~S d }~ww xY w)'Nr>   r9   r?   r;   r   zNo products in wishlist.r   r   FrG   rH   )rA   sku__product__idsku__sku_status__inr   TrD   )sku__sku_expiry_duration__gtrR  rS  )rR  rS  rh   rk   rS   rU   rX   rZ   r\   r]   r_   rb   c              3   V   K   | ]   }|j                   j                         v  " y wrm   rn   rp   s     r+   rs   z(WishlistListView.post.<locals>.<genexpr>  s+      EQKOCC8#9#9#=#=#??4ru   r   rv   rw   rx   ry   )r|   r}   r~   r   r   r   r   rz   r   r   r   product_availablec              3   V   K   | ]   }|j                   j                         v  " y wrm   rn   rp   s     r+   rs   z(WishlistListView.post.<locals>.<genexpr>  s+      IUOSx'='='A'A'C Ctru   z Wishlist retrieved successfully!r   r   r   )0r%   r,   r:   r   r   r#   r   r   r   r   r   r   r   r&   r;   r   r   r   r   r   r   rB   r   r   r   r   rz   r   r   r   r   rT   rY   r   rV   r   r$   r   r   r   r   r   r   r   rj   r   r   r   )!r'   r(   r>   r:   r   r   r   rK  r;   rV  r   r   
skus_salesisku_inactivejr   r   r   r   r   rz   r   r   r   r   r   r   r   rB   r   r   rr   s!                                   @r+   r   zWishlistListView.post  s   [	"<<++N;L<<D ||,, , 4 4 ; ; ; N T T V , 4 4 ; ;!- !< !%'  &--44$4?NNyYN
 "((* -GH!-- 
 G "0'//$)! !]%7%7+0055G!:!B!B!I!I)0WZZfoq  fA,5 "J " hj 
 (AEE* ( ,0) -2) ";!B!B!I!Igi  }D  }G  }G  ]f  hv  \w!I  "x  "A  "A  "CJ'AEE* ( ,0) -2)'@'H'H'O'Oahakak  BK  M[  A\'O  (]  (f  (f  (h!-A KK. ".
 ".!5!5!<!<W!<!MHVH]H]H_N$8$8$:$@$@$D$Dei! % !%QI'//G&smE(11H#,#9#9L(11H +/' ( 0 0 7 7ZI^I^H_`]wOhOhNijkYwiPQ Uckk>P>PY`>P>abc!I %. ( 3 3z AgF[F[_g_z_z_~_~  `A  GA ( 3 3} DIbIbfn  gE  gE  gI  gI  gK  JK ( 3 3y @WPXPjPjPnPnPpEp ( 3 3u < EQKOEQ BQ 3;/! %. +.A.T.T+(-eEBUX[B[<\8\(]^a'b
#6"7q 9%*
 $ '.jj(/(9(9(/(E(E!&!&&0'8$,(4$, (,!
 (, -0LL.1nn (,! .?%$L( NN<0 $(G	"+"3"3#*3-#,#5#5'0'='=#,#5#5.2+$,$4$4$;$;WMbMbLcdSZSlSlRmno7)TU #++BTBT]dBTBefg%	 )2H$,$7$7:$E'J_J_ckc~c~  dC  dC  dE  KE$,$7$7=$HWMfMfjr  kI  kI  kM  kM  kO  NO$,$7$79$DT\TnTnTrTrTtIt$,$7$75$@S IUOSIU FU 7? 3 % )2 /2E2X2X/,1%LAFY\_F_@`<`,abe+fJ':&;1$=E).J$(E +2**,3,=,=,3,I,I%*%**4+<(0,8(0 ,0%
 ,0C 1425..!" ,0% 2C%((  |4S "0\ A#
 )) Q!t%.  	)HWZ[\W]^22 	sd   D \8 L+\8 0\8 A(\8 - \.\8 *E-\8 \8 -A(\8  \358\8 .
\8 8	]3'].(]3.]3Nr   r2   r-   r+   rP  rP    s    \r-   rP  c                       e Zd ZdZd Zy)AlsoBoughtViewzI
    View to list all discounts with DiscountName and StandardImage.
    c                 ~  A |j                   j                  d      }|j                   j                  dg       }|j                   j                  dg       }|j                   j                  d      }	 |j                  j                  rtt        j
                  j                  |j                        j                         }t        j
                  j                  |j                        j                  dd      }	n.t        j
                  j                  |	      j                         }d
}
|r|j                  r|j                  }d}
g }g }g }|r^t        j
                  j                  |      j                         }|rI|j                  j                         D ],  }|j                  |vs|j                  |j                         . t         j
                  j                  |      }g }|D ]'  }|j                  |j"                  j$                         ) t'        t)        |            }t*        j
                  j                  |      }g }|D ]  }|j                  |j$                          t         j
                  j                  |      j-                  |      j-                  d      }|j/                  d      j1                  t3        d            j5                  d      }g }|D ]  }|j                  |d           |
dk(  r|D ]  }t6        j
                  j                  |      j                         }t8        j
                  j                  |      j                         }|rs|j:                  dk(  s|j:                  dk(  rU|j<                  j                  |vr=|j<                  j                  |vr%|j                  |j<                  j                         t?        |      dk(  s n n|D ]  }t6        j
                  j                  |d      j                         }|rU|j<                  j                  |vr=|j<                  j                  |vr%|j                  |j<                  j                         t?        |      dk(  s n ||z   }||v rW|jA                  |       nD|j                  j                  r|j                  }	 tC        tD        |      }n$|stG        dddd !      S 	 tC        tD        |	      }tJ        j
                  j                  |#      }g } g }!|D ]  }"|"jL                  }#| j                  |#       |#j<                  j                  }$t        j
                  j                  |$$      j                         }|rI|j                  j                         D ],  }|j                  |vs|j                  |j                         . |$|!vs|!j                  |$        t'        t)        |             } t         j
                  j                  | %      }g }|D ]'  }|j                  |j"                  j$                         ) t'        t)        |            }t*        j
                  j                  |      }g }|D ]  }|j                  |j$                          t         j
                  j                  |      j-                  | %      j-                  |!&      }|j/                  d      j1                  t3        d            j5                  d      }g }|D ]  }|j                  |d           |
dk(  r|D ]  }t6        j
                  j                  |      j                         }t8        j
                  j                  |      j                         }|rs|j:                  dk(  s|j:                  dk(  rU|j<                  j                  |vr=|j<                  j                  |vr%|j                  |j<                  j                         t?        |      dk(  s n n|D ]  }t6        j
                  j                  |d      j                         }|rU|j<                  j                  |vr=|j<                  j                  |vr%|j                  |j<                  j                         t?        |      dk(  s n ||z   }|!D ]  }%|%|v s|jA                  |%        |r|j                  r|j                  j$                  }t8        j
                  j                  |'      jO                  d      }&|&D 'ci c]/  }'|'jL                  r!|'jL                  j                  |'j:                  1 }(}'tP        j
                  j                  |(      j                         })n/tP        j
                  j                  d|)      jS                         })|)j                  ddg*      jS                         d d+ })tT        j
                  j                  |),      jS                         }*tV        j
                  j                  |),      jS                         }+|r@tT        j
                  j                  |(      },|)j                  |,-      jS                         })|r@tV        j
                  j                  |(      }-|)j                  |-.      jS                         })tX        j
                  j                  t[        d/|)j                  d0d      1            tX        j
                  j                  t[        d2|)j                  d3d      4            z  tX        j
                  j                  t[        d5|)6            z  tX        j
                  j                  t[        d7t6        j
                  j                  |)8      9            z  }.g }/|)D ]  }|r0|j                  r$t6        j
                  j                  |ddg:      }0n$t6        j
                  j                  |ddgd;      }0|0j]                         skt^        j
                  j                  |$      }1|1j]                         r$|1j                         j`                  jb                  nd }2|0j                  d<      j                         xs  |0j                  d<      j                         }3|3r4|3jd                  }4|4d=}5|3jf                  }6|3jh                  }7|3jj                  }8d }9|.D ]  AAjl                  d/k(  r*|jn                  Ajp                  j                         v rA}9 nAjl                  d2k(  r*|jr                  Ajt                  j                         v rA}9 nYAjl                  d5k(  r |Ajv                  j                         v rA}9 n*Ajl                  d7k(  sty        Afd>|0D              sɉA}9 n |9r1|9jz                  }:t}        5      d?t}        |:d@z        z
  z  d=};|: dA}<n5};dB}<|j                  |j~                  |j                  |<|5|;|2678|0D #cg c]D  }#|#jf                  |r'|j                  r(j                  |#j                        n|#j                  dCF c}#|j                  j                  r|j                  	v ndDdE}=|/j                  |=        tG        d?dF|/|*D >cg c]  }>|>j                  |>j                  dG c}>|+D ?cg c]  }?|?j                  |?j                  dG c}?dHdIt        j                  !      S #  tG        dd|jH                   d      cY S xY w#  tG        dd"| d      cY S xY wc c}'w c c}#w c c}>w c c}?w # t        $ r2}@tG        ddJt        @      dKt        j                  !      cY d }@~@S d }@~@ww xY w)LNr|   r7   r8   r>   r9   r;   Tr<   r?   zLong Distancer   )product__id)sku__product_id)uuid__in)	order__inr   )sku__sku_statusrB   )countz-countr   )
sales_unitrB   rG   rH   
   rD   )r   rg   r   zCart not found for user : r   zAnonymous ID is required.i  r   z"Cart not found for anonymous_id : )cartrh   )sku__in)sku__product_id__inr@   rM   )rE   rN   rI      rK   rO   rQ   rS   rT   rU   rX   rY   rZ   r\   r]   r_   r`   rb   rd   rf   ri   rk   c              3   V   K   | ]   }|j                   j                         v  " y wrm   rn   rp   s     r+   rs   z&AlsoBoughtView.post.<locals>.<genexpr>A  s*      BOSx'='='A'A'C Ctru   r   rv   rw   rx   ry   Fr{   r   r   r   )r   r   r   r   r   r   )Ir%   r,   r:   r   r   r#   r   r   r   r   r   r   liked_productsr$   r   r   OrderProductsorderr   listr  Ordersexcludevaluesannotater	   order_byr   r   r   r;   lenremover   Cartr   r  CartItemrB   r   r   r   r   r   r   r   r   r   r   r   r   rz   r   r   rV   rT   r   rY   r   r   r   r   r   r   r   rj   r   r   r   r&   r   r   r   )Br'   r(   argskwargsr;   r7   r8   r>   r   r   
order_typer   r   r|   people_also_like_listyou_may_likeliked_productorder_product_list
order_listordersorder_numbersrn  orders_commoncommon_productssku_product_listsku_productrY  product_skusales_unit_statusr:   rg  
cart_itemssku_listproduct_id_listitemrB   product_id_skuproduct_existr   r   r   r   r   r   r   r   r   product_listr   r   r   r   r   r   rz   r   r   r   r   r   r   r   r   r   r   rr   sB                                                                    @r+   r   zAlsoBoughtView.post  s   ,,""<0,,""9b1$\\--.BBG||''7E	||,, , 4 4 ; ; ; N T T V!)!1!1!8!8gll!8!K!W!WXahl!W!m , 4 4 ; ;!- !< !%'  )J!3!3',,#
GJ$&!-55<<<QWWY)5)D)D)H)H)J(++3HH1889I9IJ *K &3%:%:%A%ARY%A%Z"
0F%%fll&7&78 1
 "#j/2
..
.C "#E!((4 $ !. 5 5 < <} < U ] ]nu ] v ~ ~  S] ~  !^ $1$*F5M$,H5<H$@%-Xh%7   $& #2K$++K,>? $3 '-&)kk&8&8A&8&>&D&D&F,E,M,M,T,T`gmx,T,y,,  -B),0BBiOSdSvSv  {I  TI#.#6#6#9#9#KP[PcPcPfPf  oD  QD$.$5$5k6I6I6L6L$Mz?b0! . .&)kk&8&8AY[&8&\&b&b&d&*2255ZGKL_L_LbLbjL * 1 1$/$7$7$:$:!< z?b0! . 3Z?
j(%%g. <<00"<<Dr0DA
 (''(5PQ#&  v0lS &--44$4?
 "$&D((COOC(%([[^^N#1#9#9#@#@#@#X#^#^#`L#-9-H-H-L-L-NM,//7LL 5 < <]=M=M N .O &_<'//? '  H.%2%:%:%A%A(%A%S"
0F%%fll&7&78 1
 "#j/2
..
.C "#E!((4 $ !. 5 5 < <} < U ] ]fn ] o w w  M\ w  !] $1$*F5M$,H5<H$@%-Xh%7   $& #2K$++K,>? $3 '-&)kk&8&8A&8&>&D&D&F,E,M,M,T,T`gmx,T,y,,  -B),0BBiOSdSvSv  {I  TI#.#6#6#9#9#KP[PcPcPfPf  oD  QD$.$5$5k6I6I6L6L$Mz?b0! . .&)kk&8&8AY[&8&\&b&b&d&*2255ZGKL_L_LbLbjL * 1 1$/$7$7$:$:!< z?b0! . 3Z?
%4M$
2"))-8 &5 !3!3',,11%>%F%F%M%M%, &N & .' #
 &8"%7	 }} MM$$i&A&AA%7  "
 $++22J2GKKM $++22QS^h2irrtY<WXaacdfefgH+++BKKMI#3#;#;#B#B% $C $hj ! ||**'*:#??D?9BBD!"2":":"A"A- #B # $??)8 + (*  $$++'13;3G3G /d 4H 4 &&--,.6.B.B+$ /C /  &&--YhG!& &&--$&)kk&8&8X&8&N' 8 L# ]%7%7;;-- 'N8S . D ;;-- '(1>'B02 . D
 ;;=%1%9%9%@%@%@%QNLZLaLaLc(<(<(>(D(D(H(Him% !KK9K=CCE N#{{n{EKKM  !"+"3"3#*3-#,#5#5'0'='=#,#5#5 +/'$- ( 3 3z A$+$9$9#+#>#>#B#B#D%E 3;/! ( 3 3} D$+$=$=#+#A#A#E#E#G%H 3;/! ( 3 3y @$+x/I/I/M/M/O$O2:/!%00E9c BOSB ? 3;/!3 %.8 +.A.T.T+(-eEBUX[B[<\8\(]^a'b
#6"7q 9%*
 $ '.jj(/(9(9(/(E(E!&!&&0'8$,(4$, (,! (,	 -0LL/<ASAS /=.@.@$'FF/,Y\YgYg
 (,! ELLLDaDaGJJ.$@gl'$L. !''5q $z A ,QZ [QZ#!EQZ [,@,B,@ _e699fFXFX,Y,@,B 		 )) Yr'1C]^b^m^m]nAo(pqqv'!Bdeqdr@s(tuuP"N!. !\,B  	>!$Q
 22 	s   1D:~ ,I~ 0B~ A~ |3 "~ 6} B7~ ?!~ !I~ /B~ ~ A*~ 	4}-=J>~ <F~ ~ A(~ ?A	}2A
~  }72~ 8 }<~ 3}~ ~ }*(~ *~ 	~<
'~71~<7~<N)r.   r/   r0   r1   r   r2   r-   r+   r]  r]    s    Kr-   r]  )3rest_framework.viewsr   rest_framework.responser   rest_frameworkr   rest_framework.permissionsr   django.db.modelsr   r	   orders.modelsmodelsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   serializersr   
googlemapsshops.modelsr   accounts.modelsr   django.shortcutsr   r    r4   r   r   r  r  r)  r4  r<  rC  rG  rM  rP  r]  r2   r-   r+   <module>r     s   ( , ! 6 %     " 3   ( . Dw D_g _DN Nb] ]@cW cL	3G 3l=g =@)w )XBW BJ?G ?D D W  D]w ]@PW Pr-   