
    nj 3                       d dl Z d dlmZ d dlmZ d dlZd dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZ d dlZd dlZd d
lmZ d dlZd dlmZ d dlmZ ed        Zed        Z ed        Z!ed        Z"ed        Z#d Z$ed        Z%d Z&ed        Z'ed        Z(ed        Z)ed9d       Z*d Z+d Z,ed        Z-ed        Z.ed9d       Z*ed        Z/ed        Z0ed         Z1ed!        Z2ed"        Z3ed#        Z4 ed$d%d&'      d(e5d)e5d*e5d+e5d,e5d-e5d.e5d/e5d0e5d1e5d2e5d3e5d4e5fd5       Z6 ed$d%d&'      d6        Z7 ed$d%d&'      d7        Z8 ed$d%d&'      d8        Z9y):    N)shared_task)	send_mail)Shop)ProductsSKUSalesUnitProductSelectionProductCategoryProductSubCategory)NotificationStatOrdersPayment)	messaging)credentials)Users)settings)timezone)	timedeltac                    t        j                  d       	 t        j                  j	                  |       j                         }t        j                  j	                         D ]  }|j                  }|j                  }t        j                  j	                  |d      }t        j                  j	                  |d      }t        j                  j	                  |d      }|s|j                  j                  |       nkd}|D ]G  }	t        j                  j	                  |	|      j                         }
|
s5|
j                  dk(  sEd	} n |r|j                  j                  |       |s|j                  j                  |       nkd}|D ]G  }t        j                  j	                  ||      j                         }|s5|j                  dk(  sEd	} n |r|j                  j                  |       |s|j                  j                  |       d}|D ]G  }t        j                  j	                  ||      j                         }|s5|j                  dk(  sEd	} n |s|j                  j                  |        	 t        j                  d       y # t        $ r"}t        j                  d
|        Y d }~<d }~ww xY w)NzCelery job starteduuidVisibleproduct
sku_statusproduct__item_sub_categoryr   product__item_categoryr   Tsku
sales_unitFzCelery Shop Creation : z*Celery Shop Delete Status Change Completed)logginginfor   objectsfilterfirstr   item_sub_categoryitem_categoryr   r!   remover   shop_admin_status	Exceptionerror)shop_idshopsku_productsku_sub_categorysku_categorysku_datasku_sub_category_datasku_category_dataproduct_remove_flagl	sku_salessub_category_remove_flagmsku_sub_category_salescategory_remove_flagnsku_category_saleses                     OC:\Users\Saasvaap\Desktop\Akash\Saasvaap\DEMO\Navya-Bakers\adminportal\tasks.pyshop_add_celery_status_checkr@      s   LL%&]5||""'"288:#++224K*<<&44L{{))+))TH %(KK$6$6Rbox$6$y! !$ 2 2,cl 2 m &&--d3&*#!A 9 A A H HQ[_ H ` f f hI  %66)C27/! " '**11$7 ) ++2248+/(.A-F-N-N-U-UZ[ae .V .gglglgn + .1CCyP7<4! / ,$//66t< %''..t4'+$*A)B)J)J)Q)QVWdh)Q)i)o)o)q&)-??9L380! + ( ++2248o 5x LL=>  5/s3445sD   D!J 9J 	A8J J A9J J J %J 	K#K  Kc           
      f   t        j                  d|         dt        j                   d}dt        j                   dd}| j                  dd      } d	| d
|ddidd|dd|dgdgdd}t        j                  |||      }t        d|j                         t        d|j                         y )Nu'   🔔 WhatsApp Task Triggered | Number: !https://graph.facebook.com/v21.0/	/messagesBearer application/jsonAuthorizationzContent-Type+ whatsapptemplatecodeenbodytexttyperO   rQ   
parametersnamelanguage
componentsmessaging_producttorQ   rK   headersjsonzSTATUS:z	RESPONSE:)r"   r#   r   WHATSAPP_PHONE_NUMBER_IDWHATSAPP_ACCESS_TOKENreplacerequestspostprintstatus_coderO   )numberorderIDrU   template_nameurlr\   payloadresponses           r?   send_whatsapp_messagerk      s     LL:6(CD-h.O.O-PPY
ZC #8#A#A"BC*G ^^C$F (! #!'6!'9#
	G( }}S'@H	)X))*	+x}}%    c                 H   dt         j                   d}dt         j                   dd}| j                  dd      } d| d	d
ddidd|dgddddd|dgdgdd}t	        j
                  |||      }t        j                  d|j                   d|j                          y )NrB   rC   rD   rE   rF   rH   rI   rJ   rK   otp_verificationrL   rM   rN   rO   rP   rR   buttonrh   0rQ   sub_typeindexrS   rT   rX   r[   zOTP WhatsApp Status: z, Response: )
