o
    6A5hu>                    @   s  d dl mZmZ d dlmZmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d d	lmZ d d
lZd d
lZd d
lZd d
lZd d
lZd dlmZ d dlmZm Z m!Z! d d
l"Z"d d
l#Z#d dl m$Z$ d dl%m&Z& d dl'm(Z(m)Z) d dl*m+Z+ d dl,m!Z! d dl-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW d dlXmYZYmZZZm[Z[ d dl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZi d dljT d dlkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZu d dlvmwZw d dlxmyZy d d
lzZzd d
l{Z{d dlm|Z| d dl}m~Z~mZ d dlmZ d d lmZ d d!lmZ d d"lmZmZmZ d d#lmZ d d$lmZ d d
l"Z"d d%lmZ d d
lZd dl%m&Z& d dlvmwZw d d lmZ d d&lmZ d d'lmZ d d(lmZ d d)lvmZ d d
lZd d*ljmZ d&d,d-Zd.d/ Zd0d1 Ze
e	eg d2d3d4 Ze
e	ed5d6gd7d8 Ze
e	ed5d6gd9d: Zee
e	ed5d6gd;d< Zd=d> Zd?d@ Ze
e	ed5d6gd'dAdBZe
e	ed5d6gdCdD Ze
e	ed5d6gdEdF Ze
e	ed5d6gdGdH Zee
e	ed5d6gdIdJ Ze
e	ed5d6gdKdL ZdMdN ZdOdP Ze
e	ed5d6gdQdR Ze
e	ed5d6gdSdT Ze
e	ed5d6gd'dUdVZe
e	ed5d6gdWdX Ze
e	ed5d6gdYdZ Ze
e	ed5d6gd[d\ Ze
e	ed5d6gd]d^ Ze
e	ed5d6gd_d` Ze
e	ed5d6gdadb Ze
e	ed5d6gdcdd Ze
e	ed5d6gdedf Zdgdh Ze
e	ed5d6gdidj Ze
dkdl Ze
dmdn Ze
e	ed5d6gdodp Zd dql'm(Z( drds Zdtdu Zdvdw Ze
e	ed5d6gdxdy Ze
e	ed5d6gd(d{dyZe
e	eg d|d)d~dZe
e	eg d|dd Ze
e	ed5d6gdd Zdd Ze
e	edgdd Ze	ed5d6gdd Zdd Ze
e	ed5d6gdd Ze	ed5d6gdd Zee
e	ed5d6gdd Ze
e	ed5d6gdd Ze
e	ed5d6gdd Ze	ed5d6gdd Zee
e	ed5d6gdd Ze
e	ed5d6gdd Ze
e	ed5d6gdd Ze	ed5d6gdd Zee
e	ed5d6gdd Ze
e	ed5d6gdd Ze
e	ed5d6gdd ZG dd deZG dd deZe	eddgdd Zee
e	edgdd Ze
e	edgdd Ze
e	edgdd Zdd Ze
e	eddgd'ddZe
e	edgdd ZG dd dej׃Zdd Zdd Zedd ZeddÄ Zddń ZddǄ ZddɄ Zdd˄ Ze
e	ed5d6gdd̈́ Ze	eg d΢ddЄ Zee
e	ed5d6gdd҄ Ze
e	ed5d6gddԄ Ze
e	ed5d6gddք Zdd؄ Zddڄ Zdd܄ Ze
e	ed5d6gddބ Ze
e	ed5d6gdd Ze
e	ed5d6gdd Zdd Zdd Ze
e	ed5d6gdd Ze
e	ed5d6gdd Zdd Ze
e	ed5d6gdd Ze
e	ed5d6gdd Ze
dd Ze
dd Ze
dd Ze
e	ed5d6gdd Zee
e	ed5d6gdd Ze
e	ed5d6gd'ddZe
e	ed5d6gdd Ze
e	ed5d6gdd  Ze
e	ed5d6gdd Ze
e	ed5d6gdd Ze
e	ed5d6gdd Ze
e	ed5d6gdd Zd	d
 Ze
e	ed5d6gdd Z e
e	eddgd'ddZe
e	edgdd Ze
e	ed5d6gdd Zedd Zdd Zdd Zdd Zdd Zdd Z	dd  Z
d!d" Zed#gd$d% Zd
S (*      )renderredirect)authenticateloginlogout)user_passes_testlogin_required)api_view)require_POST)inlineformset_factory)SumAvgDateTimeField)ValidationError)FN)csrf_exempt)datetimedatetimezone)get_object_or_404)settings)JsonResponseHttpResponse)messages)r   )	Paginator	EmptyPagePageNotAnInteger)apps)FAQAboutUsAppUrl	ContactUsPrivacyPolicyTermsAndConditions   )AboutUsForm
AppUrlFormContactUsFormFAQFormPrivacyPolicyFormShopFormStoreUserFormTermsAndConditionsFormUserEditFormUserFormUserModalFormBankDetailsFormCategoryFormProductSubCategoryFormProductFormTagFormDynamicFilterFormSpecialListFormDeliveryBoyFormSKUFormCourierDetailsForm
CouponFormDeliverySlotFormDiscountFormAdFormCustomProductFormProductionUnitFormCustomOrderFormMessageForm)ShopBankDetailsProductionUnit)ProductCategoryProductSubCategoryProductsSalesUnitProductSelectionProductImageProductVideoTagsDynamicFilteringSpecialListSKUCustomProductCustomProductImageCustomProductVideo)*)
DeliveryBoysOrdersOrderDeliveryCouponsDeliverySlotDiscountAdsPaymentCommunicationMessage)	send_mail)EMAIL_HOST_USER)	timedelta)send_notificationinitialize_fcm_app)r   )reverse)Group)CountQr   )render_to_string)autocomplete)IsAuthenticated)APIView)Responsestatus)EmailMessage)LoggingOperation   c                    s(   t jt j  d fddt| D S )N c                 3   s    | ]}t  V  qd S N)secretschoice).0_
characters ;/var/www/html/Testing_prj/Navya-Bakers/adminportal/views.py	<genexpr>A   s    z+generate_random_password.<locals>.<genexpr>)stringascii_lettersdigitsjoinrange)lengthrx   rv   ry   generate_random_password?   s   r   c                 C   sf   i }| j dkr-| jdd}| jdd}t| ||d}|d ur)t| | tdS ddi}t| d	|S )
NPOSTusernamerp   password)r   r   homepagemessagezinvalid username or passwordz
login.html)methodr   getr   
auth_loginr   r   )requesterroremailr   userrx   rx   ry   r   D   s   

r   c                    s    fdd}|S )Nc                    s
   | j  v S rq   	user_type)r   allowed_rolesrx   ry   inner_functionS   s   
z'check_user_role.<locals>.inner_functionrx   )r   r   rx   r   ry   check_user_roleR   s   r   )Super Admin	NBC Admin
Shop AdminPU Adminc                  C   s  i }t   }d }| jjdkrtjdj| jj	d}|r|d }d| j
d< tjjddgd	j||j	d
 }tjj|d|j	d }tjj|d|j	d }|r^t|| d d}nd}tjj|d|j	d }	tjj|g d|j	d }
tjj|j	djdgd	 }tjj||j	d
jddgd	jtdd}d}|d rt|d r|d ndd}|tdd }|tdd }tjj|||j	djddgd	jtdd}tjj|||j	djddgd	jtdd}i }|d r)|d r)t|d |d  d d}|dkr|d }t|d|d< d|d< n5d| }t|d|d< d |d< n%|d rA|d sAd}t|d|d< d|d< nd}t|d|d< d|d< tjj|j	||d!jddgd	jtdd"}i }|d r|d# rt|d |d#  d d}|dkr|d }t|d|d$< d|d< n5d| }t|d|d$< d |d< n%|d r|d# sd}t|d|d$< d|d< nd}t|d|d$< d|d< tjj|j	||d!jddgd	 }i }|r|rt|| dd }|dkr|d }t|d|d%< d|d< n1d| }t|d|d%< d |d< n!|r#|s#d}t|d|d%< d|d< nd}t|d|d%< d|d< tjj|j|j|j	d&jddgd	jtdd'}t|d( rR|d( ndd|d(< d}|	ri|rit|	| d d}tjj|j	|d)jddgd	jtdd}d}|d rt|d d}tjj|j	|d)jddgd	d*jtdd+d,d d- }|D ]}|d. rt|d. d|d.< qi d/|d0|d1|	d2|
d3|d4|d5|d|d(|d6|d%|d$|d7|d8|d9|d:d;}ns| jjd<ks| jjd=krd>| j
d< tjjddgd	j|d? }tjj|dd@ }tjj|dd@ }|r6t|| d d}nd}tjj|dd@ }	tjjg d|dA }
|tdd }|tdd }tjj||dBjddgd	jtdd}tjj||dBjddgd	jtdd}i }|d r|d rt|d |d  d d}|dkr|d }t|d|d< d|d< n5d| }t|d|d< d |d< n%|d r|d sd}t|d|d< d|d< nd}t|d|d< d|d< tjj||dBjddgd	jtdd"}tjj|d?jddgd	jtdd}d}|d rt|d d}i }|d rZ|d# rZt|d |d#  d d}|dkrJ|d }t|d|d$< d|d< n5d| }t|d|d$< d |d< n%|d rr|d# srd}t|d|d$< d|d< nd}t|d|d$< d|d< tjj||dBjddgd	 }i }|r|rt|| d d}|dkr|d }t|d|d%< d|d< n1d| }t|d|d%< d |d< n!|r|sd}t|d|d%< d|d< nd}t|d|d%< d|d< d}|	r|rt|	| d d}tjj|d?jddgd	jtdd}d}|d rt|d d}tjjdgd	 }tjj|j|jddCjtdd'}t|d( r=|d( ndd|d(< tjj|dDdEjddgd	d*jtdd+d,d d- }|D ]}|d. rst|d. d|d.< qci d/|d0|d1|	d2|
d3|dF|d5|d|d(|d6|d%|d$|d7|d8|d9|d:d;}n| jjdGkrfd>| j
d< tjjddgd	jdH|dI }tjj|ddHdJ }tjj|ddHdJ }	tjj|ddHdJ }|rt|| d d}nd}tjjg d|dHdK }
|tdd }|tdd }tjjdH||dLjddgd	jtdd}tjjdH||dLjddgd	jtdd}i }|d rx|d rxt|d |d  d d}|dkrh|d }t|d|d< d|d< n5d| }t|d|d< d |d< n%|d r|d sd}t|d|d< d|d< nd}t|d|d< d|d< tjjdH||dLjddgd	jtdd"}tjjdH|dIjddgd	jtdd}d}|d rt|d d}i }|d r|d# rt|d |d#  d d}|dkr|d }t|d|d$< d|d< n5d| }t|d|d$< d |d< n%|d r*|d# s*d}t|d|d$< d|d< nd}t|d|d$< d|d< tjjdH||ddM }i }|ry|ryt|| d d}|dkri|d }t|d|d%< d|d< n1d| }t|d|d%< d |d< n!|r|sd}t|d|d%< d|d< nd}t|d|d%< d|d< d}|	r|rt|	| d d}tjjdH|dIjddgd	jtdd}d}|d rt|d d}tjjdHdNjdgd	 }tjjdH|j|jdOjddgd	jtdd'}t|d( r|d( ndd|d(< tjj|dHdEjddgd	dPjtdd+d,d d- }|D ]}|d. r2t|d. d|d.< q"i d/|d0|d1|	d2|
d3|dF|d5|d|d(|dQ|d%|d$|d7|d8|d9|d:d;}t| dR|S )SNr   unit_admin_userunit_admin_user__uuidr   Yesproduct_viewFailed	New Orderorder_status__in)created_date__date
store_uuid	Confirmed)r   order_statusr   d      	Deliveredr   ViewedOrder Packed)r   r   r   )r   grand_total)today_revenuer      )days)created_date__date__gtecreated_date__date__lter   )week_revenue)last_week_revenuer   r   revenue_differenceincreaseflagdecrease)r   r   r   )last_week_avg_revenuer   today_revenue_percent_with_weektoday_count_percent_with_week)created_date__yearcreated_date__monthr   )month_revenuer   )r   r   store_uuid__unit_name)total_amountz-total_amount   r   orders_todaynew_order_todayfulfiled_ordercurrently_unassigned_orderfailed_orderavg_failed_ordertotal_ordersgrand_total_by_storedelivery_success_percentageavg_today_revenuerevenue_difference_outputhome_activeactiver   r   Nor   )r   r   )r   r   )r   r   )r   r   r   Local Orders)r   
order_typeavg_failed_ordersr   Long Distance Orders)r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r   r   )r   r   r   pu_uuid__pu_namegrand_total_by_puz
index.html)r   nowr   r   r   rB   objectsprefetch_relatedfilteruuidsessionrT   excludecountround	aggregater   r_   r   yearmonthvaluesannotateorder_byr   ) r   contexttodayshop_id_verifyshop_idr   r   failed_order_todayr   r   r   r   r   today_revenue_datalast_week_startweek_before_last_weekr   week_before_last_week_revenuer   week_revenue_percent_with_weeklast_week_revenue_avgrevenue_percent_datar   last_week_revenue_countrevenue_count_datar   r   r   r   avg_today_revenue_dataresultsirx   rx   ry   	home_pageY   s   


















 
$
	





&








&

 .








(










(
 .
r   r   r   c              	   C      t jd}t|d}| jd}z||}W n ttfy(   |d}Y n t	y6   ||j
}Y nw |dd}t| d|S )N-created_at
   pager$   r   )	shop_datasales_unit_activezshop_list.html)rB   r   r   r   GETr   get_pager   	TypeErrorr   	num_pagesr   )r   shops	paginatorr   r   rx   rx   ry   	shop_list     

r  c                 C   s  g }t  }| jdkrt| j}t| j}| ro| ro| }|jdd}||_|  g }d}d}	|j	 D ]}
t
||	t|
jgdd q8z | j}d}d	}	d
|j d|j }tjj|||	|d W tdS    Y tdS ||j t|j }t|j }|| }g d}g d}g d}t|t|@ }t|t|@ }t|t|@ }d}|rd}n	|rd}n|rd}||||dd|d}t| d|S t }t }g }||||dddd}t| d|S )Nr   FcommitzShop createdz,New shop assigned you as the unit admin userTfail_silentlyshopzShop CreatedShop z created with code r   log_typer   descriptionr  		unit_name	unit_codeunit_locationr   
contact_norl   r   delivery_modedelivery_radiuslatitude	longitudestreetcitystate_or_provincedistrictpin_codeaccount_name	bank_namebranch_name	ifsc_codeaccount_numbergstr   r$   r   
modal_hider   )errors	shop_form	bank_formuser_modal_form
show_modalr   r   shop_add.html)r/   r   r*   r   r0   is_validsaver	  r   allr]   r^   r   r   r  r  rn   r   creater   appendr%  listkeyssetr   )r   r%  r(  r&  r'  r	  bank_detailsproduct_enter_listsubjectr   r   log_userr  r  shop_error_columnsbank_error_columns
error_liststep1_columnsstep2_columsstep3_columnsstep1step2step3r   r   rx   rx   ry   shop_add  s   


		r@  c           	   
   C   s   t jj|d}|rUtjj|d  | }|  z!| j}d}d}d|j d|j d}t	jj
||||d W td	S  tyT } zt| W Y d }~td	S d }~ww td	S )
Npk)
sales_unitr	  zShop Deletedr
    with code  deletedr  r  )rB   r   r   rH   deletefirstr   r  r  rn   r.  	Exceptionprintr   )	r   r   r	  r   r6  r  r   r  erx   rx   ry   shop_delete^  s&   
rK  c                 C   s   t t|d}tjj|d}|rt| d tdS |rL|  z| j}d}d}d|j	 d|j
 d}tjj||||d	 W n   Y t| d
 tdS t| d tdS )Nr   categoryz$Couldn't delete subcategories existsproductzCategory Deletedz	Cagegory rD  rE  r  zCategory deleted successfullyzSomething went wronglist_category)r   rE   rF   r   r   r   warningrF  r   category_namecategory_codern   r.  successr   )r   category_idrN  sub_categoryr6  r  r   r  rx   rx   ry   category_deleter  s&   rW  c                 C   s   t jj|d}|jj}|r=|  z'| j}d}d}d|j d|j d|jj	 d|jj
 }tjj||||d W n   Y td	t| d
S )NrL  rO  zSub category deletedSub category rD   deleted for category  with code r  /adminportal/add-sub-category//)rF   r   r   rN  r   rF  r   sub_category_namesub_category_coderR  rS  rn   r.  r   str)r   sub_category_idrV  rU  r6  r  r   r  rx   rx   ry   sub_category_delete  s   (ra  c              
   C   sB  t t|d}|j}tjj|d }g }| jdkr
t| j	|d}t
| j	|d}| r| r| }|jdd}||_|  ||jkre|j D ]}d}	d|j d	|j }
t|	|
t|jgd
d qKz,| j}d}d}
d|j d|j d d|j d|j d}tjj|||
|d W tdS  ty } zt| W Y d }~tdS d }~ww ||j ||j t|j }t|j }|| }g d}g d}g d}t|t|@ }t|t|@ }t|t|@ }d}|rd}n	|rd}n|rd}||d|d}t | d|S t|d}t
|d}||ddd}t | d|S )NrA  r	  r   instanceFr  zShop status updatedz
Your shop z changed their status to Tr  r	  zShop Updatedr
  rD  rE   updatedr  r  r  r  r  r   r$   r   r   )r&  r'  r   r   zshop_edit.html)!r   rB   rl   rC   r   r   rG  r   r*   r   r0   r+  r,  r	  r   r-  r  r]   r^   r   r   r  rn   r.  rH  rI  r   r/  r%  r0  r1  r2  r   )r   r   r	  existing_shop_statusr3  r%  r&  r'  r   r5  r   r6  r  r  rJ  r7  r8  r9  r:  r;  r<  r=  r>  r?  r   r   rx   rx   ry   	shop_edit  sv   



rg  c              	   C   s   t jjddd}t|d}| jd}z||}W n tt	fy,   |d}Y n t
y:   ||j}Y nw |dd}t| d	|S )
NCustomer)user_type__exact-created_dater   r   r$   r   )usersusers_activez
users.html)Usersr   r   r   r   r   r   r   r   r   r   r   r   )r   rk  r  r   r   rx   rx   ry   rk    s   

rk  c                 C   sr   g }t t|d}| jdkr't| j|d}| r |  tdS ||j	 nt|d}||d|d}t
| d|S )NrA  r   rc  rk  r   r%  formpublic_users_activeuser_idedit_users.html)r   rm  r   r-   r   r+  r,  r   r/  r%  r   )r   rq  r%  r   ro  r   rx   rx   ry   	user_edit  s   

rs  c                 C   s  g }| j dkr}t| j}| rv|jd }|jd }|jd }|jd }|jd }|jd }t||||||d}	t }
|	|
 d	}d
|
 }t|	j	}zt
||t|gdd |	  tdW S    ddgig}||d}t| d| Y S ||j nt }g }||d}t| d|S )Nr   
first_name	last_namer   r   phone_numberrl   )rt  ru  r   r   rv  rl   #Orderpicky Registration Successful NCongratulations, your account has been successfully created. Your password is Fr  rk  zPlease enter valid email)r%  	user_formzadd_user.html)r   r.   r   r+  cleaned_datarm  r   set_passwordr_  r   r]   r^   r,  r   r   r/  r%  )r   r%  ry  rt  ru  r   r   rv  rl   user_objmy_passwordr5  r   	recepientr   rx   rx   ry   user_add  sT   











r  c                 C   "   t jj|d}|r|  tdS )NrA  rk  )rm  r   r   rF  r   )r   rq  r   rx   rx   ry   user_delete;     r  c           
      C   s   g }t  }| jdkrIt| j}| rB| }t }||_d}d| }t|j	}t
||t|gdd t }d||d}	t| d|	S ||j nt }g }|||d	d
}	t| d|	S )Nr   rw  rx  Tr  r$  )r)  r&  r(  r*  
modal_show)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}  r5  r   r~  r   rx   rx   ry   user_add_modalE  s:   



r  c                 C   s   t |  tdS )Nz/adminportal/login/)r   r   r   rx   rx   ry   admin_logoutm  s   r  c           
      C   s   g }t t|d}t }|| |  d}d| }t|j}t||t|gdd t	
| t	jd t|d}||d|d	}	t| d
|	S )NrA  z%Navya Bakers Registration Successful rx  Fr  zGPassword Reset Successfully. You will receive a mail with the password.rc  r   rn  rr  )r   rm  r   r{  r,  r_  r   r]   r^   r   add_messageSUCCESSr-   r   )
r   rq  r%  r   r}  r5  r   	recipientro  r   rx   rx   ry   reset_passwordr  s   




r  c              	   C      t jd}t|d}| jd}z||}W n ttfy(   |d}Y n t	y6   ||j
}Y nw |dd}t| d|S )NrR  r   r   r$   r   )category_listcategory_activezcategory_list.html)rE   r   r   r   r   r   r   r   r   r   r   r   )r   category_datar  r   rN  r   rx   rx   ry   r    r  r  c                 C   s<  g }t t|d}tjj|d}t }| jdkrt| j| j	|d}|
 rs| jddr/d |j_| jddr:d |j_| jddrEd |j_| }z!| j}d	}d
}	d|j d|j d}
tjj|||	|
d W tdS    Y tdS ||j |d|j|dt|d}t| d|S t|d}|d|j|d}t| d|S )NrA  rM  r   rc  image1rp   image2image3rO  zCategory updated	Category rD  re  r  rP  T)category_formsubcategory_statusrU  sub_category_formsubcategory_addrV  category_add.htmlr  r  rU  r  )r   rE   rF   r   r   r2   r   r1   r   FILESr+  r   rd  iconstandard_imagebanner_imager,  r   rR  rS  rn   r.  r   r/  r%  r   r0  r   )r   rU  r%  rN  sub_category_listr  ro  r6  r  r   r  r   rx   rx   ry   category_edit  s<   

r  c                 C   s   g }| j dkrht| j| j}t }| rV| }z| j}d}d}d|j d|j	 d}	t
jj||||	d W n   Y tt|jd}
t|
d	}|d
|j|d}t| d|S ||j ||dd}t| d|S t }g }||ddd}t| d|S )Nr   rO  zCategory createdr  rD  z created)r   r  r   
descritionrA  rc  Tr  r  rp   )r%  r  rU  F)r%  r  r  rU  )r   r1   r   r  r2   r+  r,  r   rR  rS  rn   r   r.  r   rE   r   r   r/  r%  )r   rU  r%  r  r  rN  r6  r  r   r  category_instancer   rx   rx   ry   add_category  s@   

r  c                 C   sh  g }t t|d}| jdkrt| j}tjj|d}t|d}|	 ro|j
dd}||_|
  z'| j}d}	d}
d	|j d
|j d|jj d|jj }tjj||	|
|d W n   Y t }|d||dt|d}t| d|S ||j |r||d||dt|d}n||d||d}t| d|S t|d}t }tjj|d}g }|d||dt|d}t| d|S )NrL  r   rM  rc  Fr  rO  Sub category createdrX  rD   created for category rZ  r  T)r  r  r  rU  r  rV  r  )r%  r  r  r  rU  r  rV  )r%  r  r  r  rU  )r   rE   r   r2   r   rF   r   r   r1   r+  r,  rN  r   r]  r^  rR  rS  rn   r.  r0  r   r/  r%  )r   rU  r%  rN  r  r  r  rV  r6  r  r   r  r   rx   rx   ry   add_sub_category  sP   


(

r  c                 C   s   t t|d}|jj}g }| jdkr_t| j| j|d}| rX|	  z'| j
}d}d}d|j d|j d|jj d	|jj }	tjj||||	d
 W n   Y tdt| dS ||j nt|d}||d||d}
t| d|
S )NrL  r   rc  rO  zSub category updatedrX  rD   updated for category rZ  r  r[  r\  r   )r%  r  rp  r`  rU  zedit_sub_category.html)r   rF   rN  r   r   r2   r   r  r+  r,  r   r]  r^  rR  rS  rn   r   r.  r   r_  r/  r%  r   )r   r`  rV  rU  r%  ro  r6  r  r   r  r   rx   rx   ry   edit_sub_category_row%  s(   
(
r  c                 C   s  g }d}d}d }| j dkr| jd}|r%tt|d}t| j| j|d}nt| j| j}| r| }| j	d}|D ]
}t
jj||d q<| j	d	}	|	D ]
}
tjj||
d
 qOd}d}z2| j}d}d}d|j d|j d|jj d|jj d|jj d|jj d}tjj||||d W n   Y td||d|jidS ||j td|jdS t }||d|||d}t| d|S )NFTr   
product_idrA  rc  imagesrO  imagevideosrO  videorO  zMaster Product AddedProduct rD  z added for category  () and sub category ) r  idrT  
sku_activedetails_activerO  rT  r%  r   )r%  product_formr  r  r  rO  zproduct_add.html)r   r   r   r   rG   r3   r  r+  r,  getlistrI   r   r.  rJ   r   	item_name	item_codeitem_categoryrR  rS  item_sub_categoryr]  r^  rn   r   r  r/  r%  r   )r   r%  r  r  rO  r  r  r  r  r  r  r6  r  r   r  r   rx   rx   ry   master_product_addC  s\   
>		r  c              	   C   s  t t|d}| jdkrt| j}| r|jdd}|jdkr'|jdkr'd|_	||_
| }tj D ]d}tjj|||j|jdd	\}}|jdkrg|j
j| |j| |j
jj| |j
jj| |j	rtjj|j
jd
jdd tjj|j
jjdjdd tjj|j
jjdjdd |  q3z(| j}	d}
d}d|j d|j d|j
j d|j
j d	}tjj |	|
||d W n   Y t!d|j|j|j"|j#|j$|jdS t!d|j%dS t!dddS )NrA  r   Fr     VisibleTshop_admin_statusrl   rC  skudefaultsr  long_distance_availabilityrL  rO  z	SKU AddedSKU rD  z added for product (r  r  rT  )rl   sku_namesku_codesku_quantitysku_unitsku_mrpsku_idr   rl   r%  Invalid request methodrl   r   )&r   rG   r   r8   r   r+  r,  sku_expiry_duration
sku_statusr  rO  rB   r   r-  rH   get_or_createrC  addr  r  r   r  updaterE   r   rF   r   r  r  r  r  rn   r.  r   r  r  r  r%  )r   r  rO  ro  r  sku_datar   sales_productru   r6  r  r   r  rx   rx   ry   add_sku  sZ   





*
r  c                 C   s0   t jj|dd}dd |D }td|dS )Nr  
created_atc              	   S   s*   g | ]}|j |j|j|j|j|jd qS ))r  r  r  r  r  r  )r  r  r  r  r  r  )rt   r  rx   rx   ry   
<listcomp>  s    
zget_skus.<locals>.<listcomp>rT  )rl   skus)rN   r   r   r   r   )r   r  r  sku_listrx   rx   ry   get_skus  s
   	r  c           "   	   C   s(  | j dkr| jd}tt|d}|j}|jj}|jj}|  tj	j
|jddd}|s;tj	j
|jjdjdd n7d}|D ]#}tj	j
|d	 }	|	rb|	jdkrbtj	j
|jjdjd
d d
} nq?|srtj	j
|jjdjdd tj	j
|jjddd}
|
stj	j
|jjjdjdd n9d}|
D ]$}tj	j
|d	 }|r|jdkrtj	j
|jjjdjd
d d
} nq|stj	j
|jjjdjdd tj	j
|jjddd}|stj	j
|jjjdjdd n<d}|D ]&}tj	j
|d	 }|r|jdkrtj	j
|jjjdjd
d d
} nq|stj	j
|jjjdjdd tj	j
|dd}tj	j
|dd}tj	j
|dd}tj	d}|D ]}|sK|j| n(d
}|D ]}tj	j
||d }|rh|jdkrhd} nqO|rs|j| |s}|j| n(d
}|D ]}tj	j
||d }|r|jdkrd} nq|r|j| |s|j| q?d
}|D ]}tj	j
||d }|r|jdkrd} nq|r|j| q?z(| j}d}d} d|j d|j d|jj d|jj d	}!tj	j||| |!d W n   Y t ddiS t dddS ) Nr   r  r  r  r  rO  r  sku_expiry_duration__gtFr  r  Tproduct__item_sub_categoryr  r  rL  product__item_categoryr  r  rO  r  r  r  r  r  r   r  rC  rO  zSKU Deletedr  rD  z deleted for product r  r  r  rl   rT  r   zInvalid requestr  )!r   r   r   r   rN   rO  r  r  rF  r   r   rG   r  r  rH   rG  rl   rF   r   rE   rB   r   rC  remover  r   r  r  r  r  rn   r.  r   )"r   r  r  sku_productsku_categorysku_sub_categorylong_dist_sku_productlong_dist_product_flagr   long_dist_sales_checklong_dist_sku_sub_categorylong_dist_sub_category_flaglong_dist_sales_check_sublong_dist_sku_categorylong_dist_sku_category_flaglong_dist_sales_check_catr  sku_sub_category_datasku_category_datar  r	  product_remove_flagj	sku_salessub_category_remove_flagksku_sub_category_salescategory_remove_flaglsku_category_salesr6  r  r   r  rx   rx   ry   
delete_sku  s   


*r  c              
   C   sh   z"t jj|d}d|j|j|j|j|j|j|j	|j
dd}t|W S  t jy3   tddd Y S w )Nr  rT  )r  r  r  r  r  r  sku_bulk_qty_limitr  )rl   r  r   zSKU not found.r  )rN   r   r   r  r  r  r  r  r  r  r  r   DoesNotExist)r   r  r  datarx   rx   ry   get_sku  s"   
r  c           (   
   C   s  t t|d}| jdkrt| j|d}| r| }tj	 D ]}t
jj|||j|jdd\}}|j|_|j|_|  q!|jdkrj|jdkrjt
jj|d }|rb|jdkr^d	|_nd
|_nd	|_|  nd
|_|  |jrtjj|jjdjd	d tjj|jjjdjd	d tjj|jjjdjd	d ntjj|jddd}	|	stjj|jjdjd
d n7d
}
|	D ]#}t
jj|d }|r|jdkrtjj|jjdjd	d d	}
 nq|
stjj|jjdjd
d tjj|jjddd}|stjj|jjjdjd
d n=d
}|D ]'}t
jj|d }|r7|jdkr7tjj|jjjdjd	d d	} nq|sJtjj|jjjdjd
d tjj|jjddd}|sgtjj|jjjdjd
d n=d
}|D ]'}t
jj|d }|r|jdkrtjj|jjjdjd	d d	} nqk|stjj|jjjdjd
d |jdkrtj	 D ] }|jj| |j| |jjj| |jjj| qntjj|jdd}tjj|jjdd}tjj|jjdd}tjd}|D ]}|s|jj| n)d	}|D ]}t
jj||d }|r |jdkr d
} nq|r,|jj| |s8|jjj| n*d	}|D ]}t
jj||d }|rU|jdkrUd
} nq<|rb|jjj| |so|jjj| qd	} |D ]}!t
jj|!|d }"|"r|"jdkrd
}  nqs| r|jjj| qz(| j }#d}$d}%d|j! d|j" d|jj# d|jj$ d	}&t%jj&|#|$|%|&d W n t'y }' z
t(|' W Y d }'~'nd }'~'ww t)dddS t)d |j*d!S t)d d"dS )#Nr  r   rc  r  r  r  r  r  TFr  rL  r  r  r  r  r  r  r   r  rO  zSKU Updatedr  rD  z updated for product r  r  r  rT  zSKU updated successfully.r  r   r  r  )+r   rN   r   r8   r   r+  r,  rB   r   r-  rH   r  r  r  rl   r  r   rG  r  rG   rO  r  r  rE   r  r   rF   r  rC  r  r   r  r   r  r  r  r  rn   r.  rH  rI  r   r%  )(r   r  r  ro  r  r   r  ru   sales_unit_datar  r  zr  r  r  yr  r  r  xr  r   r  r  r  r	  r  r  r  r  r  r   r  r  r  r6  r  r   r  rJ  rx   rx   ry   
update_sku  s0  






*
r  c           	      C   s   t t|d}| jdkrq| jd}|d urj||_|  z+| j}d}d}d|j d|j	 d| d	|j
j d
|j
j d}tjj||||d W n   Y |dkrctjj|d}|j|d |j|d tdddS tdddS tdddS )Nr  r   r  rO  zSKU Status Updatedr  rD  z updated status to  for product r  r  r  r  r  rk   )r  rT  z SKU status updated successfully.r  r   z"No status provided in the request.z-Invalid request method. Only POST is allowed.)r   rN   r   r   r   r  r,  r   r  r  rO  r  r  rn   r   r.  rH   r   r  r   )	r   r  r  rl   r6  r  r   r  sales_unit_entriesrx   rx   ry   update_sku_from_product_list  s.   
0
r  c           .      C   sz  t t|d}g }d}d}|j}|j}| jd}| jd}	| jdkr(t| j| j|d}
|
	 r|

 }| jd}|D ]
}tjj||d	 q>| jd
}|D ]
}tjj||d qQd}d}tjj|ddd}|sxtjj|jdjdd n5d}|D ]"}tjj|d }|r|jdkrtjj|jdjdd d} nq||stjj|jdjdd tjj|ddd}|stjj|jdjdd n5d}|D ]"}tjj|d }|r|jdkrtjj|jdjdd d} nq|stjj|jdjdd tjj|ddd}|stjj|jdjdd n9d}|D ]%}tjj|d }|r;|jdkr;tjj|jdjdd d} nq|sLtjj|jdjdd tjj|jddd}|sgtjj|jjdjdd n;d}|D ]&}tjj|d }|r|jdkrtjj|jjdjdd d} nqk|stjj|jjdjdd tjj|jddd}|stjj|jjdjdd n;d}|D ]&}tjj|d }|r|jdkrtjj|jjdjdd d} nq|stjj|jjdjdd tjj|dd}tjj|dd}tjj|	dd}tjj|dd}tjd}|D ]}|rI|D ]!}tjj||d } | rG| jdkrG| jjjj |  nq'|rp|D ]!}!tjj|!|d }"|"rn|"jdkrn|"jjjj |  nqN|sz|j!| n(d}#|D ]}$tjj|$|d }%|%r|%jdkrd}# nq~|#r|j!| |s|j!| q d}&|D ]}'tjj|'|d }(|(r|(jdkrd}& nq|&r|j!| q z2| j"})d}*d}+d|j# d|j$ d|jj% d |jj& d!|jj' d |jj( d"},t)jj|)|*|+|,d# W n   Y t*d||d$|jid%S |+|
j, t*d|
j,d&S t|d}
||
d'||||d(}-t-| d)|-S )*NrA  FTr  r  r   rc  r  r  r  r  r  r  r  rL  r  r  r  r  r  r  r   product__item_sub_category__uuidr  product__item_category__uuidr  r   r  rO  zMaster Product Updatedr  rD  r  r  r  r  r  r  r  r  r   )r%  r  r  r  r  rO  r  zproduct_edit_01.html).r   rG   r  r  r   r   r   r3   r  r+  r,  r  rI   r   r.  rJ   rN   r   rF   r   r  rH   rG  rl   rE   r  rB   r   r  r  rO  rC  r  r  r   r  r  rR  rS  r]  r^  rn   r   r/  r%  r   ).r   r  rO  r%  r  r  existing_categoryexisting_sub_categoryto_categoryto_sub_categoryr  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  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_salesr  r  r   r  r  r  r6  r  r   r  r   rx   rx   ry   master_product_edit  s  
	




>	

r  c                 C      t t|d}|jj}|  z8| j}d}d}d|jj d|jj d|jjj	 d|jjj
 d|jjj d|jjj d	}tjj||||d
 W n   Y td|dS )Nr  rO  zMaster Product Image deletedr  rD  z  deleted its image for category r  r  r  r  edit_master_productr  )r   rI   rO  r  rF  r   r  r  r  rR  rS  r  r]  r^  rn   r   r.  r   )r   image_idr  r  r6  r  r   r  rx   rx   ry   delete_image     Jr#  c                 C   r   )Nr  rO  zMaster Product Video deletedr  rD  z  deleted its video for category r  r  r  r  r!  r  )r   rJ   rO  r  rF  r   r  r  r  rR  rS  r  r]  r^  rn   r   r.  r   )r   video_idr  r  r6  r  r   r  rx   rx   ry   delete_video  r$  r&  c                 C   s0  t jj|d}| }|j}|j}|rtjj|d}|r)t| tj	d t"dS |
  tjj|ddd}|sEtjj|jdjdd	 n5d}|D ]"}	tjj|	d
 }
|
rk|
jdkrktjj|jdjdd	 d} nqI|sztjj|jdjdd	 tjj|ddd}|stjj|jdjdd	 n5d}|D ]"}	tjj|	d
 }|r|jdkrtjj|jdjdd	 d} nq|stjj|jdjdd	 tjj|dd}tjj|dd}tjd}|D ]d}|s|j| n'd}|D ]}tjj||d }|r|jdkrd} nq|r|j| |s|j| qd}|D ]}tjj||d }|r8|jdkr8d} nq|rC|j| qz5| j}d}d}d|j d|j d|jj d|jj d|jj d|jj d}tjj||||d W t"dS  t y } zt!| W Y d }~t"dS d }~ww t"dS )NrA  )Productz1Your Product used in ads! couldn't delete productr  r  r  rL  Fr  r  Tr  r  r  r   r  rO  zMaster Product deletedr  rD  rY  r  r  r  r  list_master_product)#rG   r   r   rG  r  r  rY   r   r  WARNINGrF  rN   rF   r   r  rH   rl   rE   rB   r   rC  r  r  r   r  r  rR  rS  r]  r^  rn   r.  rH  rI  r   )r   r  rO  product_dataproduct_categoryproduct_sub_categoryadsr  r  r   r  r  r  r  r  r  r  r	  r  r  r  r6  r  r   r  rJ  rx   rx   ry   master_product_delete  s   
x

>
r.  )r   c                 C   s  | j d}| j d}| j d}| j d}tjj|dd}|r,|j||d}n|j|d}g }| D ]}g }|j D ]}	zttjj	||	d	d	d
d\}
}|
j
d	krt|	j| |	jj| |	jjj| |	jjj| |
jd	krd|	_|	  tjj|	jjdjdd tjj|	jjjdjdd tjj|	jjjdjdd |
j|	_|
j
|	_
||	 W qA   d|	_||	 Y qA||_|| q8t|d}|d}tdd|i}| jjdkrtdd|i}ntdd|i}t||dddS )NrU  subcategory_idr   product_typer0  rj  )r  r  r  r  r  r  Tr  r  rL  Disabledr   r$   pagination.htmlr*  r   product_list_page.htmlproduct_page.htmltbody
paginationFsafe) r   r   rG   r   r   r   r  r-  rH   r  r  rC  r  rO  r  r  rl   r  r,  r  r  rE   r   rF   r/  r  r   r   rf   r   r   r   )r   rU  r/  r   r0  product_list	list_datar   r  r  r  ru   r  productsr9  r8  rx   rx   ry   subcategory_product_list  s^   




r?  c                 C   s  | j d}| j d}| j d}tjj|dd}g }|r1|j|d}tjj|ddd	}g }| D ]}g }|j	 D ]}	ztt
jj||	d
d
dd\}
}|
jd
krs|	j| |	jj| |	jjj| |	jjj| |
jd
krd|	_|	  tjj|	jjdjdd tjj|	jjjdjdd tjj|	jjjdjdd |
j|	_|
j|	_||	 W q@   d|	_||	 Y q@||_|| q7t|d}|d}tdd|i}| jjdkrtdd|i}ntdd|i}|rt t!|||dddS t g ||dddS )NrU  r   r0  r1  rj  r2  rU  r   r]  r  r  r  Tr  r  rL  r3  r   r$   r4  r*  r   r5  r6  )subcategoriesr8  r9  Fr:  )"r   r   rG   r   r   r   rF   r   r  r-  rH   r  r  rC  r  rO  r  r  rl   r  r,  r  r  rE   r   r/  r  r   r   rf   r   r   r   r0  )r   rU  r   r0  r<  rA  r=  r   r  r  r  ru   r  r>  r9  r8  rx   rx   ry   load_subcategories  sb   




rB  c                 C   sB   | j d}|rtjj|ddd}tt|ddS tg ddS )NrU  r@  r   r]  Fr:  )r   r   rF   r   r   r   r   r0  )r   rU  rA  rx   rx   ry   load_subcategories_product	  s
   rC  c              	   C   r   )Nr   r   r   r$   r   )r*  r  product_list.html)rG   r   r   r   r   r   r   r   r   r   r   r   )r   r>  r  r   r   rx   rx   ry   master_product_list	  r  rE  Fc              	      s\  | j dd}| j dd}| j dd}tjjddd}|r<tjt|dt|d	B t|d
B t|dB d}|rJt|d}|j|d}|rR|j|d}t	|d}| j d}z|
|}	W n ttfyt   |
d}	Y n ty   |
|j}	Y nw td | j  dv rd=  fdd|	jjD }
|	||||
dd}t| d|S )Nsearchrp   product_dateproduct_statusMaster Productr1  rj  item_name__icontainsitem_code__icontains'item_category__category_name__icontains/item_sub_category__sub_category_name__icontains%Y-%m-%dr   rH  r   r   r$   r(  c                    .   g | ]}|  d j dd d| dqS ?r\  r:  z&page=)page_numberurl	urlencodert   rW  base_urlquery_paramsrx   ry   r  G	      z'master_product_list.<locals>.<listcomp>r   )r*  search_queryr   rH  pagination_linksr  rD  )r   r   rG   r   r   r   re   r   strptimer   r   r   r   r   r   rb   copyr  
page_ranger   )r   product_splitr`  rG  rH  r<  formatted_dater  r   r>  ra  r   rx   r\  ry   rE  $	  sZ   


)r   r   r   rI  c                    s  | j dd}tjj|dd}| jjdkr&tj	dj| jj
d j
}tj d}tt|d	}|j}|j}|r[tjj|dt|d
t|dB t|dB t|dB d}| j d}	|	ri|j|	d}| j d}
|
rw|j|
d}g }|D ]}g }|j D ]}zttjj||dddd\}}|jdkr|j| |jj| |jjj| |jjj| |jdkrd|_|  tjj|jjdjdd tjj|jjj
d	jdd t jj|jjj
d	jdd |j|_|j|_|!| W q t"y } zd|_|!| W Y d }~qd }~ww ||_#|!| q{t$|d}| j d}z|%|}W n  t&t'fyB   |%d}Y n t(yQ   |%|j)}Y nw t*d|ddd | j + dv rhd=  fd d!|j,j-D }||||d"||||d#	}| jjdkr| j.d$d%krt/d&||d'}t/d(d)|i}t0||d*S t1| d+|S | j.d$d%krt/d,||d'}t/d(d)|i}t0||d*S t1| d-|S ).NrF  rp   r1  rj  r   r   r   r   rL  rJ  rL  rN  rP  category_pager2  subcategory_pager  r  r  r  Tr  r  r3  r   r   r$   list_shop_productrI  )r   r0  kwargsc                    rT  rU  rY  r[  r\  rx   ry   r  	  r_  z product_list.<locals>.<listcomp>r   )	r*  r`  ra  r0  r   r   	shop_nameshop_locationr  x-requested-withXMLHttpRequestr5  )r*  ra  r4  r*  r7  zproduct_list_shop_admin.htmlr6  zproduct_list_shop.html)2r   r   rG   r   r   r   r   r   rB   r   r   rG  rE   r-  r   r  r  re   r  rH   r  r  rC  r  rO  r  r  rl   r  r,  r  r  rF   r/  rH  r  r   r   r   r   r   r   rb   rc  r  rd  headersrf   r   r   )r   r   r0  r`  r<  r  shop_detailsrm  rn  rg  sub_category_pager=  r   r  r  r  ru   rJ  r  r   r>  ra  r   r8  r9  rx   r\  ry   r<  `	  s   