r   r^   r_   r`   ra   rb   r"   r#   rd   rO   )re   otprh   r\   ri   rj   s         r?   send_otp_whatsapp_messageru      s    -h.O.O-PPY
ZC #8#A#A"BC*G
 ^^C$F (& # %+$'# % %  %+$'#	

	"GH }}S'@HLL()=)=(>l8==/Z[rl   c                    t        j                  d       	 dt        j                   d}|j	                  dd      }|j	                  dd      }|j	                  dd      }|j	                  dd      }d	t        j
                   d
d}dd| ddddidd|dd|dd|dgddddd|dgdgdd}	t        j                  ||t        j                  |	            }
|
j                  dk(  r#t        j                  d|
j                          y t        j                  d|
j                   d |
j                          y # t        $ r"}t        j                  d!|        Y d }~y d }~ww xY w)"NzWhatsapp sending via celeryz!https://graph.facebook.com/v17.0/rC   pick_up_addressrI   drop_addressgoogle_place_linkrf   rD   rE   rF   rJ   
individualrK   navya_update_1rL   en_USrN   rO   rP   rR   ro   rh   rp   rq   rT   )rY   recipient_typerZ   rQ   rK   )r\   data   zMessage sent successfully!, zFailed to send message:, z, z Whatsapp Message Sending Error: )r"   r#   r   whatsapp_PHONE_NUMBER_IDgetwhatsapp_ACCESS_TOKENra   rb   r]   dumpsrd   rO   r,   r+   )re   rU   r~   rh   pickup_addressrx   ry   order_idr\   ri   rj   r>   s               r?   "send_whatsapp_message_delivery_boyr     s   LL./@>1(2S2S1TT]^"3R8xx3 HH%8"=88Ir*  'x'E'E&FG.
 ",*(G !' )/(0
 )/(6
 )/(4'$ !)$)!$ )/(9'	
'%+
Z ==gDJJw<OP3&LL7GHMM5h6J6J5K2hmm_]^ >8<==>s   C6D> /D> >	E)E$$E)c                     t        j                  d       t        d|        	 t        | ||||       y # t        $ r"}t        j                  d|        Y d }~y d }~ww xY w)NzEmail sending via celeryzEmail sending via celery to subjectmessage
from_emailrecipient_listfail_silentlyz-Delivery boy assigning Email Sending Failed: )r"   r#   rc   r   r+   )r   r   r   r   r   r>   s         r?   email_sendingr   L  sg    LL+-	((8
9:J'!'!/ -		1
  JDQCHIIJs   6 	A!AA!c                    	 t         j                  j                  |      j                         }t        j                  j                  |       j                         }t
        j                  j                  ||||      }|j                          y # t        $ r"}t        j                  d|        Y d }~y d }~ww xY w)Nr   )SendmsgOrderIDsendToDescriptionz&Notification History Creation Failed: )r   r$   r%   r&   r   r   createsaver+   r"   r#   )OrderNotification_titler   descriptionuserordersnotification_datar>   s           r?   notification_stat_postr   Z  s    }}##6#288:&&e&4::<,44;;DV`fCGVa < c  =aSAB 		s   BB 	B=B88B=c                    t        j                  d       t        ||||       	 t        j                  s*t        j                  d      }t        j                  |       t        j                  t        j                  ||      |||ddt        j                  d      t        j                  dd	it        j                  t        j                  d
t        j                  ||      d                  |       }t        j                   |      }t        j                  d|        y # t        j"                  $ r"}	t        j$                  d|	        Y d }	~	y d }	~	wt        j&                  $ r"}	t        j$                  d|	        Y d }	~	y d }	~	wt        j(                  $ r"}	t        j$                  d|	        Y d }	~	y d }	~	wt        j*                  $ r"}	t        j$                  d|	        Y d }	~	y d }	~	wt        j,                  $ r"}	t        j$                  d|	        Y d }	~	y d }	~	wt.        $ r"}	t        j$                  d|	        Y d }	~	y d }	~	ww xY w)Nznotification sending via celeryj/var/www/html/Testing_prj/Navya-Bakers/constants/navyabakers-1d955-firebase-adminsdk-fbsvc-d2f9578075.json)titlerN   zOrder Update)r   r   rf   rQ   high)priorityzapns-priority10c   default)badgealertsound)aps)r\   ri   )notificationr~   androidapnstokenu$   ✅ Notification sent successfully: zFCM token is no longer valid: zSender ID mismatch: z"Third party authentication error: zQuota exceeded: zInvalid arguments: zError sending notification: )r"   r#   r   firebase_admin_appsr   Certificateinitialize_appr   MessageNotificationAndroidConfig
APNSConfigAPNSPayloadApsApsAlertsendUnregisteredErrorr,   SenderIdMismatchErrorThirdPartyAuthErrorQuotaExceededErrorInvalidArgumentErrorr+   )
fcmTokenr   r   r   r   	OrderUUIDcredr   rj   r>   s
             r?   send_notificationr   i  s   LL239eV[A7:##**}D))$/ ##"// 
 *"&	 ++ %%($/!--! '00u;O'	 1
8 >>'*;H:FG&& <6qc:;; ** 2,QC011(( @:1#>??'' .(,--)) 1+A3/00 :4QC899:sT   DD+ +I>EI1FI$GIG44I
H''I3IIc                  z    t         j                  s+t        j                  d      } t        j                  |        y y )Nr   )r   r   r   r   r   )r   s    r?   initialize_fcm_appr     s7     &&  (U  V%%d+	  rl   c                    ddl m} t        j                  }t        j                  }t        j
                  }t        |      } |||      }	 |j                  j                  |||       }t        j                  d|        t        d|j                   d|        y # t        $ r"}t        j                  d|        Y d }~y d }~ww xY w)Nr   )Client)rZ   from_rN   zTwilio SMS send to z
Twilio SMSz	 send to zTwilio SMS Error: )twilio.restr   r   TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENTWILIO_PHONE_NUMBERstrmessagesr   r"   r#   rc   sidr+   )	rN   to_phoner   account_sid
auth_tokenfromphtwilio_clientr   r>   s	            r?   smsr     s    ",,K++J))F8}H;
3M/((// 0  	*8*56
7;;-y
;< /)!-../s   AB 	C	'CC	c                    t        j                  d       	 t        j                  j	                  |       j                         }t        j                  j	                  |j                  d      }t        j                  j	                  |j                  j                  d      }t        j                  j	                  |j                  j                  d      }t        j                  j                  d      }|D ]  }|s&|j                  j                  j                  |       nud}|D ]G  }t        j                  j	                  ||	      j                         }	|	s5|	j                  dk(  sEd
} n |r%|j                  j                  j                  |       |s0|j                  j                  j                  j                  |       nd}
|D ]G  }t        j                  j	                  ||	      j                         }|s5|j                  dk(  sEd
}
 n |