r<  c                 C   s  | j dkr| jd}| jd}| jd}z
tjj||d}W n tjy3   tddd Y S w z||_||_|	  |d	kr}t
jj|d
jdd tjj|jjjd
jdd tjj|jjjjdjdd tjj|jjjjdjdd nt
jj|d
jdd t
jj|jjd	dd}|stjj|jjjd
jdd n9d}|D ]$}tjj|d }|r|jd	krtjj|jjjd
jdd d} nq|stjj|jjjd
jdd t
jj|jjjd	dd}	|	stjj|jjjjdjdd n>d}
|	D ]'}tjj|d }|r&|jd	kr&tjj|jjjjdjdd d}
 nq|
s9tjj|jjjjdjdd t
jj|jjjd	dd}|sXtjj|jjjjdjdd n?d}|D ](}tjj|d }|r|jd	krtjj|jjjjdjdd d} nq\|stjj|jjjjdjdd |d	kr|jj|j |jjj|j |jjjj|j |jjjj|j n|jj|j t
jj|jjd	d}t
jj|jjjd	d}t
jj|jjjd	d}|s|jjj| nd}|D ]}tjj||jd }|r|jd	krd} nq|r"|jjj|j |s0|jjjj|j n-d}|D ]}tjj||jd }|rN|jd	krNd} nq4|r]|jjjj|j |sk|jjjj|j n-d}|D ]}tjj||jd }|r|jd	krd} nqo|r|jjjj|j z:| j}d}d|jj d|jj d}d|jj d|jj d| d|jjj d|jjj  d }t!jj"||||d! W n   Y tdd"iW S    td#d$i Y S d S )%Nr   r  r   rl   rC  r  FOperation not allowed.rT  r   r  r  Tr  rL  r  r  r  r  r  r  r  r  r  rO  z Product Status Updated for Shop r  )r  rD   updated its status to r  r   r  rT  r   Invalid request.)#r   r   r   rH   r   r  r   rl   r  r,  rN   r   r  rG   r  rO  r  rE   r  r   rF   r  rG  rC  r  r  r   r  r  r  r  r  r  rn   r.  )r   r  r   
new_statussales_unit_productr  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r6  r  r   r  rx   rx   ry   update_product_sales_status	  s4  


8
 r}  c           4      C   s^	  | j d}| j d}| j d}tjj|d }tjd}|r)|j|d}|r1|j|d}tjj|d}g }g }	|D ]u}
g }|
j	
 D ]c}|jd	kr|j|d
 }||_||_||_||_|| || |d	krz|j| d|_n,|j| d|_n"|j|d
 }|j|_|jd	krd|_|j|_|| || |  qG||
_|	|
 q>tj|ddg |rptjj|d	d}|jdd}|stjj|djdd n6d}|D ]#}tjj|d
 }|r|jd	krtjj|djdd d} nq|stjj|djdd |s(tjj|d }|r'|j| nd}|D ]}tjj||d }|rE|jd	krEd} nq,|r]tjj|d }|r\|j| ntjj|d }|ro|j| ntj
 D ]}tjj|d	d}|jdd}|sd|_|  n/d}|D ] }tjj|d
 }|r|jd	krd|_|  d} nq|sd|_|  |s|j| qud}|D ]}tjj||d }|r|jd	krd} nq|r|j| qu|j| qu|rtjj|d	d}|jdd}|stjj|djdd n7d}|D ]$}tjj|d
 }|rC|jd	krCtjj|djdd d} nq |sStjj|djdd |sjtjj|d }|rh|j| nhd}|D ]}tjj||d } | r| jd	krd} nqn|rtjj|d }|r|j| n2tjj|d }|r|j| n|rFtjj|dD ]}!tjj|!d	d}|jdd}|sd|!_|!  n/d}|D ] }