r/|j                  j                  j                  j                  |       |s1|j                  j                  j                  j                  |       d}|D ]G  }t        j                  j	                  ||	      j                         }|s5|j                  dk(  sEd
} n |s|j                  j                  j                  j                  |        	 t        j                  d       y # t        $ r"}t        j                  d|        Y d }~<d }~ww xY w)Nz%shop availability update task startedidr   r   r   r   -created_atTr   Fz,Shop Admin Status Update from Celery error: z*shop availability status update task ended)r"   r#   r   r$   r%   r&   r   r'   r(   r   order_byr!   r)   r   r*   r+   )sku_idr    r2   r3   r4   shopsr.   r5   jr7   r8   kr:   r;   r6   r=   r>   s                    r?   shop_admin_status_updater     s   LL89TI[[V,224;;%%ckki%P !$ 2 2'*{{'D'D  !3 !"  KK..ckkF_F_:C / E %%m4D&&--d3&*#!A 9 A A H HQTX !I !ZZ_Z_Za  ! %66)C27/! " 'KK**11$7 )--88??E+/(.A-F-N-N-U-UZ[ae .V .gglglgn + .1CCyP7<4! / ,KK11<<CCDI %))44;;DA'+$*A)B)J)J)Q)QVW]a *R *cchchcj ' *-??9L380! + (KK--88??Ew | LL=>  ICA3GHHIsD   EL  L 0BL L B!L 9L 	L 2L 	M$MMc                    t        j                  d       	 t        j                  j	                  |       j                         }t        j                  j	                  |      j                         }t        j                  j	                  |j                  d      }t        j                  j	                  |j                  j                  d      }t        j                  j	                  |j                  j                  d      }|s&|j                  j                  j                  |       nud}|D ]G  }t        j                  j	                  ||	      j                         }	|	s5|	j                  dk(  sEd
} n |r%|j                  j                  j                  |       |s0|j                  j                  j                  j                  |       nd}
|D ]G  }t        j                  j	                  ||	      j                         }	|	s5|	j                  dk(  sEd
}
 n |
r/|j                  j                  j                  j                  |       |s0|j                  j                  j                  j                  |       nd}|D ]G  }t        j                  j	                  ||	      j                         }	|	s5|	j                  dk(  sEd
} n |r/|j                  j                  j                  j                  |       t        j                  d       y # t        $ r"}t        j                  d|        Y d }~<d }~ww xY w)Nz5shop admin status update for shop from celery startedr   r   r   r   r   r   Tr   Fz1sku shop admin status update error from celery : z3shop admin status update for shop from celery ended)r"   r#   r   r$   r%   r&   r   r   r'   r(   r!   r)   r   r*   r+   )r   sales_unit_idr    r!   r/   r3   r4   r5   zr7   product_category_remove_flagr    product_sub_category_remove_flagyr>   s                  r?   &shop_admin_status_update_only_one_shopr      s   LLHIKNkk  f -335\\((m(<BBD
kk(((S # 2 2ckkNkNk>G !3 !I  KK..ckkF_F_:C / E KK""))*5"& 5==DDPZ E \\a\a\c   !22i?.3+ ! #&&--j9 KK%%0077
C+/(&5==DDPZ E \\a\a\c   !22i?7<4 ' ,))44;;JG$KK))44;;JG/3,*5==DDPZ E \\a\a\c   !22i?;@8 + 0--88??
K LLFG  NHLMMNs>   EL )L 9BL L  B L L 6L 	M&MMc                    t        j                  d       	 t        j                  j	                  |       j                         }|r\t        j                  j	                  |d      }|sNt        j                  j	                  |      j                         }|r|j                  j                  |       nd}|D ]G  }t        j                  j	                  ||      j                         }|s5|j                  dk(  sEd} n |rNt        j                  j	                  |      j                         }|rS|j                  j                  |       n6t        j                  j	                  |      j                         }|r|j                  j                  |       nt        j                  j                         D ]  }t        j                  j	                  |d      }|s|j                  j                  |       Bd}|D ]G  }	t        j                  j	                  |	|      j                         }|s5|j                  dk(  sEd} n |r|j                  j                  |       |j                  j                  |        t        j                  d	       y # t        $ r"}
t        j                  d|
        Y d }
~
<d }
~
ww xY w
Nz(category based shop admin status startedr   r   r   Tr   Fz*category based shop admin status started: z&category based shop admin status endedr"   r#   r   r$   r%   r&   r   r	   r!   r)   r   r*   addallr+   r-   category_idr.   r4   update_statusr;   r6   r=   catr9   r>   s              r?   'category_based_shop_admin_status_celeryr   y  `   LL;<8G||""'"288: # 2 2+>G !3 !I$ / 7 7 > >K > P V V X !,,33D9'+$*A)B)J)J)Q)QVWdh)Q)i)o)o)q&)-??9L380! + ($3$;$;$B$B$B$T$Z$Z$\M$%0077=$3$;$;$B$B$B$T$Z$Z$\M$%0044T: '..224$'KK$6$6cBK %7 %M!(NN))$/+/(.-F-N-N-U-UZ[hl-U-m-s-s-u*-1CCyP7< 4 % / ,--d3**40+ 50 LL9;  GA!EFFG2   CJ# 2J# D:J# =J# A J# #	K,K		Kc                    t         j                  j                  |       D ]  }t        j                  j                  |d      }|s|j                  j                  |       Bd}|D ]G  }t        j                  j                  ||      j                         }|s5|j                  dk(  sEd} n |r|j                  j                  |       |j                  j                  |        y )N)category__uuidr   r   Tr   F)
r
   r$   r%   r   r!   r)   r   r&   r*   r   )r   r.   sub_catr3   r8   rr:   s          r?   category_existr     s    %--44K4P # 2 2g>G !3 !I %%%d+'+$*)B)J)J)Q)QVW]a *R *cchchcj ' *-??9L380 + (""))$/""&&t,/ Qrl   c                    t         j                  j                         D ]  }t        j                  j	                  |d      }|s|j
                  j                  |        Bd}|D ]G  }t        j                  j	                  ||       j                         }|s5|j                  dk(  sEd} n |r|j
                  j                  |        |j
                  j                  |         y )Nr   r   Tr   F)r
   r$   r   r   r%   r!   r)   r   r&   r*   r   )r.   r   r3   r8   sr:   s         r?   category_not_existr     s    %--113 # 2 2g>G !3 !I %%%d+'+$*)B)J)J)Q)QVW]a *R *cchchcj ' *-??9L380 + ( ""))$/""&&t,3 4rl   c                 P   t         j                  j                  |       j                         }|r[t        j                  j                  |d      }|sMt
        j                  j                  |      j                         }|r|j                  j                  |       y d}|D ]G  }t        j                  j                  ||      j                         }|s5|j                  dk(  sEd} n |rLt
        j                  j                  |      j                         }|ri|j                  j                  |       y t
        j                  j                  |      j                         }|r|j                  j                  |       y y y y |rt        ||       y t        |       y )Nr   r    product__item_sub_category__uuidr   Tr   F)r   r$   r%   r&   r   r
   r!   r)   r   r*   r   r   r   )	r-   sub_category_idr   r.   r3   r   r8   r   r:   s	            r?   +sub_category_based_shop_admin_status_celeryr     s{   <<g.446D # 2 2-<  !3 !"
 %.66==?=SYY[M((//5'+$*)B)J)J)Q)QVW]a *R *cchchcj ' *-??9L380 + ( 2 : : A A A W ] ] _ !,,33D9 2 : : A A A W ] ] _ !,,006 !	 !% 4 ;-t$rl   c                    t         j                  j                  |       j                         }t        j                  j                  d      }|r|j                  |      }|r|j                  |      }|D ]  }t        j                  j                  |d      }|s|j                  j                  |       Bd}|D ]G  }t        j                  j                  ||      j                         }	|	s5|	j                  dk(  sEd	} n |r|j                  j                  |       |j                  j                  |        y )
Nr   z-created_date)item_category__uuid)r'   r   r   Tr   F)r   r$   r%   r&   r   r   r   r!   r)   r   r*   r   )
r-   r   r   r.   product_listr   sku_productsr5   r/   sku_product_saless
             r?   category_product_listr  1  s   <<g.446D##,,_=L#**{*K#**_*M{{))'i)P%%d+"&+$=$E$E$L$LQ\im$L$n$t$t$v!$(::iG.3+  , #""))$/""&&t,'  rl   c                    t        j                  d       	 t        j                  j	                  |       j                         }|r\t        j                  j	                  |d      }|sNt        j                  j	                  |      j                         }|r|j                  j                  |       nd}|D ]G  }t        j                  j	                  ||      j                         }|s5|j                  dk(  sEd} n |rNt        j                  j	                  |      j                         }|rS|j                  j                  |       n6t        j                  j	                  |      j                         }|r|j                  j                  |       nt        j                  j                         D ]  }t        j                  j	                  |d      }|s|j                  j                  |       Bd}|D ]G  }	t        j                  j	                  |	|      j                         }|s5|j                  dk(  sEd} n |r|j                  j                  |       |j                  j                  |        t        j                  d	       y # t        $ r"}
t        j                  d|
        Y d }
~
<d }
~
ww xY wr   r   r   s              r?   r   r   ^  r   r   c                     t        j                  d       	 t        j                  j	                  |      j                         }t        j                  j	                  |       j                         } t        j                  j	                  | d      }t        j                  j	                  |d      }t        j                  j	                  |d      }t        j                  j	                  |d      }t        j                  j                  d      }|D ]"  }	|r|D ]~  }
t        j                  j	                  |
|		      j                         }|s5|j                  dk(  sE|j                  j                  j                  j                  j!                  |	        n |r|D ]~  }t        j                  j	                  ||		      j                         }|s5|j                  dk(  sE|j                  j                  j                  j                  j!                  |	        n |s| j                  j#                  |	       nkd
}|D ]G  }t        j                  j	                  ||		      j                         }|s5|j                  dk(  sEd} n |r| j                  j#                  |	       |s|j                  j#                  |	       d
}|D ]G  }t        j                  j	                  ||		      j                         }|s5|j                  dk(  sEd} n |s|j                  j#                  |	       % 	 t        j                  d       y # t$        $ r}t        j                  d       Y d }~9d }~ww xY w)NzHmaster product edit category based shop shop admin status change startedr   r   r   r   r   )product__item_category__uuidr   r   r   TFz+master product edit celery task failed: {e}z)master product edit celery task completed)r"   r#   r	   r$   r%   r&   r
   r   r   r   r   r*   r    r   r'   r!   r   r)   r+   )existing_sub_categoryexisting_categoryto_sub_categoryto_categoryr3   r4   to_sku_sub_category_datato_sku_category_datar   r.   to_sku_category_to_sku_category_salesto_sku_sub_category_to_sku_sub_category_salesr8   r   r:   r;   r6   r=   r>   s                        r?   .product_availability_shop_status_change_celeryr    s;    LL[\[D+33::BS:TZZ\ 2 : : A AI^ A _ e e g # 2 2Nc>G !3 !I  KK..FWdm.n $';;#5#5WfAJ $6 $L 
  #{{11{gp1q
 %%m4 D $(<$,E,M,M,T,TYi`d -U -ffkfkfm *,0BBiO155==OOZZ^^_cd! )= (,D(0I0Q0Q0X0X]qdh 1Y 1jjojojq .04FF)S599AASS^^bbcgh! -E )%0077=+/(.A-F-N-N-U-UZ[ae .V .gglglgn + .1CCyP7<4! / ,)44;;DA %!,,33D9'+$*A)B)J)J)Q)QVWdh)Q)i)o)o)q&)-??9L380! + (%0077={ @ LL<=  DBCCDsQ   D=M M %A4M M *BM =M A9M M M  M 	M=M88M=c                 d   t        j                  d       	 t        j                  j	                  |       j                         } t        j                  j	                  |      j                         }t        j                  j	                  | d      }t        j                  j	                  |d      }t        j                  j                  d      }|D ]  }|s|j                  j                  |       nkd}|D ]G  }t        j                  j	                  ||      j                         }|s5|j                  dk(  sEd	} n |r|j                  j                  |       |s| j                  j                  |       d}|D ]G  }t        j                  j	                  ||      j                         }|s5|j                  dk(  sEd	} n |s| j                  j                  |        	 t        j                  d       y # t        $ r}	t        j                  d
       Y d }	~	9d }	~	ww xY w)Nz)master product delete celery task startedr   r   r   r   r   Tr   Fz-master product delete celery task error : {e}z+master product delete celery task completed)r"   r#   r
   r$   r%   r&   r	   r   r   r   r!   r)   r   r*   r+   )
product_sub_categoryproduct_categoryr3   r4   r   r.   r5   r   r7   r>   s
             r?   ;master_product_edit_celery_task_to_update_shop_availabilityr     s   LL<=9F199@@H\@]cce*2299@P9QWWY !$ 2 2Nb>G !3 !I  KK..FVcl.m %%m4D$ ++2248&*#*A 9 A A H HQ[_ H ` f f hI  %66)C27/! + '$//66t<($//66t<&*#.A 9 A A H HQ[_ H ` f f hI  %66)C27/! / '(33::4@K P LL>?  FDEEFs7   DH 1H A8H :H 
H H 	H/H**H/c                    t        j                  d       t        j                  j	                  |       j                         }	 |j                  dk(  rht        j                  j	                  |d      j                         }|r|j                  dkD  rd|_	        nd|_	        nd|_	        |j                          nd|_	        |j                          |j                  rt        j                  j	                  |j                  j                        j                  d       t        j                  j	                  |j                  j                   j"                  	      j                  d       t$        j                  j	                  |j                  j&                  j"                  	      j                  d       nt        j                  j	                  |j                  dd
      }|sEt        j                  j	                  |j                  j                        j                  d       nd}|D ]{  }t        j                  j	                  |d      j                         }|s5t        j                  j	                  |j                  j                        j                  d       d} n |sDt        j                  j	                  |j                  j                        j                  d       t        j                  j	                  |j                  j&                  dd      }|sOt$        j                  j	                  |j                  j&                  j"                  	      j                  d       nd}|D ]  }	t        j                  j	                  |	d      j                         }