tjj|
d
 }|r|jd	krd|!_|!  d} nq|sd|!_|!  |s|!j| qd}|D ]}tjj||d } | r0| jd	kr0d} nq|r=|!j| q|!j| qntj
 D ]}!tjj|!d	d}|jdd}|sfd|!_|!  n/d}|D ] }
tjj|
d
 }|r|jd	krd|!_|!  d} nqj|sd|!_|!  |s|!j| qKd}|D ]}tjj||d } | r| jd	krd} nq|r|!j| qK|!j| qKg }"g }#|D ]}$tjj|$d	d}%|%jdd}&|&sd|$_|$  n/d}'|&D ] }
tjj|
d
 }|r|jd	krd|$_|$  d}' nq|'s"d|$_|$  |%s-|$j| qd}(|%D ]})tjj|)|d }*|*rJ|*jd	krJd}( nq1|(rW|$j| q|$j| qz| j}+d},d}-d}.tjj|+|,|-|.d W n   Y t|	d}/|/d}0| jdd krt d!d"|0i}1t d#d"|0i}2t!|1|2d$S t"d%|d&d'd(d)}3t#|3S )*NrN  subcategorystatus_category_selectrL  rj  item_category__uuid)item_sub_category__uuidsales_unit__uuidr  r  TFrl   r  r  r  )r  r  r  r  r  category__uuidr  r  rO  z3Product Status Updated for Category or Sub CategoryzBulk Category updater  r   r$   ro  rp  r6  r*  r4  r7  rj  rI  r   )r   r0  r   rk  )$r   r   rB   r   r   rG  rG   r   rH   r  r-  r  rl   r  r/  rC  r  r  r  r,  r  bulk_updaterN   rE   r  rF   r   rn   r.  r   r   rq  rf   r   rb   r   )4r   r   rU  r`  r{  r	  r<  product_selectionupdate_list	show_listr   r  r  checkr  r  r  r
  r  update_statusr  r  r  catr  r  r  r  r  r  r  r  r   sub_catsku_category_listsku_sub_category_listrO  sku_productsr  r  r  r  sku_product_salesr6  r  r   r  r  r>  r8  r9  r]  rx   rx   ry   category_based_update_status
  s^  