|
s5t$        j                  j	                  |j                  j&                  j"                  	      j                  d       d} n |sNt$        j                  j	                  |j                  j&                  j"                  	      j                  d       t        j                  j	                  |j                  j                   dd      }|sOt        j                  j	                  |j                  j                   j"                  	      j                  d       nd}|D ]  }t        j                  j	                  |d      j                         }|s5t        j                  j	                  |j                  j                   j"                  	      j                  d       d} n |sNt        j                  j	                  |j                  j                   j"                  	      j                  d       t        j                  d       y # t(        $ r"}t        j                  d|        Y d }~<d }~ww xY w)N'update sku status long distance startedr   r   r    status   TFlong_distance_availabilityr   r   r   sku_expiry_duration__gtr   r   r  r   r   r  z-long distance sku edit status check failed : z long distance sku edit completed)r"   r#   r   r$   r%   r&   r   r   sku_expiry_durationr  r   r   r   r   updater	   r(   r   r
   r'   r+   )r   r2   sales_unit_datalong_dist_sku_productlong_dist_product_flagr   long_dist_sales_checklong_dist_sku_sub_categorylong_dist_sub_category_flagr   long_dist_sales_check_sublong_dist_sku_categorylong_dist_sku_category_flagxlong_dist_sales_check_catr>   s                   r?   ,update_sku_long_distance_status_check_celeryr.  @  s   LL:;{{!!v!.446HTJ)+7??FF8\eFfllnO//"4:>H7 ;@H7 7<3MMO27H/MMO..##x'7'7':':#;BB^bBc##**0@0@0N0N0S0S*T[[+/ \ 1&&--83C3C3U3U3Z3Z-[bb+/ c 1 %(KK$6$6x?O?O\eOQ %7 %S!(  ''8+;+;+>+>'?FFbgFh).&.A,E,M,M,T,TYZcl,T,m,s,s,u), ((//83C3C3F3F/GNNjnNo15. / .$$++x/?/?/B/B+CJJfkJl *-););+3+;+;+M+MZc(* *< *,& ."**11x7G7G7Y7Y7^7^1_ff/4 g 6 /4+3A0I0Q0Q0X0X]^gp0X0q0w0w0y-0*2299x?O?O?a?a?f?f9gnn7; o =6:3 4 3&..558;K;K;];];b;b5cjj38 k : &)[[%7%7xO_O_OmOmCLfh &8 &j")''..H4D4D4R4R4W4W.X__/4 ` 6 /4+/A0I0Q0Q0X0X]^gp0X0q0w0w0y-0'//66H<L<L<Z<Z<_<_6`gg7; h =6:3 0 3#++228H8H8V8V8[8[2\cc38 d :
 LL35  JDQCHIIJs.   H'W -EW <E"W B#W 	X!W>>Xc                 <   t        j                  d       	 t        j                  j	                  |       j                         }t        j                  j	                  |      j                         }t        j                  j	                  |      j                         }t        j                  j	                  |dd      }|s;t        j                  j	                  |j                        j                  d       nd}|D ]q  }t        j                  j	                  |d	      j                         }	|	s5t        j                  j	                  |j                        j                  d
       d
} n |s:t        j                  j	                  |j                        j                  d       t        j                  j	                  |dd      }
|
s;t        j                  j	                  |j                        j                  d       nd}|
D ]q  }t        j                  j	                  |d	      j                         }|s5t        j                  j	                  |j                        j                  d
       d
} n |s:t        j                  j	                  |j                        j                  d       t        j                  j	                  |dd      }|s;t        j                  j	                  |j                        j                  d       nd}|D ]q  }t        j                  j	                  |d	      j                         }|s5t        j                  j	                  |j                        j                  d
       d
} n |s:t        j                  j	                  |j                        j                  d       t        j                  d       y # t        $ r"}t        j                  d|        Y d }~y d }~ww xY w)Nr  r   r   r   r  r  Fr  r  Tr  r   z delete long distance error endedz'delete sku status long distance Error: )r"   r#   r   r$   r%   r&   r
   r	   r   r   r"  r   r   r+   )sku_product_idsku_sub_category_idsku_category_idr/   r0   r1   r$  r%  ir&  r'  r(  r   r)  r*  r+  r   r-  r>   s                      r?   !long_distance_status_check_celeryr4    s   LL:;<D&&---@FFH-55<<BU<V\\^&..55?5KQQS # 2 2;S\KM !3 !O$##{~~#6==Y^=_%*"*(A(I(I(P(PUV_h(P(i(o(o(q%($$++{~~+>EEaeEf-1* + *  '';>>':AA]bAc &)[[%7%7ScCLfh &8 &j")&&--3C3H3H-IPP+0 Q 2 +0'/,E,M,M,T,TYZcl,T,m,s,s,u),&..55;K;P;P5QXX37 Y 926/ 0 /"**117G7L7L1MTT/4 U 6 "%!3!3<?Hbd "4 "f%##**0A0A*BII+0 J 2 +0'+,E,M,M,T,TYZcl,T,m,s,s,u),#++228I8I2JQQ37 R 926/ , /''..L4E4E.FMM/4 N 678 D>qcBCCDs-   D!O0 9DO0 DO0 BO0 0	P9PPc                    t        j                  d       t        j                  j	                  |dd      }|s1t
        j                  j	                  |      j                  d       nd}|D ]v  }t        j                  j	                  |      j                         }|s4|j                  dk(  sDt
        j                  j	                  |      j                  d	       d	} n |s0t
        j                  j	                  |      j                  d       t        j                  j	                  | dd
      }|s1t        j                  j	                  |       j                  d       nd}|D ]g  }t        j                  j	                  |d      j                         }	|	s5t        j                  j	                  |       j                  d	       d	} n |s0t        j                  j	                  |       j                  d       t        j                  j	                  |      j                         }
t        j                  j	                  |
dd      }|s;t        j                  j	                  |
j                        j                  d       nd}|D ]q  }t        j                  j	                  |d      j                         }|s5t        j                  j	                  |
j                        j                  d	       d	} n |s:t        j                  j	                  |
j                        j                  d       t        j                  j	                  |
j                  dd      }|sEt
        j                  j	                  |
j                  j                        j                  d       nd}|D ]{  }t        j                  j	                  |d      j                         }|s5t
        j                  j	                  |
j                  j                        j                  d	       d	} n |sDt
        j                  j	                  |
j                  j                        j                  d       t        j                  j	                  |
j                  dd      }|sEt        j                  j	                  |
j                  j                        j                  d       nd}|D ]{  }t        j                  j	                  |d      j                         }	|	s5t        j                  j	                  |
j                  j                        j                  d	       d	} n |sDt        j                  j	                  |
j                  j                        j                  d       t        j                  d       y )NzYproduct category sub category change on product edit  long distance status update startedr   r  )r   r   r  r   Fr  )r    T)r  r   r  r  r   r  r  r   zWproduct category sub category change on product edit  long distance status update ended)r"   r#   r   r$   r%   r
   r"  r   r&   r  r	   r   r   r'   r   r(   )r  r  
product_idr'  r(  r3  r)  r*  r+  r-  r   r$  r%  r&  s                 r?   !long_distance_master_product_editr7    s\   LLlm!$!3!3Uj?Hbd "4 "f%""))/D)ELL', 	M 	. ',#+A(A(I(I(P(PUV(P(W(](](_%(,33y@&..55;P5QXX37 Y 926/ , +&&--3H-IPP+0 Q 2 ![[//M^;D^` 0 b!&&,=&>EE', 	F 	. ',#'A(A(I(I(P(PUV_h(P(i(o(o(q%(''..4E.FMM/3 N 5.2+ ( +##**0A*BII+0 J 2 %%:%6<<>GKK..w9GI / K 7::.55QV5W!&&A$=$E$E$L$LQR[d$L$e$k$k$m!$  ''7::'6==Y]=^)-& ' &##wzz#299UZ9[
 "%!3!3wOhOh?Hbd "4 "f%""))w/H/H/M/M)NUU', 	V 	. ',#+A(A(I(I(P(PUV_h(P(i(o(o(q%("**11w7P7P7U7U1V]]/3 ^ 5.2+ , +&&--73L3L3Q3Q-RYY+0 Z 2 ![[//wG\G\;D^` 0 b!&&G,A,A,F,F&GNN', 	O 	. ',#'A(A(I(I(P(PUV_h(P(i(o(o(q%(''..G4I4I4N4N.OVV/3 W 5.2+ ( +##**0E0E0J0J*KRR+0 S 2LLjkrl   c                    t        j                  d       	 t        j                  j	                  |       j                         }t        j                  j	                  |      j                         }t        j                  j	                  |      j                         }t        j                  j	                  |d      }t        j                  j	                  |d      }t        j                  j	                  |d      }t        j                  j                  d      }	|	D ]  }
|s|j                  j                  |
       nkd	}|D ]G  }t        j                  j	                  ||

      j                         }|s5|j                  dk(  sEd} n |r|j                  j                  |
       |s|j                  j                  |
       nkd	}|D ]G  }t        j                  j	                  ||

      j                         }|s5|j                  dk(  sEd} n |r|j                  j                  |
       |s|j                  j                  |
       5d	}|D ]G  }t        j                  j	                  ||

      j                         }|s5|j                  dk(  sEd} n |s|j                  j                  |
        	 t        j                  d       y # t        $ r"}t        j                  d|        Y d }~<d }~ww xY w)Nz.sku delete long distance status update startedr   r   r   r   r   r   r   Tr   Fz!SKU delete Long  Distance Error: z,sku delete long distance status update ended)r"   r#   r   r$   r%   r&   r
   r	   r   r   r   r!   r)   r   r*   r+   )r0  r1  r2  r/   r0   r1   r2   r3   r4   r   r.   r5   r   r7   r8   r   r:   r;   r6   r=   r>   s                        r?   sku_delete_long_distance_celeryr9  H  s   LLABV>&&---@FFH-55<<BU<V\\^&..55?5KQQS;;%%ki%P !$ 2 2'7  !3 !"  KK..l:C / E %%m4D&&--d3&*#!A 9 A A H HQTX !I !ZZ_Z_Za  ! %66)C27/! " '**11$7 ) ++2248+/(.A-F-N-N-U-UZ[ae .V .gglglgn + .1CCyP7<4! / ,$//66t< %''..t4'+$*A)B)J)J)Q)QVW]a *R *cchchcj ' *-??9L380! + ( ++2248w | LL?@  >8<==>sD   E(K!  K! A8K! 	K! A9K! K! #K! ,K! !	L*LLT   
   )bindmax_retriesdefault_retry_delayphone_numberdelivery_partner_namer   pickup_locationcustomer_namecustomer_phonedelivery_addressgoogle_maps_linkorder_amountpayment_modedelivery_slotpickup_timeconfirm_linkc                    t        j                  d|        	 dt        j                   d}dt        j                   dd}|j                  dd      }t        j                  d	|        d