.




r  c                 C   s  | j dkr| jd}| jd}| jd}z
tjj||d}W n tjy3   tddd Y S w zD||_|  |d	krg|j	j
|j
 |j	jj
|j
 |j	jjj
|j
 |j	jjj
|j
 n|j	j
|j
 tjj|j	jd	d
}tjj|j	jjd	d}tjj|j	jjd	d}|s|j	jj
|j
 nd}|D ]}	tjj|	|j
d }
|
r|
jd	krd} nq|r|j	jj
|j
 |s|j	jjj
|j
 n)d}|D ]}tjj||j
d }|r|jd	krd} nq|r|j	jjj
|j
 |s|j	jjj
|j
 n-d}|D ]}tjj||j
d }|r%|jd	kr%d} nq|r4|j	jjj
|j
 z:| j}d}d|j
j d|j
j d}d|j	j d|j	j d| d|j	jj d|j	jj d}tjj||||d W n   Y tddiW S    tddi Y S d S )Nr   r  r   rl   rt  Fru  rv  r  r  r  r  Tr  rO  z+Product Shop Admin Status Updated for Shop r  rw  r  rD  rx  r  r  ry  r  rT  r   rz  )r   r   r   rH   r   r  r   r  r,  r  rC  r  rO  r  r  r  rN   r   rG  r   r  r  r  r  r  r  rn   r.  )r   r  r   r{  r|  r  r  r  r  r  r  r  r  r   r  r  r  r6  r  r   r  rx   rx   ry   #update_product_product_admin_status;  s   


8
r  r   c           )      C   s  | j d}| j d}| j d}tjj|d }tjd}|r)|j|d}|r1|j|d}g }tjj|d}g }g }	|D ]^}
g }|
j	
 D ]L}|jd	kr{|j|d
 }|jd	krh||_|j|_||_n|j|_|j|_|| || qI|j|d
 }|j|_|j|_|| || qI||
_|	|
 q@tj|dg |r	tjj|d	d}|stjj|d }|r|j| nd}|D ]}tjj||d }|r|jd	krd} nq|rtjj|d }|r|j| n_tjj|d }|r|j| nLtj
 D ]F}tjj|d	d}|s#|j| qd}|D ]}tjj||d }|r@|jd	kr@d} nq'|rM|j| q|j| q|rtjj|d	d}|svtjj|d }|ru|j| nd}|D ]}tjj||d }|r|jd	krd} nqz|rtjj|d }|r|j| ntjj|d }|r|j| n|rtjj|dD ]F}tjj|d	d}|s|j| qd}|D ]}tjj||d }|r|jd	krd} nq|r|j| q|j| qnLtj
 D ]F}tjj|d	d}|s*|j| qd}|D ]}tjj||d }|rG|jd	krGd} nq.|rT|j| q|j| qg }g }|D ]F}tjj|d	d}|sw|j| qbd}|D ]}tjj||d }|r|jd	krd} nq{|r|j| qb|j| qbt|	d} | d}!z| j}"d}#d}$d}%tjj|"|#|$|%d W n   Y | jddkrtdd|!i}&tdd|!i}'t|&|'dS td }(t |(S )!NrN  r~  r  rL  rj  r  ri  r  r  r  r  r  Tr  Fr  r  r  r  r   r$   rO  z<Product Status Updated for Category or Sub Category For ShopzBulk Category update for Shopr  ro  rp  r5  r*  r4  r7  list_product_shop_admin)!r   r   rB   r   r   rG  rG   r   rH   r  r-  r  rl   r  r/  r  r  rN   rE   rC  r  r  rF   r   r   r   rn   r.  rq  rf   r   rb   r   ))r   r   rU  r`  r{  r	  r<  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  rO  r  r  r  r  r  r>  r6  r  r   r  r8  r9  r]  rx   rx   ry   'category_based_shop_admin_update_status  sv  





	

r  c                 C   s  | j dd}| j dd}| j dd}tddd	d
d}tddddd}tddddd}g }| jddkrtt|d}	t| j }
tjj	|	d}|

 r|
jdd}|	|_|  z'| j}d}d}d|j d|j d|jj d|jj }tjj||||d W n   Y tdd |i}t|g d!||||||d"	S i }|
j D ]
\}}|d# ||< q||
j |rtdd |i}t||d||||||d"	S tg |d||||||d"	S tg d$d%id||||||d"	S )&Nimage_link_1/media/icons/icon.jpgimage_link_2)/media/standard_images/standard_image.jpgimage_link_3/media/banners/banner.jpgimage_field.htmluploadimage_reset_button1r  
class_nameimage_reset_button
field_nameupload2image_reset_button2r  upload3image_reset_button3r  ro  rp  rL  rM  Fr  rO  r  rX  rD  r  rZ  r  zsub_category_delete_list.htmlrV  T)	r  r%  rT  image_field1image_field2image_field3link_1link_2link_3r   r^  zSomething went wrong try again)r   r   rf   rq  r   rE   r2   rF   r   r   r+  r,  rN  r   r]  r^  rR  rS  rn   r.  r   r%  itemsr/  )r   rU  r  r  r  r  r  r  r%  rN  r  r  rV  r6  r  r   r  sub_categoriesr   r   r  rx   rx   ry   sub_category_creation  sn   
(

r  c                 C   sd   | j dd }|rtjj|d}ntj }g }|D ]}||j|j|j	|j
jd qtd|iS )NrU  r  )r  namepricerN  r>  )r   r   rG   r   r   r-  r/  r  r  r  rN  r   )r   rU  r>  r<  rO  rx   rx   ry   filter_products  s   

r  c                 C   z   | j dd}| j dd}| j dd}tddd	d
d}tdddd|d}tdddd|d}t||||||dS )Nr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  linkr  r  r  r  r  r  r  r  r  r   r   rf   r   r   r  r  r  r  r  r  rx   rx   ry   image_field_renderingB     r  c              	   C   r   )Nr      r   r$   r   )tag_datar  ztag_list.html)rK   r   r   r   r   r   r   r   r   r   r   r   )r   tagsr  r   r   rx   rx   ry   tag_listN     

r  c                 C   r  )NrA  r  )rK   r   r   rF  r   )r   tag_idr  rx   rx   ry   
tag_delete^     r  c                 C   s   g }t t|d}| jdkr4t| j| j|d}| r-| jddr%d |j_	|
  tdS ||j nt|d}|dd}t| d	|S )
NrA  r   rc  r  rp   r  r   )tag_formr  ztag_edit.html)r   rK   r   r4   r   r  r+  r   rd  r  r,  r   r/  r%  r   )r   r  r%  r  ro  r   rx   rx   ry   tag_editi  s   


r  c                 C   v   g }| j dkr,t| j| j}| r| }tdS ||j ||dd}t	| d|S t }||dd}t	| d|S )Nr   r  r   )r%  r  r  ztag_add.html)
r   r4   r   r  r+  r,  r   r/  r%  r   )r   r%  r  r  r   rx   rx   ry   tag_add~  $   
r  c              	   C   r   )Nr   r  r   r$   r   )filter_datar  zdynamic_filter_list.html)rL   r   r   r   r   r   r   r   r   r   r   r   )r   filter_listr  r   r   rx   rx   ry   dynamic_filter_list  r  r  c                 C   r  )NrA  r  )rL   r   r   rF  r   )r   	filter_idr  rx   rx   ry   dynamic_filter_delete  r  r  c                 C   sn   g }t t|d}| jdkr't| j|d}| r |  tdS ||j	 nt|d}|dd}t
| d|S )NrA  r   rc  r  r   )filter_formr  zdynamic_filter_edit.html)r   rL   r   r5   r   r+  r,  r   r/  r%  r   )r   r  r%  r  ro  r   rx   rx   ry   dynamic_filter_edit  s   


r  c                 C   r   g }| j dkr*t| j}| r| }tdS ||j ||dd}t| d|S t }||dd}t| d|S )Nr   r  r   )r%  r  r  zdynamic_filter_add.html)	r   r5   r   r+  r,  r   r/  r%  r   )r   r%  r  r   r   rx   rx   ry   dynamic_filter_add  s$   

r  c              	   C   r   )Nr   r  r   r$   r   )special_datar  zspecial_list.html)rM   r   r   r   r   r   r   r   r   r   r   r   )r   special_product_listr  r   r   rx   rx   ry   special_list  r  r  c                 C   r  )NrA  r  )rM   r   r   rF  r   )r   special_list_idr  rx   rx   ry   special_list_delete  r  r  c                 C   s   g }t t|d}| jdkrJt| j| j|d}| rC| jddr%d |j_	| jddr0d |j_
| jddr;d |j_|  tdS ||j nt|d}|d	d
}t| d|S )NrA  r   rc  r  rp   r  r  r  r   )special_formr  zspecial_list_edit.html)r   rM   r   r6   r   r  r+  r   rd  r  r  r  r,  r   r/  r%  r   )r   r  r%  r  ro  r   rx   rx   ry   special_list_edit	  s"   


r  c                 C   r  )Nr   r  r   )r%  r  r  zspecial_list_add.html)
r   r6   r   r  r+  r,  r   r/  r%  r   )r   r%  ro  specialr   rx   rx   ry   special_list_add"  r  r  c                   @   s   e Zd ZdZdd ZdS )SendVerificationEmailViewz*
    View to send verification email.
    c           	   
   C   s   |j }tt|d}|jdkrddd}t|d|S tjt|jt	
 tdd d	tjd
d}|td|gd}ztd| |j dddd}W n tyd } zt|ddd}W Y d }~nd }~ww t|d|S )NrA  verifiedzPhone  alreay verified .r   )r   rl   phone_verification.html   )hours)delivery_boyexpHS256)	algorithmzverify-phone)argszclick here to verify: z,Verification link sent to your phone number.r$   )r   rl   send)r   r   rS   rl   r   jwtencoder_  rB  r   r   r_   r   
SECRET_KEYbuild_absolute_urirb   smsrv  rH  )	selfr   r  r   delivery_boysr   tokenverification_linkrJ  rx   rx   ry   postH  s&   

 zSendVerificationEmailView.postN)__name__
__module____qualname____doc__r  rx   rx   rx   ry   r  B  s    r  c                   @   s   e Zd Zdd ZdS )VerifyEmailViewc              
   C   s   z$t j|tjdgd}tt|d d}d|_|  t|dddd	d
W S  t j	y8   t|dd	dd	d
 Y S  t j
yK   t|dd	dd	d
 Y S w )Nr  )
algorithmsr  rA  r  r  r$   z#Phone number verified successfully.r   )rl   r   r  zVerification link has expired.zInvalid verification link.)r  decoder   r  r   rS   rl   r,  r   ExpiredSignatureErrorInvalidTokenError)r  r   r  payloadr  rx   rx   ry   r   q  s.   
zVerifyEmailView.getN)r  r  r  r   rx   rx   rx   ry   r  p  s    r  r   c              	   C   s   t jdj| jjd}|r|d }nd}tjj|dd}t|d}| j	
d}z||}W n ttfyA   |d	}Y n tyO   ||j}Y nw |d
d}t| d|S )Nr   r   r   rp   rb  rj  r  r   r$   r   )delivery_boy_dataorders_activezdelivery_boy_list.html)rB   r   r   r   r   r   rS   r   r   r   r   r   r   r   r   r   r   )r   r   r   r  r  r   r   rx   rx   ry   delivery_boy_list  s$   


r  c                 C   r  )NrA  r  )rS   r   r   rF  r   )r   delivery_boy_idr  rx   rx   ry   delivery_boy_delete  r  r  c                 C   s   g }t jj|d }| jdkr1t| j|d}| r*| }d|_	|  t
dS ||j nt|d}|dd}t| d|S )	NrA  r   rc  znot verifiedr  r   )delivery_boy_formr  zdelivery_boy_edit.html)rS   r   r   rG  r   r7   r   r+  r,  rl   r   r/  r%  r   )r   r  r%  r  ro  r   rx   rx   ry   delivery_boy_edit  s   


r   c                 C   s   g }| j dkrFtjdj| jjd}|r|d }nd}t| j}|	 r4|
 }||_|
  tdS ||j ||dd}t| d	|S t }||dd}t| d	|S )
Nr   r   r   r   rp   r  r   )r%  r  r  zdelivery_boy_add.html)r   rB   r   r   r   r   r   r7   r   r+  r,  r	  r   r/  r%  r   )r   r%  r   r   ro  r  r   rx   rx   ry   delivery_boy_add  s4   


r  c                 C   s@   ddl m} d}d}d}t|}|||}|jj||| d}d S )Nr   )Client"ACfc9c614f2bef8ec1f28de11cb0c817ce 1ee4f85a13e7475e7b236daca7017721z+14178043450)tofrom_body)twilio.restr  r_  r   r.  )r  to_phoner  account_sid
auth_tokenfromphtwilio_clientr   rx   rx   ry   r    s   

r  c              	      s  zt jj| jjd}|r|d }nd}g }| jd}| jd}| jdkrtjj|d	 }t
jj|d	 }t| j|d	}	|	 r|	 }
||
_d
|
_|
  |jdkrwd|_|  d}d}zt  t|jj||||j W n   Y td||jdW S ||	j td|	jdW S | jdd}| jdd}| jdd}| jdd}|s|}| jdd}|s|}|rt
jj|ddgdjddd}nt
jjddjddd}| jddkrO|r|t|d t|d!B t|d"B t|d#B d}|rt |d$}|j|d%}|r|j|d&}|rO|rO|d'kr9|d(kr3||d) }n||}n|d(krH|d*| d) }n|d*| }t!|d+}| jd,}z|"|}W n  t#t$fyr   |"d-}Y n t%y   |"|j&}Y nw t'd. | j( d,v rd,=  fd/d0|j)j*D }t }	z
t+jjd1|d2}W n   g }Y |	||||||d3d4}| jddkrt,d5|||d6}t,d7d8|i}t||d9W S g }t-| d:|}|W S  t.y   g d3d;}t-| d:| Y S w )<Nr   r   rp   r  
sort_orderr   orderrA  rc  Courier Deliveryr   
DespatchedzOrder Despatchedz"Your Order Despatched SuccessfullyrT  rl   order_idOrderIDfailr  rF  rG  rH  r   zPick Up)r   order_type__inr   r   rj  r   r   ro  rp  order_ID__icontainsorder_type__icontainsorder_status__icontains user_uuid__first_name__icontainsrR  r   rS  asc	user_uuid__first_name-r  r   r$   
order_listc                    rT  rU  rY  r[  r\  rx   ry   r  e  r_  zorder_list.<locals>.<listcomp>r  rl   r	  r   )courier_form
order_datar`  r   rH  ra  ongoing_ordersr  zorder_list_page.htmlr(  ra  r)  order_list_pagination.htmlr(  r7  zorder_list.htmlr(  r  )/rB   r   r   r   r   COOKIESr   r   rU   rG  rT   r9   r   r+  r,  r  delivery_typer   ra   r`   r"  	fcm_tokenr   order_IDr/  r%  r   r   r   rq  re   r   rb  r   r   r   r   r   r   rb   rc  r  rd  rS   rf   r   
IndexError)r   r  r   r   r%  r  r  order_deliveryr  ro  delivery_datatitler  r`  
order_dater   sort_order_datafield_name_datar%  rf  r  r   ordersra  r)  r   r8  r9  responserx   r\  ry   r%    s   



$





r%  c           	      C   s   | j d}g }d}tjj|d }|r#t|d}|jjdkr"d}nt	jj|d }tjj
d|d	}t|d}|jdkr@d}td
|||d}td|dS )Ncsrfmiddlewaretokenfalser  rc  r   truerL  r  )r.  r  zcourier_edit_form.html)r'  r  button_statusTrT  ro  )r   r   rU   r   r   rG  r9   r  r   rT   r.  rf   r   )	r   r  csrfr%  r=  r2  ro  r  r'  rx   rx   ry   courier_details_edit  s$   



r@  c                   @   s   e Zd Zdd Zdd ZdS )ShipperAutocompletec                 C   s   |j  S rq   )team_member_name)r  itemrx   rx   ry   get_result_label  s   z$ShipperAutocomplete.get_result_labelc                 C   s(   t jjddd}| jr|j| jd}|S )Nr  not assigned)rl   delivery_boy_status)team_member_name__istartswith)rS   r   r   q)r  r)  rx   rx   ry   get_queryset  s   z ShipperAutocomplete.get_querysetN)r  r  r  rD  rI  rx   rx   rx   ry   rA    s    rA  c              
   C   s$  | j dkr| jd}| jd}| jd}| jd}z^tjj|d }| jd}tjj|d }|jd	v rEt	d
ddW S |jdkrRt	d
ddW S |jdkr_t	d
ddW S |jdkrlt	d
ddW S d|_t
 |_||_tjj||d|jid}d|_|  |  zd|j }	tjj|jd }|rBt|jjd t|jj d t|jj d t|jj d t|jj d t|jj d t|jj d t|jj }
t|jjd t|jj  d t|jj! d t|jj d t|jj d t|jj d t|jj }|jj"}|jj#}|jj"}|jj#}d| d| d| d| }||
|d}t$|j%|j&|}W n t'yZ } z
t(| W Y d }~nd }~ww zt)  d }d!}t*|j+j,||||j+ W n   Y t	d"|||d#W S    t	d$|||d# Y S t	d%d$iS )&Nr   shipper_uuidr   rF  rG  rA  
order_uuidrL  )r   r   FzOrder not confirmed)rT  r   r   zOrder already deliveredr   zOrder FailedDelivery AssignedzOrder already Assignedr.  )r  r  r  assignedzYou are Assigned to the Order r  z, ry  r  z), ,z https://www.google.com/maps/dir/r\  )pick_up_addressdrop_addressgoogle_place_linkzOrder AssignedzFYour Order Assigned Successfully, Delivery Boy will reach you shortly!True)rT  r   rF  rG  FalserT  )-r   r   r   rS   r   r   rG  rT   r   r   r   r   order_assigntimer  rU   r  r   rF  r,  r0  r_  rP  r  house_number_or_namer  	land_markr  r  r  r  r   r  r  r  r  r  "send_whatsapp_message_delivery_boyrv  rB  rH  rI  ra   r`   r"  r/  )r   rJ  r   rF  rG  shipperrK  r  r  whatsapp_msgrP  rO  	START_LAT	START_LNGDEST_LATDEST_LNGrQ  r  rJ  r4  r  rx   rx   ry   save_shipper  sj   




|lr^  c              
   C   s  | j dkrx| jd}| jd}| jd}z?| jd}| jd }tjj|d }||_|	  |dkrz
t
|j|j}W n   t
 }Y | t
   }| }	t|	d	d
 }
|
d
k rud|_t
 |_|	  n!|
dk r|
d
krd|_t
 |_|	  nd|_t
 |_|	  |dkrd|_t
 |_|	  z|j}tjj|d }|jdkrd|_|	  W n   Y |dv rd|_t
 |_|	  |dkrz|j}tjj|d }|jdkrd|_|	  W n   Y |	  zt  W n   Y |dkrd}n|dkrd}n|dkrd}n
|dkr&d}nd}|}zt|jj||||j W n tyN } z
t| W Y d }~nd }~ww td|||dW S  tyw } ztdt||||dW  Y d }~S d }~ww d S ) Nr   r   rF  rG  rK  selected_valuerL  r     r   Redr$   OrangeWhiter   Dark RedrA  rM  rE  )zDelivery Assingedr  r   r   zJYour Order Packed Successfully, Delivery Boy will pick your order shortly!rL  zPYour Order Assigned Successfully, your order will reach your foot steps shortly!z^Your Order Delivered Successfully, Please give your valuable feed for better future endevours!zSorry! Your Order Failed!z'Your Order Status will be updated soon!rT  rl   r   rF  rG  r  rl   msgr   rF  rG  )r   r   r   striprT   r   r   rG  r   r,  r   combinedelivery_slot_datedelivery_slot_timer   
astimezonetotal_secondsdivmodcolor_statuscolor_status_updation_timer  rS   rF  ra   r`   r"  r/  rH  rI  r   r_  )r   r   rF  rG  rK  rl   r  combined_datetimetime_dif_with_del_slotduration_in_s_data	hours_delrJ  rX  r  r4  rJ  rx   rx   ry   save_order_status  s   














$ru  c              
   C   s   | j dkr[z:| jd}| jd}tjj|d }|s%tdddW S |jdkr2tdd	dW S ||_|	  td
diW S  t
yZ } ztdt|dW  Y d }~S d }~ww d S )Nr   rK  r_  rL  r  Order not foundrl   rg  	Contactedz;Order status cannot be changed after being set to Contactedrl   rT  )r   r   r   rT   r   r   rG  r   r   r,  rH  r_  )r   rK  rl   r  rJ  rx   rx   ry   save_customorder_statusy  s"   

ry  c                 C   s   | j dkr;| jd}tjj|d }|stdddS t| j|d}|	 r3|
  tdd	d
S td|jdS tddd
S )Nr   r0  r0  r  rv  rw  rc  rT  zOrder updated successfullyr  r   r  r  )r   r   r   rT   r   r   rG  r   r@   r+  r,  r%  )r   r   r  ro  rx   rx   ry   save_customorder_data  s   
r{  c           	   
   C   s  | j dkr| jd}| jd}| jd}zTtjj|d }|jdkrbd|_|  d}d	}zt	  t
|jj||||j W n tyW } z
t| W Y d }~nd }~ww td
|||dW S td|||dW S  ty } ztdt||||dW  Y d }~S d }~ww d S )Nr   r   rF  rG  rz  r   r   zOrder Viewedz:Your Order Viewed by the Merchant and will be packed soon!rT  re  r  rf  )r   r   r   rT   r   r   rG  r   r,  ra   r`   r"  r/  rH  rI  r   r_  )	r   orderIDr   rF  rG  r  r4  r  rJ  rx   rx   ry   order_status_update_to_viewed  s4   

$r}  c              	   C   r  )Nr   r  r   r$   r   )coupon_datapromotion_activezcoupon_list.html)rV   r   r   r   r   r   r   r   r   r   r   r   )r   couponr  r   coupon_list_datar   rx   rx   ry   coupon_list     

r  c                 C   sL   t jj|d}|r"tjj|d}|rt| tjd tdS |  tdS )NrA  )Couponz/Your coupon used in ads! couldn't delete couponlist_coupons)	rV   r   r   rY   r   r  r)  rF  r   )r   	coupon_idr  r-  rx   rx   ry   coupon_delete  s   
r  c              
   C   sv  g }t jj|d }| jdkr$| j }d|dd v r1|dd }|r+|d |	d| d|dd v rL|dd }|rF|d |	d| d|dd v rg|dd }|ra|d |	d| d|dd v r|dd }|r||d |	d| |
dd }	z"|	d	kr|d= |d= |d= n|	d
kr|d= |d= n|	dkr|d= W n   Y t|| j|d}
|
 r| j
ddrd |
j_| j
ddkrd |
j_d |
j_nd |
j_z|
  W n- ty } z |j}|
t| d |jd  td|
jdW  Y d }~S d }~ww tddiS ||
j td|
jdS t|d}
||
|jd|j|jd}t | d|S )NrA  r   rp   ApplicableCategoryApplicableSubCategoryApplicableProductApplicableSkuCouponOnCategorySubCategoryr'  rc  r  
CouponTypeamountr   Fr  rT  Tr   )r%  coupon_formr  r  r~  coupon_typezcoupon_edit.html)!rV   r   r   rG  r   r   rc  r  r  setlistr   r:   r  r+  rd  IconDiscountPercentageMaxDiscountAmountForPercentageDiscountAmountr,  r   message_dict	add_errorr0  r1  r   r   r%  r/  rB  r  r  r   )r   r  r%  r  	post_datar  r  r<  r  	coupon_onro  rJ  
error_datar   rx   rx   ry   coupon_edit  s   







r  c              
   C   sX  g }| j dkr| j }d|dd v r(|dd }|r"|d |d| d|dd v rC|dd }|r=|d |d| d|dd v r^|dd }|rX|d |d| d|dd v ry|dd }|rs|d |d| |dd }z"|dkr|d= |d= |d= n|d	kr|d= |d= n|d