|ddddidd|dd|dd|dd|dd|dd|dd|dd|	dd|
dd|dd|dd|dgdgdd}t        j                  |||      }t        j                  d|j                          t        j                  d|j                          |j                  dk7  r:t        j                  d|j                          t        d|j                         t        j                  d|        d|dS # t        $ rD}t        j                  d| dt        j                                 | j                  |       d!}~ww xY w)"z)Send WhatsApp message to delivery partneruD   🚀 TASK STARTED: send_whatsapp_message_delivery_partner for order rB   rC   rD   rE   rF   rH   rI   u   📱 Sending to: rJ   rK   delivery_boy_assignrL   rM   rN   rO   rP   rR   rT   rX   r[   zWhatsApp Status: zWhatsApp Response: r   u   ❌ WhatsApp API error: WhatsApp API returned u4   ✅ TASK COMPLETED: WhatsApp message sent for order Tsuccessr   u   ❌ WhatsApp task failed: 
excN)r"   r#   r   r^   r_   r`   ra   rb   rd   rO   r,   r+   	traceback
format_excretry)selfr?  r@  r   rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rh   r\   ri   rj   rR  s                      r?   &send_whatsapp_message_delivery_partnerrW    s   $ LLWX`Wabc4"1(2S2S1TT]^&x'E'E&FG.

 $++C4(78 ",-#TN !'%+5JK%+X>%+_E%+]C%+^D%+5EF%+5EF%+\B%+\B%+]C%+[A%+\B'	
: ==gGD()=)=(>?@*8==/:;3&MM4X]]ODE4X5I5I4JKLLKH:VWX66 "23%r):N:N:P9QRSjjSj!!"s   EE1 1	F>:?F99F>c                    t        j                  d|        	 t        j                  d|        d| d| d| d| d| d| d	| d
| d|	 d|
 d| d| d}t        d| |t        j                  |gd       t        j                  d|        d|dS # t
        $ rD}t        j                  d| dt        j                                 | j                  |      d}~ww xY w)zSend email to delivery partneru8   🚀 TASK STARTED: send_delivery_assign_email for order u   📧 Sending to: z
Hello z_,

You have been assigned a new order delivery.

Order Details
-------------
Order ID        : z
Pickup Location : z6

Customer Details
----------------
Customer Name   : z
Customer Phone  : z$

Delivery Address
----------------
z&

Delivery Location
-----------------
u7   

Payment Details
---------------
Order Amount    : ₹z
Payment Mode    : z

Delivery Slot   : z

Delivery Confirmation Link
--------------------------  
Please confirm delivery by clicking the link below once the order is delivered:
zL

Pickup Instruction
------------------
Please reach the pickup location by zc,
collect the payment, and update the delivery status after completion.

Thank you,
Navya Bakeshop
z!New Delivery Assigned | Order ID Fr   u)   ✅ TASK COMPLETED: Email sent for order TrN  u   ❌ Email task failed: rP  rQ  N)
r"   r#   r   r   DEFAULT_FROM_EMAILr+   r,   rS  rT  rU  )rV  r@  r   rA  rD  delivery_locationrB  rC  rF  rG  rH  rI  recipient_emaildeliverylinkr   rR  s                   r?   send_delivery_assign_emailr]    sZ   $ LLKH:VW<"((9:;  * "# $ !/ "!" #       #^ $. ! / "
  % &1M 2K*X 	7zB22+,	
 	@
KLX66 "/uBy7K7K7M6NOPjjSj!!"s   A=B 	C%!?C  C%c                 D   	 t        j                  d|        t        j                  j	                  |      }t
        j                  j                  |      j                         }|j                  dk7  r5|j                  dk7  r&t        j                  d| d|j                          y t        j                  d| d       t        j                  t        j                   d	d
|id      }t        j                  d|j                   d|j                          |j                  dk7  rNd|_        d|_        |j!                  dg       |j!                  dg       t        j"                  d| d       y y # t        j$                  $ r t        j&                  d| d       Y y t        j(                  $ r/}t        j&                  d|        | j+                  |      d }~wt,        $ r,}t        j.                  d       | j+                  |      d }~ww xY w)Nz[CELERY] Checking order )order_ID)orderz	New OrderzBill Createdz[CELERY] Order u    already updated → u"    still New Order → checking Payuzorders/double/verifiy/r   r;  )r]   timeoutz[CELERY] Payu verify response : r   Failedorder_status)update_fieldspayment_statusz marked FAILEDz does not existz[CELERY] Network error: rQ  z[CELERY] Unexpected error)r"   r#   r   r$   r   r   r%   r&   rd  ra   rb   r   DOMAINrd   rO   rf  r   warningDoesNotExistr,   RequestExceptionrU  r+   	exception)rV  r   r`  paymentrj   rR  s         r?   check_and_verify_order_statusrm  E  s   ("/z:;""H"5//((u(5;;= ,1C1C~1ULL?8*4I%J\J\I]^_xj0RST==56h'
 	,X-A-A,B"X]]OT	
 3&!)E%-G"JJn%5J6LL(8'9L:OOohZ~FG '  CzAB$$ "067jjSj!! "57jjSj!!"s1   B)E= ,CE= =,H+H=*G''H3'HHc                 v   t        j                  d|        	 dt        j                   d}dt        j                   dd}t        |      j                  dd      j                  d	d      j                         }t        j                  d
|        t        |xs d      }t        |xs d      }t        |xs d      }t        |xs d      }t        |xs d      }t        |xs d      }t        |xs d      }t        |	xs d      }	t        |
xs d      }
d|ddddidd|dd|dd|dd|dd|dd|dd|dd|	dd|
dg	dgdd}t        j                  d|        t        j                  |||d      }t        j                  d|j                          t        j                  d|j                          |j                  dvrTt        j                  d|j                   d|j                          t        d|j                   d|j                         t        j                  d |        d!||j                         d"S # t        j                  j                   $ r/}t        j                  d#|        | j#                  |$      d%}~wt        j                  j$                  $ r/}t        j                  d&|        | j#                  |$      d%}~wt        $ rG}t        j                  d'| d| d(t'        j(                                 | j#                  |$      d%}~ww xY w))z@
    Send WhatsApp order confirmation message to Shop Owner
    u9   🚀 TASK STARTED: send_whatsapp_order_message for order rB   rC   rD   rE   rF   rH   rI    u"   📱 Sending WhatsApp message to: rJ   rK   orde_confrimed_shopadminrL   rM   rN   rO   rP   rR   rT   rX   u   📦 Payload: r  )r\   r]   ra  u   📨 WhatsApp Status Code: u   📨 WhatsApp Response: )r      u!   ❌ WhatsApp API Error | Status: z | Response: rM  rb  uA   ✅ TASK COMPLETED: WhatsApp message sent successfully for order T)rO  r   rj   u   ⏰ WhatsApp API Timeout: rQ  Nu$   🌐 WhatsApp API Connection Error: u#   ❌ WhatsApp task failed for order rP  )r"   r#   r   r^   r_   r   r`   stripra   rb   rd   rO   r,   r+   r]   
exceptionsTimeoutrU  ConnectionErrorrS  rT  )rV  r?  shop_owner_namer   rB  rC  addresstotal_amountpayment_methoddelivery_modedelivery_timerh   r\   ri   rj   rR  s                   r?   send_whatsapp_order_messager|  r  sr   $ LL
CH:Nk" 0001< 	  'x'E'E&FG.
 <(00b9AA#rJPPR9,HI o34x~2&M/R0^1r2gm$<-2.^1r2M/R0M/R0 ",2D
 !'%+_E%+X>%+]C%+^D%+W=%+\B%+^D%+]C%+]C
'	
8 	~gY/0 ==	
 	283G3G2HIJ/?@ z1MM3H4H4H3I J%]]O-
 ()=)=(>bP  	!
$	
   
 	
 && "23%89jjSj!!.. "<SEBCjjSj!! "1(2cU"##%&(	

 jjSj!!"s1   H9I L81*J L8;*K%%L81AL33L8)N):rS  celeryr   django.core.mailr   r"   shops.modelsr   products.modelsr   r   r   r	   r
   orders.modelsr   r   r   r   r   r   accounts.modelsr   ra   django.confr   r]   django.utilsr   datetimer   r@   rk   ru   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r.  r4  r7  r9  r   rW  r]  rm  r|   rl   r?   <module>r     s     &   i i ; ; $ & !      ! `? `?b '& '&T /\ /\j B> B>L 
J 
J ;: ;:z, / /* W? W?t NH NHp ;< ;<|-@-T '% '%\ - -X ;< ;<z _> _>F <@ <@~ X6 X6v >D >DB dl dlR ZA ZAz $A2>G"G" G" 	G"
 G" G" G" G" G" G" G" G" G" G" ?G"T $A2>O" ?O"f $A2>)" ?)"X $A2>@" ?@"rl   