kr|d= W n   Y t|| j}|	 r| jddrd |j
_| jddkrd |j
_d |j
_nd |j
_z|  W n- ty }	 z |	j}
|t|
 d |	jd  td|jdW  Y d }	~	S d }	~	ww tddiS ||j td|jdS t }g }||dddd}t| d|S )Nr   rp   r  r  r  r  r  r  r  r'  r  r  r  r   Fr  rT  Tr   )r%  r  r  r~  r  zcoupon_add.html)r   r   rc  r  r  r  r   r:   r  r+  rd  r  r  r  r  r,  r   r  r  r0  r1  r   r   r%  r/  r   )r   r%  r  r  r  r<  r  r  r  rJ  r  r   rx   rx   ry   
coupon_add5  s   






r  )r   r   r   c              	   C   r  )Nr   r  r   r$   r   )delivery_slot_datar  zdelivery_slot_list.html)rW   r   r   r   r   r   r   r   r   r   r   r   )r   delivery_slotsr  r   delivery_slotr   rx   rx   ry   delivery_slot_list  s   

r  c                 C   r  )NrA  r  )rW   r   r   rF  r   )r   delivery_slot_idr  rx   rx   ry   delivery_slot_delete  r  r  c                 C   st   g }t jj|d }| jdkr*t| j|d}| r#| }t	dS |
|j nt|d}|dd}t| d|S )NrA  r   rc  r  r   )delivery_slot_formr  zdelivery_slot_edit.html)rW   r   r   rG  r   r;   r   r+  r,  r   r/  r%  r   )r   r  r%  r  ro  del_slotr   rx   rx   ry   delivery_slot_edit  s   


r  c                 C   r  )Nr   r  r   )r%  r  r  zdelivery_slot_add.html)	r   r;   r   r+  r,  r   r/  r%  r   )r   r%  ro  r  r   rx   rx   ry   delivery_slot_add  s$   

r  c              	   C   r  )Nr   r  r   r$   r   )discount_datar  zdiscount_list.html)rX   r   r   r   r   r   r   r   r   r   r   r   )r   discountr  r   discount_list_datar   rx   rx   ry   discount_list  r  r  c                 C   sH   t jj|d}|rtjj|d}t| tjd tdS |  tdS )NrA  )rX   z3Your Discount used in ads! couldn't delete discountlist_discounts)	rX   r   r   rY   r   r  r)  rF  r   )r   discount_idr  r-  rx   rx   ry   discount_delete  s   
r  c                 C   s  g }t jj|d }| jdkr| j }d|dd v r0|dd }|r*|d |	d| d|dd v rK|dd }|rE|d |	d| d|dd v rf|dd }|r`|d |	d| d|dd v r|dd }|r{|d |	d| |
dd }	z"|	d	kr|d= |d= |d= n|	d
kr|d= |d= n|	dkr|d= W n   Y t|| j|d}
|
 r| j
ddrd |
j_| j
ddrd |
j_|
  tddiS ||
j td|
jdS t|d}
||
|jd|jd}t| d|S )NrA  r   rp   r  r  r  r  
DiscountOnr  r  r'  rc  r  r  rT  TFr  r   )r%  discount_formr  r  r  zdiscount_edit.html)rX   r   r   rG  r   r   rc  r  r  r  r   r<   r  r+  rd  StandardImageBannerImager,  r   r/  r%  rB  r  r   )r   r  r%  r  r  r  r  r<  r  discount_onro  r   rx   rx   ry   discount_edit  sp   






r  c           
      C   s  g }| j dkr| j }d|dd v r'|dd }|r!|d |d| d|dd v rB|dd }|r<|d |d| d|dd v r]|dd }|rW|d |d| d|dd v rx|dd }|rr|d |d| |dd }z"|dkr|d= |d= |d= n|d	kr|d= |d= n|d
kr|d= W n   Y t|| j}|	 r| jddrd |j
_| jddrd |j
_|  tddiS ||j td|jdS t }g }||ddd}	t| d|	S )Nr   rp   r  r  r  r  r  r  r  r'  r  r  rT  TFr  r   )r%  r  r  r  zdiscount_add.html)r   r   rc  r  r  r  r   r<   r  r+  rd  r  r  r,  r   r/  r%  r   )
r   r%  r  r  r  r<  r  r  r  r   rx   rx   ry   discount_add=  sn   





r  c                 C   r  )Nr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rx   rx   ry   image_field_style  r  r  c              	   C   r  )Nr   r  r   r$   r   )ad_datar  zad_list.html)rY   r   r   r   r   r   r   r   r   r   r   r   )r   adr  r   ad_list_datar   rx   rx   ry   ad_list  r  r  c                 C   r  )NrA  list_ad)rY   r   r   rF  r   )r   ad_idr  rx   rx   ry   	ad_delete  s   r  c                 C   st  g }t jj|d }| jdkrt| j| j|d}| jdd}| jdd}| jdd}|	 r|j
dd	}|jdkrQztjj|d }||_W n6   Y n1|jdkrjztjj|d }	|	|_W n   Y n|jdkrztjj|d }
|
|_W n   Y | jd
drd |j_| jddrd |j_|
  tdS ||j nt|d}||d|jd}t| d|S )NrA  r   rc  r  rp   rX   r'  Fr  r  r  r  r   r%  ad_formr  r  zad_edit.html)rY   r   r   rG  r   r=   r   r  r   r+  r,  AdTyperV   r  rX   rG   r'  rd  r  r  r   r/  r%  r   )r   r  r%  r  ro  r  r  rO  coupon_instancediscount_instanceproduct_instancer   rx   rx   ry   ad_edit  sR   







r  c                 C   sn  g }| j dkrt| j| j}| jdd}| jdd}| jdd}| r|jdd}|jdkrFztj	j
|d }||_W n6   Y n1|jdkr_ztj	j
|d }||_W n   Y n|jdkrwztj	j
|d }	|	|_W n   Y | jd	drd |j_| jd
drd |j_|  tdS ||j ||d|jjd}
nt }g }||ddd}
t| d|
S )Nr   r  rp   rX   r'  Fr  rA  r  r  r  r   r  zad_add.html)r   r=   r   r  r   r+  r,  r  rV   r   r   rG  r  rX   rG   r'  rd  r  r  r   r/  r%  r   )r   r%  ro  r  r  rO  r  r  r  r  r   rx   rx   ry   ad_add  s\   






r  c                 C   s   g }| j dkrmt| j| j}| rf| }| jd}|D ]
}tjj	||d q| jd}|D ]
}t
jj	||d q1z!| j}d}	d}
d|j d	|j d
}tjj	||	|
|d W tdS    Y tdS ||j nt }||d}t| d|S )Nr   r  custom_productr  r  r  r  rO  zCustom Product AddedzCustom Product rD  z added r  custom_product_listing)r%  custom_product_formzcustom_product_add.html)r   r>   r   r  r+  r,  r  rP   r   r.  rQ   r   r  r  rn   r   r/  r%  r   )r   r%  r  r  r  r  r  r  r6  r  r   r  r   rx   rx   ry   custom_product_add!  s6   
r  c                 C      t j }t| dd|iS )Nzcustom_product_list.htmlr*  )rO   r   r-  r   )r   r*  rx   rx   ry   r  Q  s   
r  c           	   
   C   s   t t|d}|}| jdkrL|  z!| j}d}d}d|j d|j d}tjj	||||d W td	S  t
yK } zt| W Y d }~td	S d }~ww t| d
d|iS )NrA  r   rO  zCustom Product deletedCustom product rD  z	 deleted r  r  zdelete_confirmation.html)r   rO   r   rF  r   r  r  rn   r   r.  rH  rI  r   r   )	r   r  rO  r*  r6  r  r   r  rJ  rx   rx   ry   delete_custom_productX  s(   

r  c                 C   s  g }t t|d}t| jpd | jpd |d}| jdkrx| rr| }| jd}|D ]
}t	j
j||d q*| jd}|D ]
}tj
j||d q=z!| j}	d}
d	}d
|j d|j d}tj
j|	|
||d W tdS    Y tdS ||j |||d}t| d|S )NrA  rc  r   r  r  r  r  rO  zCustom Product Updatedr  rD  z	 updated r  r  )r%  r  r  zcustom_product_edit.html)r   rO   r>   r   r  r   r+  r,  r  rP   r   r.  rQ   r   r  r  rn   r   r/  r%  r   )r   r  r%  r  r  r  r  r  r  r6  r  r   r  r   rx   rx   ry   custom_product_edit  s8   
r  c           	      C   sr   t t|d}|jj}|  z | j}d}d}d|jj d|jj d}tj	j
||||d W n   Y td|d	S )
Nr  rO  zCustom Product Image deletedr  rD  z deleted its imager  r  r  )r   rP   r  r  rF  r   r  r  rn   r   r.  r   )	r   r  r"  r  custom_product_idr6  r  r   r  rx   rx   ry   delete_custom_image  s   r  c           
   
   C   s   t t|d}|jj}|  z | j}d}d}d|jj d|jj d}tj	j
||||d W n tyD }	 z
t|	 W Y d }	~	nd }	~	ww td|d	S )
Nr  rO  zCustom Product Video deletedr  rD  z deleted its videor  r  r  )r   rQ   r  r  rF  r   r  r  rn   r   r.  rH  rI  r   )
r   r  r%  r  r  r6  r  r   r  rJ  rx   rx   ry   delete_custom_video  s   r  c              	   C   r   )Nr   r   r   r$   r   )production_unit_datar   zproduction_unit_list.html)rD   r   r   r   r   r   r   r   r   r   r   r   )r   production_unitr  r   r   rx   rx   ry   r    r  r  c                 C   sx   g }| j dkr+t| j}| r|  tdS ||j ||ddd}t| d|S t }g }||dd}t| d|S )Nr   production_unit_listr$  r   )r%  production_unit_formr)  r   zproduction_unit_add.html)r%  r  r   )	r   r?   r   r+  r,  r   r/  r%  r   )r   r%  r  r   rx   rx   ry   production_unit_add  s(   

r  c                 C   r  )NrA  r  )rD   r   r   rF  r   )r   pu_idpurx   rx   ry   production_unit_delete  r  r  c                 C   sn   t t|d}g }| jdkr't| j|d}| r |  tdS ||j	 nt|d}|dd}t
| d|S )NrA  r   rc  r  r   )pu_formr   zproduction_unit_edit.html)r   rD   r   r?   r   r+  r,  r   r/  r%  r   )r   r  r  r%  r  r   rx   rx   ry   production_unit_edit$  s   


r  c                 C   r  )Nzfaq.htmlfaqs)r   r   r-  r   )r   r  rx   rx   ry   faq6  s   
r  c                 C   sP   | j dkrt| j}| r|  tdS t| d nt }t| dd|iS )Nr   r  -There was an error with your form submission.zadd_faq.htmlro  )	r   r(   r   r+  r,  r   r   r   r   )r   ro  rx   rx   ry   add_faq<  s   

r  c                 C   sf   t t|d}| jdkr%t| j|d}| r|  tdS t	| d nt|d}t
| d||dS )Nr  r   rc  r  r  zedit_faq.html)ro  r  )r   r   r   r(   r   r+  r,  r   r   r   r   )r   faq_idr  ro  rx   rx   ry   edit_faqK  s   

r  c                 C   s   t t|d}|  tdS )Nr  r  )r   r   rF  r   )r   r  r  rx   rx   ry   
delete_faq[  s   r  c                 C   s  t j }tj }tj }tj }tj }| jdkrd| jv r8t	| j| j
|d}| r4|  tdS d| jv rPt| j|d}| rL|  tdS d| jv rht| j|d}| rd|  tdS d| jv rt| j|d}	|	 r||	  tdS d| jv rt| j|d}
|
 r|
  tdS t	|d}t|d}t|d}t|d}	t|d}
t| d	|||||||||	|
d

S )Nr   edit_about_usrc  edit_contact_usedit_app_urledit_privacy_policyedit_terms_conditionsabout_uszabout_us.html)
r  
contact_usapp_urlprivacy_policyterms_and_conditionsabout_us_formcontact_us_formapp_url_formprivacy_policy_formterms_conditions_form)r   r   rG  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  rx   rx   ry   r  d  s`   
















r  c                 C   P   t j }t| jp
d |d}| jdkr| r|  tdS t	| d||dS )Nrc  r   r  zprivacy_policy.html)ro  policy)
r"   r   rG  r)   r   r   r+  r,  r   r   )r   r  ro  rx   rx   ry   privacy_policy_view  s   
r  c                 C   r  )Nrc  r   r  zterms_conditions.html)ro  terms)
r#   r   rG  r,   r   r   r+  r,  r   r   )r   r  ro  rx   rx   ry   terms_conditions_view  s   
r  c                 C   
   t | dS )Nzdelivery_settings.htmlr   r  rx   rx   ry   delivery_settings     
r  c              	      s  zOt jdj| jjd}|d }g }| jd}| jd}| jdd}| jdd}| jd	d}	| jdd}
|
s@|}
| jdd}|sK|}t	jj|d
dj
ddd}| jddkr|r~|t|dt|dB t|dB t|dB d}|rt|d}|j|d}|	r|j|	d}|
r|r|
dkr|dkr||d }n||}n|dkr|d| d }n|d| }t|d}| jd}z||}W n ttfy   |d}Y n ty   ||j}Y nw td | j dv rd=  fd d!|jjD }t }tjjd"|d#}|||||	|d$|d%}| jddkrHtd&|||d'}td(d)|i}t||d*W S t| d+|}|W S  tye   g d$d,}t| d+| Y S w )-Nr   r   r   r  r  rF  rp   rG  rH  zCustom Orders)r   r   r   r  rj  ro  rp  r  r  r  r  rR  r   rS  r!  r"  r#  r$  r  r   r$   custom_ordersc                    rT  rU  rY  r[  r\  rx   ry   r    r_  z!custom_orders.<locals>.<listcomp>r  r&  r   )
order_formr(  r`  r   rH  ra  r  r)  zcustom_order_list_page.htmlr*  r+  r(  r7  zcustom_orders.htmlr,  ) rB   r   r   r   r   r   r-  r   r   rT   r   r   rq  re   r   rb  r   r   r   r   r   r   rb   rc  r  rd  r@   rS   rf   r   r   r1  )r   r  r   r   r%  r  r  r`  r5  r   r6  r7  r%  rf  r  r   r8  ra  ro  r)  r   r8  r9  r9  rx   r\  ry   r    s   



r  c           
   
   C   s  | j dkr| jd}tjj|d }|stdddddS t| j|d	}|	 r| jd
d}|
  zW n  tyW } z|dd td|jdW  Y d }~S d }~ww d|_|
  d}d| }zt  t|jj||||j W n ty } z
t| W Y d }~nd }~ww td|j|jdS td|jdS | j dkr| jd}tjj|d }|rt|d	}nt }td|||jd}	td|	dS tdddddS )Nr   r0  rz  r  rv  r  i  rk   rc  r   0zPayment link creation failed!r  Bill Createdz#Bill Created for your custom order rT  r  r   r  rL  zorder_status_update_form.html)r  r  r   Tr>  r    )r   r   r   rT   r   r   rG  r   r@   r+  r,  rH  r  r%  r   ra   r`   r"  r/  rI  r   r0  r   rf   )
r   r|  r  ro  r   rJ  r4  r  r  	form_datarx   rx   ry   custom_order_edit%  sV   


r  c                 C   r  )Nzsystem_settings.htmlr  r  rx   rx   ry   system_settingsx  r  r  c           	   
      s$  | j dkrzd|  I d H }| jd}| jd}tt	 |	 t
j }t||rat|}|d dd}|rXtjj|d }d|_|  tjj||d	 d
d tddiddW S tdddddW S  ty } ztddt|dddW  Y d }~S d }~ww tdddddS )Nr   zutf-8zX-Razorpay-Signaturenotesr|  rp   rz  r   r  paid)r  razorpay_order_idpayment_statusrl   rT     rk   r   zPayment verification failedr  r  zSomething went wrong!)rl   r   r   r  zMethod not allowedr  i  )r   jsonr  r  rq  r   hmacnewRAZORPAY_WEBHOOK_SECRETr  hashlibsha256	hexdigestcompare_digestloadsrT   r   r   rG  r   r,  rZ   r.  r   rH  r_  )	r   r  r  received_signaturegenerated_signature
event_datar|  r  rJ  rx   rx   ry   custom_order_payment  sL   



r  c                 C   sf  | j d}|dkr?dd tj D }z|r#tt||dddW S tg |dddW S  ty>   tg |ddd Y S w |dkrxd	d tj D }z|r\tt||dddW S tg |dddW S  tyw   tg |ddd Y S w |d
krdd t	j D }z|rtt||dddW S tg |dddW S  ty   tg |ddd Y S w d S )Nrs   rX   c                 S      g | ]	}|j |jd qS )r  r  )r  DiscountNamert   r   rx   rx   ry   r        zchoice_list.<locals>.<listcomp>)tablestypeFr:  r  c                 S   r  r  )r  
CouponNamer  rx   rx   ry   r    r  r'  c                 S   r  r  )r  r  r  rx   rx   ry   r    r  )
r   r   rX   r   r-  r   r0  StopIterationrV   rG   )r   rs   discount_choicecoupon_choiceproduct_choicerx   rx   ry   choice_list  sF   r#  c           	      C   s  t  }tjjg dd}g d}|D ]}z|jr7|jr7t|j|j}|	 t
 	  }| }|d }nd}|jdksC|jdkr|dk r]|jd	kr]|j|vr]d
|_t
 |_|  |dkrr|j|vrrd|_t
 |_|  |dk r|dkr|j|vrd|_t
 |_|  |jd	kr|dkr|j|vrd|_t
 |_|  |dk r|dkr|j|vrd|_t
 |_|  |jdkrd|_t
 |_|  W q   Y qtddiS )Nr   r   )rL  r  rx  r   r   r   r`  r   r   r   r   r   Yellowra  r$   rb  r   rd  StatusT)r   r   rT   r   r   rk  r   ri  rj  rl  r   rm  r   ro  rp  r,  r   )	r   r   r8  status_excludedr   rq  rr  rs  rt  rx   rx   ry   my_polling_task  s\   












r'  c                 C   sP   t jdddd}t|d}| jd}||}|dd}t	| d	|S )
Nr   r   message__adsr   r  r   r   )msg_datar  zcommunication_list.html)
r[   r   select_relatedr   r   r   r   r   r   r   )r   rg  r  r   msg_list_datar   rx   rx   ry   list_communication  s   


r,  c                 C   s  | j dkrt| j}| r| }tjjdd}|D ]}|jr|j	r|j
dkriz(tjjddd }td|j d	|j d
|jj d tjj||d W q tyh } ztd| W Y d }~qd }~ww |j
dkrzBtjjddd }|jj}d|j d|j d
|jj }	|jg}
tj}tj|t|jj}t||	|
| tjj||d W q ty } ztd| W Y d }~qd }~ww zt d|jj|j|jj tjj||d W q ty } ztd| W Y d }~qd }~ww qt!dS td|j" nt }t#| dd|iS )Nr   rh  r   r  r   )message_typer   zDear u+   ,
Surpricing offer for you from Navya🎉 

z+919961073407)r   r   z
SMS Error:z,
we are providing
zEmail Error:l   	vWzWhatsApp Error:communication_listzForm Errors:zsend_message.htmlro  )$r   rA   r   r+  r,  rm  r   r   r   rv  r-  r\   r   rG  r  rt  r   r-  AdDescriptionr[   r.  rH  rI  AdTitler   
MEDIA_ROOTospathr~   r_  r  send_email_attachmentsend_whatsapp_messager   r%  r   )r   ro  msg_form	customerscustomersmsmsgrJ  emailmsgr5  
email_bodyto_email
media_rootfilepathrx   rx   ry   send_message&  sT   

$
r@  c                 C   s(   t | |tj|d}|| |  d S )N)r5  r  
from_emailr  )rm   r   r^   attach_filer  )r5  r  r=  r?  mailrx   rx   ry   r5  g  s   
r5  c                 C   s   dt  d}dt dd}dt| ddd	d
idd|dgddd|dd|dgdgdd}tj||t|d}|jdkrItd|j	 d S td|j|j	 d S )N!https://graph.facebook.com/v17.0/	/messagesBearer application/jsonAuthorizationzContent-Typewhatsapptemplatenavya_communicationcodeen_USheadertextr  rP  r  
parametersr  r  language
componentsmessaging_productr  r  rK  rq  r  r	  Message sent successfully!Failed to send message:)
PHONE_NUMBER_IDACCESS_TOKENr_  requestsr  r
  dumpsstatus_coderI  rP  )numbermessage_namer  r  rX  rq  r  r9  rx   rx   ry   r6  m  s0   

r6  c           
      C   s   dt  d}|dd}|dd}|dd}dt dd	}d
| ddddidd|dgddd|dd|dd|dgdgdd}tj||t|d}	|	jdkr]td|	j	 d S td|	j|	j	 d S )NrD  rE  rO  rp   rP  rQ  rF  rG  rH  rJ  rK  navya_delivery_temp01rM  rN  rO  rP  rQ  rR  r  rT  rW  rY  r	  rZ  r[  )
r\  r   r]  r^  r  r
  r_  r`  rI  rP  )
ra  r  r  rX  pickup_addressrP  rQ  rq  r  r9  rx   rx   ry   rW    sL   
(
rW  r   c              
   C   s  z,| j dd }| j dd }| j dd }| j dd }| j dd }d|v r.|d d|v r7|d d|v r@|d d|v rI|d |dkrtjdd}|D ]}t|d |v red	|d
< qVd|d
< qVtjj|ddd}|D ]}	t|	d |v rd	|	d
< qwd|	d
< qwt	jj|ddd}
|
D ]}t|d |v rd	|d
< qd|d
< qt
jj|ddd}|D ]}t|d |v rd	|d
< qd|d
< qtt|t|t|
t||dddW S |dkrtjdd}|D ]}t|d |v rd	|d
< qd|d
< qtjj|ddd}|D ]}	t|	d |v r"d	|	d
< qd|	d
< qt	jj|ddd}
|
D ]}t|d |v rFd	|d
< q5d|d
< q5t
jj|ddd}|D ]}t|d |v rjd	|d
< qYd|d
< qYtt|t|t|
t||dddW S |dkr+tjdd}|D ]}t|d |v rd	|d
< qd|d
< qtjj|ddd}|D ]}	t|	d |v rd	|	d
< qd|	d
< qt	jj|ddd}
|
D ]}t|d |v rd	|d
< qd|d
< qt
jj|ddd}|D ]}t|d |v rd	|d
< qd|d
< qtt|t|t|
t||dddW S W d S  tyK } ztdt|dddW  Y d }~S d }~ww )NrN  rV  rO  r  triggerrp   r   rR  rR  checkedrS  )category_id__inr]  )item_category__inr  r  )product__item_category__inr  )
categoriesr  r>  r  re  Fr:  )item_sub_category__in)product__item_sub_category__in)product_id__in)rl   r   )r  r   r  rE   r   r   r_  rF   r   rG   rN   r   r0  rH  )r   category_idssub_category_idsproduct_idssku_idsre  rj  r   rA  r  r>  r  r  r  rJ  rx   rx   ry   coupon_subcategory_list  s   











*



#"rr  )ro   rq   )F)NrI  (  django.shortcutsr   r   django.contrib.authr   r   r   r   django.contrib.auth.decoratorsr   r   rest_framework.decoratorsr	   django.views.decorators.httpr
   django.forms.modelsr   django.db.modelsr   r   r   django.core.exceptionsr   r   razorpayr  r  r
  twiliodjango.views.decorators.csrfr   r   r   r   r^  randomr   django.confr   django.httpr   r   django.contribr   django.utilsdjango.core.paginatorr   r   r   django.appsr   
cms.modelsr   r   r    r!   r"   r#   formsr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   shops.modelsrB   rC   rD   products.modelsrE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   accounts.modelsorders.modelsrS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   django.core.mailr]   NavyaBackers.settingsr^   r{   rr   r_   accounts.viewsr`   ra   django.urlsrb   django.contrib.auth.modelsrc   rd   re   django.template.loaderrf   dalrg   rest_framework.permissionsrh   r  rest_framework.viewsri   rest_framework.responserj   rest_frameworkrl   rm   r3  rn   r   r   r   r  r@  rK  rW  ra  rg  rk  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r&  r.  r?  rB  rC  rE  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@  Select2QuerySetViewrA  r^  ru  ry  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  r  r  r  r  r  r  r  r  r  r  r#  r'  r,  r@  r5  r6  rW  rr  rx   rx   rx   ry   <module>   s    |<0   )K@6&$/6ET < ]  

 BD:  ?   v s
GU

!

.
# 9=a

WR
JD;>.H)


2eQ+-@A.
: