
    &g10                       d dl mZ d dl 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 d	d
lmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ 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! d dl" d dl#m#Z# d dl$m%Z% d dl&m'Z' d dl( d dl)m*Z+ d dl, d dl-m.Z. d dl/Z/d dl0 d dl1m2Z2 d dl3 d dl#m4Z4 d dlm5Z5 d	dl6 d dl7m8Z8 d dlmZ d dlm5Z5 d dl9m:Z: d dl;Z;d dlmZ d dlmZ d dlm5Z5 d dl<m=Z= d dl>Z>d dl>m?Z? d dl@Z@d dlAmBZB d dl9m:Z: d dlCmDZD d d lCmEZE d dl7Z7d d!lFmGZG d dlHZHd dlIZId dlFZJd d"lKmLZL d d#lMmNZN d$ZOd% ZPd& ZQd' ZRd( ZS G d) d*e      ZT G d+ d,e      ZU G d- d.e      ZV G d/ d0e      ZW G d1 d2e      ZXd3 ZY G d4 d5e      ZZ G d6 d7e      Z[ G d8 d9e      Z\ G d: d;e      Z] G d< d=e      Z^ G d> d?e      Z_ G d@ dAe      Z` G dB dCe      Za G dD dEe      Zb G dF dGe      Zc G dH dIe      Zd G dJ dKe      Ze G dL dMe      Zf G dN dOe      Zg G dP dQe      Zh G dR dSe      Zi G dT dUe      Zj G dV dWe      Zk G dX dYe      Zl G dZ d[e      Zm G d\ d]e      Zn G d^ d_e      Zo G d` dae      Zp G db dce      Zq G dd dee      Zr G df dge      Zs G dh die      Zt G dj dke      Zu G dl dme      Zv G dn doe      Zw G dp dqe      Zx G dr dse      Zy G dt due      Zz G dv dwe      Z{ G dx dye      Z| G dz d{e      Z} G d| d}e      Z~ G d~ de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zd dlmZ  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    )View)*)authenticateloginlogout)renderredirect)User)get_user_model)JsonResponse)HttpResponse   )formsN)render_to_string)mail)messages)settings)login_required)method_decorator)datetime)	Paginator)Q)django_pbkdf2_sha256)PermissionDenied)uploadTheCategory)date)get_template)BytesIO)pisa)Context)QRCode)EmailMultiAlternatives)default_storage)FileSystemStorage)urlopen)Image)FCMNotification 27d7d01f7fb16de8e22b0b2de5a4a236c                 |    t        j                         }t        |j                         dt        | dz         z   }|S )N0d   )r   todaystryear)user_idtodays_dateuids      +/var/www/html/Beni/beni/store_apis/views.pyset_invoice_numberr3   H   s9    zz|
k
	 "SG)<%==    c                     | j                   j                  d      }t        j                  j	                  |d      j                         }|dk7  rt        d      S d}t        |d      S )	Nemailr   )r6   is_superuserr   truez(This email already exist in our databaseFsafe)GETgetr
   objectsfiltercountr   r   )requesttextpostmessages       r2   checkEmailStorerD   M   sZ     $A6<<>AI	v	6'	g5	))r4   c                 4      fd} j                   |_         |S )Nc                    d}t        d       d| j                  v r| j                  d   }| j                  d   |k(  rt        j                  j	                  |      j                         }|r| j                  dk(  rJt        d      S | j                  dk7  r0t        |      S t        d       | j                  dk7  rt        |      S  | g|i |S )N/store-loginz=1=r/   r/   /store-dashboardz=3=z/store-login/)printsessionStoresr=   r>   firstpathr	   )r@   argskwargs	loginlinkuserId	store_objfunctions         r2   wrapzcheckIfLoginStore.<locals>.wrapW   s    ) ,'//!
//)
$6ooi &(%%%7==?In$())n$i  <llO#I	'	+D	+F	++r4   )__doc__)rT   rU   s   ` r2   checkIfLoginStorerW   V   s    ,(   r4   c                       fd}|S )Nc                 R    | j                   d   r | g|i |S t        | d      S )Nr/   z/store_login)rK   r   )r@   rO   rP   	view_funcs      r2   rU   zstore_only.<locals>.wrap{   s1    __Y
G
-d
-f
--
.
))r4    )rZ   rU   s   ` r2   
store_onlyr\   z   s    *
 	r4   c                       e Zd Zd Zd Zy)storeLoginInc                     t        |d      S )Nstore_login.htmlr   selfr@   s     r2   r<   zstoreLoginIn.get   s    	*	++r4   c                    t        j                  |j                        }|j                         rO|j                  j                  d      }t        j                  j                  |j                  j                  d      |j                  j                  d      d      j                         }|j                  dk(  r!t        j                  |d       t        d      S |r|j                  }t        j                   ||      }|r:|j"                  |j$                  d	<   t        j&                  |d
       t        d      S t        j                  |d       t        d      S t        j                  |d       t        d      S t)        |d      S )Npasswordisd_codephone_numberr   rf   rg   	is_sellerr   z;Your store has been disabled by admin.Please contact admin.rG   r/   zLogin SuccessfullyrI   zInvalid CredentialszUser not existr`   )r   store_loginPOSTis_validcleaned_datar<   r
   r=   r>   rM   statusr   errorr	   re   handlerverifyidrK   successr   )rc   r@   formre   userObjnew_passchecks          r2   rB   zstoreLoginIn.post   sF   			7<<	($	]]_##J/8ll!!4+<+<+@+@+LZ^ZkZkZoZop~Z  KL!  M  S  S  U7nnNN7XYN##HNN8H-E")**W__Yg23'((^^G12^$$NN7+,N##
+
,,r4   N__name__
__module____qualname__r<   rB   r[   r4   r2   r^   r^      s    ,-r4   r^   c                   ,    e Zd Z eed      d        Zy)storeDashboarddispatchnamec                    t         j                  j                  |j                  d   d      j	                         }t
        j                  j                  |j                        j	                         }t
        j                  j                  |j                  d         j	                         }t        j                  j                  d|      j                         }t        j                  j                  |j                        j                         }d}d}t        j                  j                  d	      }	|	D ]C  }
|
j                  j                  j                  |k(  s'|dz  }|t        |
j                        z  }E dd
lm} dd l}ddlm} ddlm} |j$                  j/                         j0                  }g d}g }g }|D ]  }t        j                  j                  d||      j                         }
j                  j                  j                  |k(  r|j3                  |       t        j                  j                  |j                  ||      j                         }|j3                  |        |j4                  dk(  r$t7        j8                  |d       t;        dd|i      S t=        |d|||||||d      S )Nr/   r   rr   ri   rH   Tend_date__isnullstore_idstorer   isPaid)
TruncMonth)Sum)Decimal)010203040506070809101112)r   created_at__yearcreated_at__month)r   start_date__yearstart_date__monthFz"Please complete the profile first.z/store-profile
store_infozstore_dashboard.html)r   total_productstotal_service_requestorder_counttotal_earningordersservices)r
   r=   r>   rK   rM   rL   rr   Productsr?   ServiceRequests	orderPackproductDetailproductr   floattotalAmountdjango.db.models.functionsr   r   django.db.modelsr   decimalr   nowr.   appendis_profile_completedr   ro   r	   r   )rc   r@   r/   rS   r   r   r   r   r   	order_objorderr   r   r   r   current_year
month_list
order_datar   mnth
all_ordersall_services                         r2   r<   zstoreDashboard.get   sp   LL7??9#=!LRRT'nn##GJJ#7==?)~~$$W__Y-G$HNNP*##**dJ*W]]_.)1188z}}8MSSU+-&&d&3)e!!'':51KU5,,--M  4"""&&(--,a**(d!!((lfj(kqqs:!!'':5j! ((//jmmUauy/z  A  A  C;??;  ##u,>>'>?
#\*$=
>>
/jZh  BW  fq  BO  Yc  ow  1x  y  yr4   Nry   rz   r{   r   rW   r<   r[   r4   r2   r}   r}      s    $*5)y 6)yr4   r}   c                   2    e Zd Z eed      d        Zd Zy)storeProfiler~   r   c                    t         j                  j                  |j                  d   d      j	                         }t
        j                  j                  |j                        j	                         }t
        j                  j                  |j                  d         j	                         }t        |d||d      S )Nr/   r   r   rH   store_profile.html)rS   r   )r
   r=   r>   rK   rM   rL   rr   r   )rc   r@   r/   rS   r   s        r2   r<   zstoreProfile.get   s    LL7??9#=!LRRT'nn##GJJ#7==?)~~$$W__Y-G$HNNP*	,)Q[-\	]]r4   c                    t        j                  |j                        }|j                         rt        j
                  j                  |j                  d   d      j                         }t        j
                  j                  |j                        j                  |j                  j                  d      |j                  j                  d      |j                  j                  d      |j                  j                  d      |j                  j                  d	      |j                  j                  d
      |j                  j                  d      |j                  j                  d      t        j                         d
       |j                   j                  d      rt#        |j                   j                  d            }t%        t&        j(                        dz   |z   }t        j
                  j                  |j                        j                  t%        |             |j                   j                  d      rt#        |j                   j                  d            }t%        t&        j(                        dz   |z   }t        j
                  j                  |j                        j                  t%        |             t+        j,                  |d       t/        d      S t1        |d      S )Nr/   r   r   rH   store_name_englishstore_description_englishstore_name_arabicstore_description_arabicstore_numberstore_emailcountryaddressT)
r   r   r   r   r   r   r   r   
start_dater   
store_logo/)r   store_banner)r   zStore updated successfullyrI   r   )r   store_profilerk   rl   r
   r=   r>   rK   rM   rL   rr   updaterm   r<   r   r   FILESuploadTheStoreLogor-   r   BASE_URLr   rs   r	   r   )rc   r@   rt   r/   fileUrls        r2   rB   zstoreProfile.post   s0   			W\\	*$	]]_\\  GOOI$>1 MSSU7	>>,33**../CD $ 1 1 5 56Q R))--.AB#00445OP$$((8##''6##I.##I. 4  mm%w}}00>?G!!"3&w.G
NN'**-44G4Mmm'w}}00@AG!!"3&w.G
NN'**-44#g,4OG89
%
&&
-
..r4   Nry   rz   r{   r   rW   r<   rB   r[   r4   r2   r   r      s#    $*5^ 6^/r4   r   c                       e Zd Zd Zy)storeLogoutc                 ^    |j                   d= t        j                  |d       t        d      S )Nr/   zLogout SuccessfullyrG   )rK   r   rs   r	   rb   s     r2   r<   zstoreLogout.get   s*    ooi 
701	.	!!r4   Nry   rz   r{   r<   r[   r4   r2   r   r      s    "r4   r   c                   2    e Zd Z eed      d        Zd Zy)storeResetPasswordr~   r   c                     t         j                  j                  |j                  d         j	                         }t        |dd|i      S )Nr/   rH   store_reset_password.htmlr   rL   r=   r>   rK   rM   r   rc   r@   r   s      r2   r<   zstoreResetPassword.get   s@    ~~$$W__Y-G$HNNP*	3\*4M	NNr4   c                    t        j                  |j                        }|j                         r|j                  j	                  d      }t
        j                  j	                  |j                  d         }|j                  |       |j                          t        j                  |d       t        d      S t        |d      S )NconfirmPasswordr/   rr   z)You have successfully reset your passwordrI   r   )r   change_password_formrk   rl   r<   r
   r=   rK   set_passwordsaver   infor	   r   )rc   r@   rt   re   users        r2   rB   zstoreResetPassword.post  s    		#	#GLL	1$	]]_ll018ll'//)"<=4X99;==EF
%
&&
4
55r4   Nr   r[   r4   r2   r   r      s#    $*5O 6O
6r4   r   c                     | j                   j                  d      }t        j                  j                  | j                  d         }|j                  |      dk(  rd}t        |d      S t        d      S )Nold_passwordr/   r   Fz%Does not match with the old password.r9   r8   )r;   r<   r
   r=   rK   check_passwordr   r   )r@   r   r   rC   s       r2   storeCheckPasswordr     sd    /  GOOI$> ?%.3'	g5	))	v	r4   c                       e Zd Zd Zd Zy)storeForgetPasswordc                     t        |d      S )Nstore_forget_password.htmlra   rb   s     r2   r<   zstoreForgetPassword.get  s    	4	55r4   c                    t        j                  |j                        }|j                         r%|j                  j                  d      |j                  d<   |j                  j                  d      |j                  d<   t        j                  j                  |j                  j                  d      |j                  j                  d      d      j                         }|rOt        j                  ddd      }||_        |j                          t        j                   |d       t#        d	      S t        j$                  |d
       t'        |d      S t'        |d      S )Nrf   rg   Trh     '     zOTP send successfully/forget-otp-verifyNo user foundr   )r   storeforgetpasswordformrk   rl   rm   r<   rK   r
   r=   r>   rM   random	randrangeforgot_password_otpr   r   rs   r	   ro   r   )rc   r@   rt   
user_checktheotps        r2   rB   zstoreForgetPassword.post  s0   		&	&w||	4$	]]_!%!2!2!6!6z!B7??:%)%6%6%:%:>%J7??>"##t/@/@/D/DZ/P`d`q`q`u`u  wE  aF  QU#  V  \  \  ^:D$*F#)J"OO W45())NN7?+'677
5
66r4   Nrx   r[   r4   r2   r   r     s    67r4   r   c                       e Zd Zd Zy)resendForgetOtpc                    |j                   d   }|j                   d   }t        j                  j                  ||d      j	                         }|rOt        j                  ddd      }||_        |j                          t        j                  |d       t        d	      S t        j                  |d
       t        d	      S )Nrf   rg   Trh   r   r   r   zOTP resend successfullyr   r   )rK   r
   r=   r>   rM   r   r   r   r   r   rs   r	   )rc   r@   rf   rg   r   r   s         r2   r<   zresendForgetOtp.get8  s    __Z((0,||""hl]a"bhhj*


4q
)6"(:!?? G56
'
((GO,
'
((r4   Nr   r[   r4   r2   r   r   7  s    )r4   r   c                       e Zd Zd Zd Zy)forgetOTPverifyc                     t        |d      S )Nstore_forget_otp.htmlra   )Selfr@   s     r2   r<   zforgetOTPverify.getO  s    	/	00r4   c                    t        j                  |j                        }|j                         r'|j                  d   }|j                  d   }|j
                  j                  d      }|j
                  j                  d      }|j
                  j                  d      }|j
                  j                  d      }||z   |z   |z   }	t        j                  j                  ||      j                         }
t        |	      t        |
j                        k(  r!t        j                  |d       t        d	      S t        j                   |d
       t        d      S t#        |d      S )Nrf   rg   otp_oneotp_two	otp_threeotp_four)rf   rg   zOTP verfied successfully/change-forget-passwordzIncorrect OTPr   r   )r   otpforgetformrk   rl   rK   rm   r<   r
   r=   r>   rM   intr   r   rs   r	   ro   r   )rc   r@   rt   rf   rg   r  r  r  r  	final_otpuser_objs              r2   rB   zforgetOTPverify.postQ  s$   			W\\	*$	]]_ooj)8//.1<""9-7""9-7  $$[19##J/8wy(19ll!!8!NTTV8	)nH8899W78-..NN7?+())
0
11r4   Nrx   r[   r4   r2   r   r   N  s    12r4   r   c                       e Zd Zd Zd Zy)changeForgetPasswordc                     t        |d      S )Nstore_change_forget.htmlra   rb   s     r2   r<   zchangeForgetPassword.getf  s    	2	33r4   c                 V   t        j                  |j                        }|j                         r|j                  d   }|j                  d   }t
        j                  j                  ||d      j                         }|j                  j                  d      }|j                  j                  d      }||k(  rD|rc|j                  |       |j                          t        j                  |d       t        d      S t        j                   |d	       t        d
      S y t#        |d      S )Nrf   rg   r   rh   re   confirm_passwordzPassword changed successfullyrG   z*Password and confirm password are not samer  r  )r   changeforgetpasswordformrk   rl   rK   r
   r=   r>   rM   rm   r<   r   r   r   rs   r	   ro   r   )rc   r@   rt   rf   rg   customerObjnew_passwordr  s           r2   rB   zchangeForgetPassword.posth  s    		'	'	5$	]]_ooj)8//.1<||""H,YZ"[aac;##''
3<''++,>?&&l+g=>^$$NN7GH-..  3
44r4   Nrx   r[   r4   r2   r  r  e  s    45r4   r  c                   ,    e Zd Z eed      d        Zy)productListingStorer~   r   c                    	 t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|      j                  d      }|j                  j                  d      }|rEt
        j                  j                  t        |      t        |      z        j                  d      }t        |d	      }|j                  j                  d
      }|j                  |      }t        |d|||d      S # t        $ r }t        |       t        d      cY d }~S d }~ww xY w)Nr/   rH   Tr   -idsearchproduct_name_english__icontainsproduct_name_arabic__icontains
   pagezstore_product_listing.html)product_objsearch_postr   /product-listing-store)rL   r=   r>   rK   rM   r   order_byr;   r<   r   r   get_pager   	ExceptionrJ   r	   )	rc   r@   r   data_objr  	paginatorpage_numberservice_objes	            r2   r<   zproductListingStore.get~  s1   -%%gooi.H%IOOQ:&&$
&S\\]bc8*;&&q'UWX  yD  XE  (E  F  O  O  PU  VH2&9(;##K0;
5[_j  yC  7D  E  E	 -8
+
,,-s   DD 	E!D<6E<ENr   r[   r4   r2   r  r  }  s    $*5- 6-r4   r  c                   2    e Zd Z eed      d        Zd Zy)addProductStorer~   r   c                 <   	 t         j                  j                  |j                  d         j	                         }t
        j                  j                  dd      }t        j                  j                  dd      }t        j                  j                  dd      }t        j                  j                  dd      }t        j                  j                         j	                         }|j                  r|j                  }nd}d|j                  v rHt        j                  j                  |j                  j                  d      d      j                         }t        |d	||||||d
      S # t        $ r }	t!        |	       t#        d      cY d }	~	S d }	~	ww xY w)Nr/   rH   r   Trn   r           main_idmaincategory_idr   store_add_product.html)main_categoriessub_categoriesbrandsr   stones	vat_valuer   )rL   r=   r>   rK   rM   MainCategoriesSubcategoriesBrandsStonesCommissionSectionallvat_percentager;   r<   r   r#  rJ   r	   )
rc   r@   r   r2  r3  r4  r5  vat_objr6  r(  s
             r2   r<   zaddProductStore.get  sk   -%%gooi.H%IOOQ:#++22!d2S?!))00D0Q>NN!!T!B6NN!!T!B6&&**,2247&&II7;;"**11'++//R[B\os1txxzN
1_ft  E  S]  gm  zC  3D  E  E	 -8
+
,,-s   E/E2 2	F;FFFc                    t        j                  |j                        }|j                         rB|j                  j                  d      }|j                  j                  d      }t        j                  j                  |j                  j                  d            j                         }t        j                  j                  |j                  j                  d            j                         }|j                  j                  d      }|j                  j                  d      }t        j                  j                  |j                  j                  d            j                         }	|j                  j                  d	      }
|j                  j                  d
      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|r/t        j                  j                  |      j                         }nd }t        j                  j                         j                         }|j                  r|j                  }nd}|r4d}t!        t#        |      dz  t#        |      z        }t#        |      |z   }nd}d }t!        t#        |      dz  t#        |      z        }t#        |      |z   }t$        j                  j                  |j&                  d         j                         }t(        j                  j+                  |||||||	|
||||||j,                  ||||      }g }|j.                  j1                  d      r|j.                  j1                  d      }t3        d|       |D ]M  }|j4                  dkD  rt7        |      }t9        t:        j<                        dz   |z   }|j?                  |       O ||_         |jC                          tE        jF                  |d       tI        d      S tK        |d      S )Nproduct_name_englishproduct_name_arabicmaincategoryr   subcategorydescription_englishdescription_arabicbrandsize
model_nameweightcolorquantitypriceprice_discountstoner-  Tr+   Fr/   rH   )r@  rA  rB  rC  rD  rE  rF  rG  rI  rJ  rK  rL  is_offer_appliedr   rH  offer_discountrM  rN  images  P r   Product added successfullyr   r1  )&r   
addProductrk   rl   rm   r<   r7  r=   r>   rM   r8  r9  r:  r;  r<  r=  roundr  rL   rK   r   createrr   r   getlistrJ   rG  uploadTheProductImagesr-   r   r   r   rQ  r   r   rs   r	   r   )rc   r@   rt   r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rP  stone_idrN  r>  r6  rO  calculate_vatround_off_discountr   r  	form_datarQ  imager   s                                 r2   rB   zaddProductStore.post  s   			',,	'$	]]_++//0FG**../DE ((//43D3D3H3H3X/Y__a<&&--1B1B1F1F}1U-V\\^;**../DE))--.BC>>  D$5$5$9$9'$B CIIK5





'4!!%%l3:!!(+6  )5##J/8  )5%%))*:;>##G,8NN!!X!.446EE&&**,2247&&II #n-c1#i.@AM^,]: #e*S.Y78=J}$5nn##GOOI,F#GMMO8!!((>Rgz  IU/BVhotz~  GM  TY52Bhkkeo  @R  bt  {@ ) ; 9mmH%]]""8,F	(F

_$%e,W8$$%+g5Wg  #KG89
+
,,
1
22r4   Nr   r[   r4   r2   r*  r*    s"    $*5- 6-&B3r4   r*  c                   2    e Zd Z eed      d        Zd Zy)editProductStorer~   r   c                    t         j                  j                  |j                  d         j	                         }t
        j                  j                  dd      }t        j                  j                  dd      }t        j                  j                  dd      }t        j                  j                  dd      }d|j                  v rHt        j                  j                  |j                  j                  d      d      j                         }t        j                  j                  |      j	                         }t        j                  |j                        }	t         j                  j                         j	                         }
|
j"                  r|
j"                  }nd	}t%        |d
|||||	|||d      S )Nr/   rH   r   Tr,  r.  r/  r   r-  zstore_edit_product.html)r2  r3  r4  rS   product_imagesr   r5  r6  )rL   r=   r>   rK   rM   r7  r8  r9  r:  r;   r<   r<  r   astliteral_evalrQ  r;  r=  r   )rc   r@   rr   r   r2  r3  r4  r5  rS   ra  r>  r6  s               r2   r<   zeditProductStore.get  s   ~~$$W__Y-G$HNNP*"**11T1R/ ((//q4/P.>>  D A&>>  D A&'++!))00QZA[nr0swwy>%%%,224)$$Y%5%56.%%))+113'%%99	1_ft  E  R[  m{  IS  ]c  py  3z  
{  {r4   c                 
   t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |j                  j                  d            j                         }t        j                  j                  |j                  j                  d            j                         }|j                  j                  d      }|j                  j                  d      }	t        j                  j                  |j                  j                  d            j                         }
|j                  j                  d	      }|j                  j                  d
      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|r/t        j                  j                  |      j                         }nd }t        j                  j                         j                         }|j                  r|j                  }nd}|r4d}t!        t#        |      dz  t#        |      z        }t#        |      |z   }nd}d }t!        t#        |      dz  t#        |      z        }t#        |      |z   }t$        j                  j                  |j&                  d         j                         }t(        j                  j                  |      j+                  ||||||	|
|||||||j,                  ||||      }t(        j                  j                  |      j                         }t/        j0                  |j2                        }g }|D ]  }|j5                  |        |j6                  j9                  d      r|j6                  j9                  d      }t;        d|       |D ]M  } | j<                  dkD  rt?        |       }!tA        tB        jD                        dz   |!z   }!|j5                  |!       O t(        j                  j                  |      j+                  |       tG        jH                  |d       tK        d      S tM        |d      S )Nr@  rA  rB  r   rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  r-  Tr+   Fr/   rH   )r@  rA  rB  rC  rD  rE  rF  rG  rI  rJ  rK  rL  rM  r   rH  rO  rP  rN  rQ  rR  r   rQ  rS  r   r1  )'r   rT  rk   rl   rm   r<   r7  r=   r>   rM   r8  r9  r:  r;  r<  r=  rU  r  rL   rK   r   r   rr   rb  rc  rQ  r   r   rW  rJ   rG  rX  r-   r   r   r   rs   r	   r   )"rc   r@   rr   rt   r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rP  rY  rN  r>  r6  rO  rZ  r[  r   r  product_obj_imagera  r\  imgrQ  r]  r   s"                                     r2   rB   zeditProductStore.post  sd   			',,	'$	]]_++//0FG**../DE ((//43D3D3H3H3X/Y__a<&&--1B1B1F1F}1U-V\\^;**../DE))--.BC>>  D$5$5$9$9'$B CIIK5





'4!!%%l3:!!(+6  )5##J/8  )5%%))*:;>##G,8NN!!X!.446EE &&**,2247&&II #n-c1#i.@AM^,]: #e*S.Y78=J}$5 nn##GOOI,F#GMMO8!!((B(/66L`  vI  Wc/BVhotz~  GM  TY50Bhkkeo  BR  bt  {@ 7 ;  ''..".5;;=%%&7&>&>?>9sS mmH%]]""8,F	(6

_$#E*W""#C'/Wg  r")));G89
+
,,
1
22r4   Nr   r[   r4   r2   r_  r_    s$    $*5{ 6{"E3r4   r_  c                   ,    e Zd Z eed      d        Zy)removeImageProductr~   r   c                    t        |j                  j                  d             t        |j                  j                  d             d|j                  v r/t        j                  j                  |j                  j                  d            j                         }t        j                  |j                        }g }|j                  j                  d      j                  dd      }t        |       |D ]-  }t        |      |k7  st        |       |j                  |       / t        |       t        j                  j                  |j                  j                  d            j                  |       t        d      S y )N	file_name
product_idr   ' re  rs   )rJ   r;   r<   r   r=   r>   rM   rb  rc  rQ  replacer-   r   r   r   )rc   r@   rf  ra  r\  yrg  s          r2   r<   zremoveImageProduct.getC  s    $%%&W[[ ''..'++//,2O.PVVX%%&7&>&>?>9{{{#++C318s
3x1}
3Zc  	gkkool;<CC9CU
y
!! !r4   Nr   r[   r4   r2   ri  ri  B  s    $*5" 6"r4   ri  c                       e Zd Zd Zy)changeProductStatusc                    t         j                  j                  |j                  d         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d       t        |j                  j                  d            S )Nr.  r   rn   1zProduct is activatedHTTP_REFERERzProduct is deactivated)r   r=   r<   rk   rn   r   r   rs   r   METAro   )rc   r@   pubs      r2   rB   zchangeProductStatus.postW  s    ##i)@#A#||H%#*((*ZZ3G34
w||''7
88>>'34
w||''7
88r4   Nry   rz   r{   rB   r[   r4   r2   rr  rr  V  s    	9r4   rr  c                   ,    e Zd Z eed      d        Zy)deleteProductr~   r   c                     t         j                  j                  |      j                  t	        j
                                t        j                  |d       t        d      S )Nr   end_dateDeleted successfullyr   )	r   r=   r>   r   r   r   r   rs   r	   rc   r@   rr   s      r2   r<   zdeleteProduct.gete  sJ    
R '''@
723	*	++r4   Nr   r[   r4   r2   rz  rz  d      $*5, 6,r4   rz  c                   ,    e Zd Z eed      d        Zy)viewProductr~   r   c                    	 t         j                  j                  |j                  d         j	                         }t
        j                  j                  |      j	                         }t        j                  |j                        }t        |d|||d      S # t        $ r }t        |       t        d      cY d }~S d }~ww xY w)Nr/   rH   r   zstore_view_product.html)r  ra  r   r   )rL   r=   r>   rK   rM   r   rb  rc  rQ  r   r#  rJ   r	   )rc   r@   rr   r   r  ra  r(  s          r2   r<   zviewProduct.getm  s    -%%gooi.H%IOOQ:!!((B(/557;%%k&8&89>
2+_m  |F  4G  H  H	 -8
+
,,-s   BB 	C$B?9C?CNr   r[   r4   r2   r  r  l  s    $*5- 6-r4   r  c                   2    e Zd Z eed      d        Zd Zy)addStoreServicer~   r   c                     t         j                  j                  |j                  d         j	                         }t
        j                  j                  dd      }t        d|       t        |d||d      S )Nr/   rH   Tr,  r'  add_store_service.html)servicer   )rL   r=   r>   rK   rM   ServicesrJ   r   )rc   r@   r   r'  s       r2   r<   zaddStoreService.gety  sf    ~~$$W__Y-G$HNNP*  ''tt'L+k"	0KU_1`	aar4   c                    t         j                  j                  |j                  d         j	                         }t        j                  |j                        }|j                         rt        j                  j                  |j                  j                  d            j	                         }t        j                  j                  |j                  |j                        }|sVt        j                  j                  |j                  |j                        }t        j                   |d       t%        d      S t        j"                  |d       t%        d      S t'        |d	d
|i      S )Nr/   rH   
service_idr   )r   serviceId_idService added successfullyThis service is already addedz/store-service-listingr  rt   )rL   r=   r>   rK   rM   r   storeServiceFormrk   rl   r  rm   r<   storeServicesrr   rV  r   rs   warningr	   r   )rc   r@   r   rt   r  check_existingr$  s          r2   rB   zaddStoreService.post  s   ~~$$W__Y-G$HNNP*				-$	]]_  ''4+<+<+@+@+N'OUUW:!))00*--U_UbUb0c>
%%,,jmmQ[Q^Q^,_HW9: +
,, W<=
+
,,
16$-
@@r4   Nr   r[   r4   r2   r  r  x  s$    $*5b 6b
Ar4   r  c                   ,    e Zd Z eed      d        Zy)storeServiceListingr~   r   c                    t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|      }|j                  j                  d      }|r,t
        j                  j                  t        |      d|      }t        |d      }|j                  j                  d      }|j                  |      }t        |d	|||d
      S )Nr/   rH   Tr   r  *serviceId__english_service_name__icontainsr  r  zstore_service_listing.htmlr$  r   r  )rL   r=   r>   rK   rM   r  r;   r<   r   r   r"  r   rc   r@   r   r$  r  r%  r&  r   s           r2   r<   zstoreServiceListing.get  s    ~~$$W__Y-G$HNNP*##**dJ*W()+$$++AYd,ey}  HR+  S8"%)'+  -)	4Xbq|5}	~~r4   Nr   r[   r4   r2   r  r        $*5	 6	r4   r  c                   ,    e Zd Z eed      d        Zy)changeStoreServiceStatusr~   r   c                 >   t         j                  j                  |j                  d         j	                         }t
        j                  j                  ||j                  d         j	                         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d	       t        |j                  j                  d            S 
Nr/   rH   r.  r   rr   rn   rt  zService status is activatedru  zService status is deactivated)rL   r=   r>   rK   rM   r  rk   rn   r   r   rs   r   rv  r<   ro   rc   r@   r   rw  s       r2   rB   zchangeStoreServiceStatus.post  s    ~~$$W__Y-G$HNNP*$$++*',,yBY+Z``b#||H%#*((*ZZ3G:;
w||''7
88>>':;
w||''7
88r4   Nry   rz   r{   r   rW   rB   r[   r4   r2   r  r        $*5
9 6
9r4   r  c                   2    e Zd Z eed      d        Zd Zy)addServiceModelr~   r   c                     t         j                  j                  |j                  d         j	                         }t        |dd|i      S )Nr/   rH   add_service_model.htmlr   r   r   s      r2   r<   zaddServiceModel.get  s@    ~~$$W__Y-G$HNNP*	0,z1J	KKr4   c                    t         j                  j                  |j                  d         j	                         }t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |j                  |      }|sMt        j                  j                  |j                  ||      }t        j                  |d       t!        d	      S t        j                  |d       t!        d	      S t#        |d
d|i      S )Nr/   rH   service_model_englishservice_model_arabic)r   r  )r   r  r  zModel added successfullyzModel already added/service-model-listingr  rt   )rL   r=   r>   rK   rM   r   storeServiceModelFormrk   rl   rm   r<   ServiceModelrr   rV  r   rs   r	   r   )rc   r@   r   rt   r  r  r  r$  s           r2   rB   zaddServiceModel.post  s   ~~$$W__Y-G$HNNP*		$	$W\\	2$	]]_,,001HI++//0FG ((//]r/s>
$$++Z]]Yn  EY+  ZHW78 +
,, W23
+
,,
16$-
@@r4   Nr   r[   r4   r2   r  r    s$    $*5L 6LAr4   r  c                   2    e Zd Z eed      d        Zd Zy)editServiceModelr~   r   c                     t         j                  j                  |j                  d         j	                         }t
        j                  j                  |      j	                         }t        |d||d      S )Nr/   rH   r   edit_service_model.htmlr'  r   )rL   r=   r>   rK   rM   r  r   rc   r@   rr   r   serviceModel_objs        r2   r<   zeditServiceModel.get  se    ~~$$W__Y-G$HNNP*!))00B07==?	1AQ_i2j	kkr4   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |      j                  ||      }t        j                  |d       t        d      S t        |d      S )Nr  r  r   )r  r  zModel updated successfullyr  r  )r   r  rk   rl   rm   r<   r  r=   r>   r   r   rs   r	   r   )rc   r@   rr   rt   r  r  r  s          r2   rB   zeditServiceModel.post  s    		$	$W\\	2$	]]_,,001HI++//0FG"**11R18??Vk  BV?  WG89
+
,,
2
33r4   Nr   r[   r4   r2   r  r    s#    $*5l 6l

4r4   r  c                   ,    e Zd Z eed      d        Zy)serviceModelListingr~   r   c                    t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|      }|j                  j                  d      }|r9t
        j                  j                  t        |      t        |      z  d|      }t        |d      }|j                  j                  d	      }|j                  |      }t        |d
|||d      S )Nr/   rH   Tr   r  ) service_model_english__icontains)service_model_arabic__icontainsr  r  zservice_model_listing.htmlr  )rL   r=   r>   rK   rM   r  r;   r<   r   r   r"  r   r  s           r2   r<   zserviceModelListing.get  s    ~~$$W__Y-G$HNNP*""))T:)V()+##**1k+Z]^  @K  ^L  ,L  `d  nx*  y8"%)'+  -)	4Xbq|5}	~~r4   Nr   r[   r4   r2   r  r    r  r4   r  c                   ,    e Zd Z eed      d        Zy)changeServiceModelStatusr~   r   c                 >   t         j                  j                  |j                  d         j	                         }t
        j                  j                  ||j                  d         j	                         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d	       t        |j                  j                  d            S )
Nr/   rH   r.  r  rn   rt  zModel status is activatedru  zModel status is deactivated)rL   r=   r>   rK   rM   r  rk   rn   r   r   rs   r   rv  r<   ro   r  s       r2   rB   zchangeServiceModelStatus.post  s    ~~$$W__Y-G$HNNP*##**iAX*Y__a#||H%#*((*ZZ3G89
w||''7
88>>'89
w||''7
88r4   Nr  r[   r4   r2   r  r    r  r4   r  c                   ,    e Zd Z eed      d        Zy)deleteServiceModelr~   r   c                     t         j                  j                  |      j                  t	        j
                                t        j                  |d       t        d      S )Nr   r|  r~  r  )	r  r=   r>   r   r   r   r   rs   r	   r  s      r2   r<   zdeleteServiceModel.get  sJ    $++X\\^+D
723	*	++r4   Nr   r[   r4   r2   r  r    r  r4   r  c                   2    e Zd Z eed      d        Zd Zy)addStoneTyper~   r   c                     t         j                  j                  |j                  d         j	                         }t        |dd|i      S )Nr/   rH   add_stone_type.htmlr   r   r   s      r2   r<   zaddStoneType.get  s@    ~~$$W__Y-G$HNNP*	-|J.G	HHr4   c                    t         j                  j                  |j                  d         j	                         }t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |j                  |      }|sMt        j                  j                  |j                  ||      }t        j                  |d       t!        d	      S t        j                  |d       t!        d	      S t#        |d
d|i      S )Nr/   rH   stone_type_englishstone_type_arabic)r   r  )r   r  r  zStone added successfullyzStone already added/stone-type-listingr  rt   )rL   r=   r>   rK   rM   r   storeStoneTypeFormrk   rl   rm   r<   	StoneTyperr   rV  r   rs   r	   r   )rc   r@   r   rt   r  r  r  r$  s           r2   rB   zaddStoneType.post  s   ~~$$W__Y-G$HNNP*		!	!',,	/$	]]_))--.BC((,,-@A%%,,jmmWi,j>
!!((*--Se  yJ(  KHW78 (
)) W23
(
))
.t}
==r4   Nr   r[   r4   r2   r  r    s#    $*5I 6I>r4   r  c                   2    e Zd Z eed      d        Zd Zy)editStoneTyper~   r   c                     t         j                  j                  |j                  d         j	                         }t
        j                  j                  |      j	                         }t        |d||d      S )Nr/   rH   r   edit_stone_type.htmlr  )rL   r=   r>   rK   rM   r  r   r  s        r2   r<   zeditStoneType.get  se    ~~$$W__Y-G$HNNP*&&---4::<	.>N\f/g	hhr4   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |      j                  ||      }t        j                  |d       t        d      S t        |d      S )Nr  r  r   )r  r  zStone updated successfullyr  r  )r   r  rk   rl   rm   r<   r  r=   r>   r   r   rs   r	   r   )rc   r@   rr   rt   r  r  r  s          r2   rB   zeditStoneType.post  s    		!	!',,	/$	]]_))--.BC((,,-@A''..".5<<Pb  vG<  HG89
(
))
/
00r4   Nr   r[   r4   r2   r  r  
  s#    $*5i 6i

1r4   r  c                   ,    e Zd Z eed      d        Zy)stoneTypeListingr~   r   c                    t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|      }t        d|       |j                  j                  d      }|r9t
        j                  j                  t        |      t        |      z  d|      }t        |d	      }|j                  j                  d
      }|j                  |      }t        |d|||d      S )Nr/   rH   Tr   r$  r  )stone_type_english__icontains)stone_type_arabic__icontainsr  r  zstone_type_listing.htmlr  )rL   r=   r>   rK   rM   r  rJ   r;   r<   r   r   r"  r   r  s           r2   r<   zstoneTypeListing.get  s    ~~$$W__Y-G$HNNP*&&$
&S(
8)+  ''(TWX  wB  XC  )C  W[  eo'  p8"%)'+  -)	1iU_ny2z	{{r4   Nr   r[   r4   r2   r  r    s    $*5
| 6
|r4   r  c                   ,    e Zd Z eed      d        Zy)changeStoneTypeStatusr~   r   c                 >   t         j                  j                  |j                  d         j	                         }t
        j                  j                  ||j                  d         j	                         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d	       t        |j                  j                  d            S )
Nr/   rH   r.  r  rn   rt  zStone status is activatedru  zStone status is deactivated)rL   r=   r>   rK   rM   r  rk   rn   r   r   rs   r   rv  r<   ro   r  s       r2   rB   zchangeStoneTypeStatus.post,  s    ~~$$W__Y-G$HNNP*  ''jgll9>U'V\\^#||H%#*((*ZZ3G89
w||''7
88>>'89
w||''7
88r4   Nr  r[   r4   r2   r  r  +  r  r4   r  c                   ,    e Zd Z eed      d        Zy)deleteStoneTyper~   r   c                     t         j                  j                  |      j                  t	        j
                                t        j                  |d       t        d      S )Nr   r|  r~  r  )	r  r=   r>   r   r   r   r   rs   r	   r  s      r2   r<   zdeleteStoneType.get:  sJ    b!(((,,.(A
723	'	((r4   Nr   r[   r4   r2   r  r  9  s    $*5) 6)r4   r  c                   2    e Zd Z eed      d        Zd Zy)addServiceTyper~   r   c                     t         j                  j                  |j                  d         j	                         }t        |dd|i      S )Nr/   rH   add_service_type.htmlr   r   r   s      r2   r<   zaddServiceType.getA  s@    ~~$$W__Y-G$HNNP*	/j0I	JJr4   c                    t         j                  j                  |j                  d         j	                         }t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |j                  |      }|sMt        j                  j                  |j                  ||      }t        j                  |d       t#        d	      S t        j                   |d       t#        d	      S t%        |d
d|i      S )Nr/   rH   service_type_englishservice_type_arabic)r   r  )r   r  r  r  r  /service-type-listingr  rt   )rL   r=   r>   rK   rM   r   storeServiceTypeFormrk   rl   rm   r<   ServiceTyperr   rV  r   rs   r  r	   r   )rc   r@   r   rt   r  r  r  r$  s           r2   rB   zaddServiceType.postE  s   ~~$$W__Y-G$HNNP*		#	#GLL	1$	]]_++//0FG**../DE''..
[o.p>
##**JMMWk  AT*  UHW9: *
++ W<=
*
++
0&
??r4   Nr   r[   r4   r2   r  r  @  s$    $*5K 6K@r4   r  c                   2    e Zd Z eed      d        Zd Zy)editServiceTyper~   r   c                     t         j                  j                  |j                  d         j	                         }t
        j                  j                  |      j	                         }t        |d||d      S )Nr/   rH   r   edit_service_type.htmlr  )rL   r=   r>   rK   rM   r  r   r  s        r2   r<   zeditServiceType.getV  se    ~~$$W__Y-G$HNNP* ((//2/6<<>	0@P^h1i	jjr4   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |      j                  ||      }t        j                  |d       t        d      S t        |d      S )Nr  r  r   )r  r  zService updated successfullyr  r  )r   r  rk   rl   rm   r<   r  r=   r>   r   r   rs   r	   r   )rc   r@   rr   rt   r  r  r  s          r2   rB   zeditServiceType.post\  s    		#	#GLL	1$	]]_++//0FG**../DE!))00B07>>Th  ~Q>  RG:;
*
++
1
22r4   Nr   r[   r4   r2   r  r  U  s#    $*5k 6k

3r4   r  c                   ,    e Zd Z eed      d        Zy)serviceTypeListingr~   r   c                    t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|      }t        d|       |j                  j                  d      }|r9t
        j                  j                  t        |      t        |      z  d|      }t        |d	      }|j                  j                  d
      }|j                  |      }t        |d|||d      S )Nr/   rH   Tr   r$  r  )service_type_english__icontains)service_type_arabic__icontainsr  r  zservice_type_listing.htmlr  )rL   r=   r>   rK   rM   r  rJ   r;   r<   r   r   r"  r   r  s           r2   r<   zserviceTypeListing.geti  s    ~~$$W__Y-G$HNNP*!!((D*(U(
8)+""))!K*X[\  }H  \I  +I  ]a  ku)  v8"%)'+  -)	3	Wap{4|	}}r4   Nr   r[   r4   r2   r  r  h  s    $*5
~ 6
~r4   r  c                   ,    e Zd Z eed      d        Zy)changeServiceTypeStatusr~   r   c                 >   t         j                  j                  |j                  d         j	                         }t
        j                  j                  ||j                  d         j	                         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d	       t        |j                  j                  d            S r  )rL   r=   r>   rK   rM   r  rk   rn   r   r   rs   r   rv  r<   ro   r  s       r2   rB   zchangeServiceTypeStatus.postw  s    ~~$$W__Y-G$HNNP*""))
Y@W)X^^`#||H%#*((*ZZ3G:;
w||''7
88>>':;
w||''7
88r4   Nr  r[   r4   r2   r  r  v  r  r4   r  c                   ,    e Zd Z eed      d        Zy)deleteServiceTyper~   r   c                     t         j                  j                  |      j                  t	        j
                                t        j                  |d       t        d      S )Nr   r|  r~  r  )	r  r=   r>   r   r   r   r   rs   r	   r  s      r2   r<   zdeleteServiceType.get  sJ    #**HLLN*C
723	)	**r4   Nr   r[   r4   r2   r  r    s    $*5+ 6+r4   r  c                   ,    e Zd Z eed      d        Zy)orderListingr~   r   c                 n   	 g }t         j                  j                  |j                  d         j	                         }t        d|       t        j                  j                  d      j                  d      }|j                  j                  d      }|j                  j                  d      }d	}t        d
|       t               }|ry|rwt        d       |j                  t        ||dz   |z   g      t        j                         t        j                  j                  |      j                  d      }t        d|       |j                  j                  d      }	|	rCt        d       t        j                  j                  t        |	            j                  d      }|D ]a  }
t        d|
j                  j                  j                         |
j                  j                  j                  |k(  sQ|j!                  |
       c t#        |d      }|j                  j                  d      }|j%                  |      }t&        j                  j)                         j	                         }t+        |d|||	|||j,                  d      S # t.        $ r }t        |       t1        d      cY d }~S d }~ww xY w)Nr/   rH   r   Tr   r  r   r}  z11:59:59timedateser )created_at__range
datesearchr  )orderId__icontainsz!order.productDetail.product.storer  r  zstore_order_listing.html)	all_orderr   r  search_start
search_endr6  rI   )rL   r=   r>   rK   rM   rJ   r   r!  r;   r<   r   addANDr   r   r   r   r   r"  r;  r<  r   r=  r#  r	   )rc   r@   allDatar   r   r  r  r  lookupsr  r   r%  r&  r6  r(  s                  r2   r<   zorderListing.get  s@   '7%%gooi.H%IOOQ:j!  ''t'4==eD9++//,/<
+:
4S7z	)KK\:3CT3I$JKQUUS!!((1::5AI	,y!*;	(O!!((k)JKTTUZ[Iu	
-e.A.A.I.I.O.OP""((J6^^E  "%9(;!!+.9 ((,,.4469
3Xbq|  MY  gq  ~G  ~V  ~V  5W  X  X	 '8
%
&&'s%   G3J 6BJ 	J4J/)J4/J4Nr   r[   r4   r2   r  r    s    $*5' 6'r4   r  c                   ,    e Zd Z eed      d        Zy)boxTypeLisitingr~   r   c                    t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|      }t        d|       |j                  j                  d      }|r9t
        j                  j                  t        |      t        |      z  d|      }t        |d	      }|j                  j                  d
      }|j                  |      }t        |d|||d      S )Nr/   rH   Tr   r$  r  )box_name_english__icontains)box_name_arabic__icontainsr  r  zbox_type_listing.htmlr  )rL   r=   r>   rK   rM   GiftBoxTyperJ   r;   r<   r   r   r"  r   r  s           r2   r<   zboxTypeLisiting.get  s    ~~$$W__Y-G$HNNP*!!((D*(U(
8)+""))!*TVWs~V*  UY  cm)  n8"%)'+  -)	/IS]lw0x	yyr4   Nr   r[   r4   r2   r  r    s    $*5
z 6
zr4   r  c                   2    e Zd Z eed      d        Zd Zy)
addBoxTyper~   r   c                     t         j                  j                  |j                  d         j	                         }t        |dd|i      S )Nr/   rH   add_box_type.htmlr   r   r   s      r2   r<   zaddBoxType.get  s@    ~~$$W__Y-G$HNNP*	+\*,E	FFr4   c                    t         j                  j                  |j                  d         j	                         }t        j                  |j                        }|j                         rk|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }t        j                  j                  |j                  |      }|st        j                  j                  |j                  |||      }|j                  j                  d      rct        |j                  j                  d            }	t!        t"        j$                        d	z   |	z   }	t!        |	      |_        |j)                          t+        j,                  |d
       t/        d      S t+        j,                  |d       t/        d      S t1        |dd|i      S )Nr/   rH   box_name_englishbox_name_arabicbox_cost)r   r  )r   r  r  r  box_iconr   zBox added successfullyzBox already added/box-type-listingr  rt   )rL   r=   r>   rK   rM   r   storeGiftBoxTypeFormrk   rl   rm   r<   r	  rr   rV  r   r   r-   r   r   	box_imager   r   rs   r	   r   )
rc   r@   r   rt   r  r  r  r  r$  r   s
             r2   rB   zaddBoxType.post  s   ~~$$W__Y-G$HNNP*		#	#GLL	1$	]]_''++,>?&&**+<=?##J/8''..
Wg.h>
##**JMMSc  uD  NV*  WH}}$w}}00<=W""#C'/WGX]]_W56 &
'' W01
&
''
,fT]
;;r4   Nr   r[   r4   r2   r  r    s#    $*5G 6G<r4   r  c                   2    e Zd Z eed      d        Zd Zy)editBoxTyper~   r   c                     t         j                  j                  |j                  d         j	                         }t
        j                  j                  |      j	                         }t        |d||d      S )Nr/   rH   r   edit_box_type.htmlmain_objr   )rL   r=   r>   rK   rM   r	  r   rc   r@   rr   r   r  s        r2   r<   zeditBoxType.get  sb    ~~$$W__Y-G$HNNP*  ''2'.446(	,z-Z	[[r4   c                    t        j                  |j                        }|j                         r5t        j
                  j                  |      j                  |j                  j                  d      |j                  j                  d      |j                  j                  d             |j                  j                  d      r|t        |j                  j                  d            }t        t        j                        dz   |z   }t        j
                  j                  |      j                  t        |             t        j                   |d	       t#        d
      S t%        |dd|i      S )Nr   r  r  r  )r  r  r  r  r   )r  Box updated successfullyr  r  rt   )r   r  rk   rl   r	  r=   r>   r   rm   r<   r   r   r-   r   r   r   rs   r	   r   rc   r@   rr   rt   r   s        r2   rB   zeditBoxType.post  s%   		#	#GLL	1$	]]_$++&&**+=>%%))*;<"":. , 
 mm
#gmm//
;<G!!"3&w.G"%,,s7|,DG67
&
''
-vdm
<<r4   Nr   r[   r4   r2   r  r    s#    $*5\ 6\
=r4   r  c                   ,    e Zd Z eed      d        Zy)changeGiftBoxStatusr~   r   c                 >   t         j                  j                  |j                  d         j	                         }t
        j                  j                  ||j                  d         j	                         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d	       t        |j                  j                  d            S )
Nr/   rH   r.  r  rn   rt  zBox status is activatedru  zBox status is deactivated)rL   r=   r>   rK   rM   r	  rk   rn   r   r   rs   r   rv  r<   ro   r  s       r2   rB   zchangeGiftBoxStatus.post  s    ~~$$W__Y-G$HNNP*""))
Y@W)X^^`#||H%#*((*ZZ3G67
w||''7
88>>'67
w||''7
88r4   Nr  r[   r4   r2   r!  r!    r  r4   r!  c                   ,    e Zd Z eed      d        Zy)deleteGiftBoxr~   r   c                     t         j                  j                  |      j                  t	        j
                                t        j                  |d       t        d      S )Nr   r|  r~  r  )	r	  r=   r>   r   r   r   r   rs   r	   r  s      r2   r<   zdeleteGiftBox.get  sJ    #**HLLN*C
723	%	&&r4   Nr   r[   r4   r2   r$  r$    s    $*5' 6'r4   r$  c                   ,    e Zd Z eed      d        Zy)giftPackagingListr~   r   c                    t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|      }t        d|       |j                  j                  d      }|r9t
        j                  j                  t        |      t        |      z  d|      }t        |d	      }|j                  j                  d
      }|j                  |      }t        |d|||d      S )Nr/   rH   Tr   r$  r  )!packaging_name_english__icontains) packaging_name_arabic__icontainsr  r  zgift_packaging_list.htmlr  )rL   r=   r>   rK   rM   GiftPackingTyperJ   r;   r<   r   r   r"  r   r  s           r2   r<   zgiftPackagingList.get  s    ~~$$W__Y-G$HNNP*%%,,j,Y(
8)+&&--aR].^`a  DO  aP  /P  ei  s}-  ~8"%)'+  -)	2yV`oz3{	||r4   Nr   r[   r4   r2   r'  r'    s    $*5
} 6
}r4   r'  c                   2    e Zd Z eed      d        Zd Zy)addGiftPackagingr~   r   c                     t         j                  j                  |j                  d         j	                         }t        |dd|i      S )Nr/   rH   add_gift_packaging.htmlr   r   r   s      r2   r<   zaddGiftPackaging.get  s@    ~~$$W__Y-G$HNNP*	1<
2K	LLr4   c                    t         j                  j                  |j                  d         j	                         }t        j                  |j                        }|j                         rk|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }t        j                  j                  |j                  |      }|st        j                  j                  |j                  |||      }|j                  j                  d      rct        |j                  j                  d            }	t!        t"        j$                        d	z   |	z   }	t!        |	      |_        |j)                          t+        j,                  |d
       t/        d      S t+        j,                  |d       t/        d      S t1        |dd|i      S )Nr/   rH   packaging_name_englishpackaging_name_arabicpackaging_cost)r   r1  )r   r1  r2  r3  r  r   zPackaging added successfullyzPackaging already added/gift-packaging-listr/  rt   )rL   r=   r>   rK   rM   r   storeGiftPackingFormrk   rl   rm   r<   r+  rr   rV  r   r   r-   r   r   packaging_imager   r   rs   r	   r   )
rc   r@   r   rt   r1  r2  r3  r  r$  r   s
             r2   rB   zaddGiftPackaging.post  s   ~~$$W__Y-G$HNNP*		#	#GLL	1$	]]_ --112JK,,001HI%%))*:;>#++22JMMaw2x>
''..
]s  K`  p~.  H}}$w}}00<=W""#C'/W!'lX]]_W;< )
** W67
)
**
2F4=
AAr4   Nr   r[   r4   r2   r-  r-    s$    $*5M 6MBr4   r-  c                   2    e Zd Z eed      d        Zd Zy)editGiftPackagingr~   r   c                     t         j                  j                  |j                  d         j	                         }t
        j                  j                  |      j	                         }t        |d||d      S )Nr/   rH   r   edit_gift_packaging.htmlr  )rL   r=   r>   rK   rM   r+  r   r  s        r2   r<   zeditGiftPackaging.get/  sc    ~~$$W__Y-G$HNNP*$$++r+288:(	2xU_3`	aar4   c                    t        j                  |j                        }|j                         r5t        j
                  j                  |      j                  |j                  j                  d      |j                  j                  d      |j                  j                  d             |j                  j                  d      r|t        |j                  j                  d            }t        t        j                        dz   |z   }t        j
                  j                  |      j                  t        |             t        j                   |d	       t#        d
      S t%        |dd|i      S )Nr   r1  r2  r3  )r1  r2  r3  r  r   )r6  r  r4  r:  rt   )r   r5  rk   rl   r+  r=   r>   r   rm   r<   r   r   r-   r   r   r   rs   r	   r   r  s        r2   rB   zeditGiftPackaging.post5  s&   		#	#GLL	1$	]]_!!R!(//,,001IJ++//0GH$$(()9: 0 
 mm
#gmm//
;<G!!"3&w.G""b")00W0NG67
)
**
3VDM
BBr4   Nr   r[   r4   r2   r8  r8  .  s$    $*5b 6b
Cr4   r8  c                   ,    e Zd Z eed      d        Zy)changeGiftPackagingStatusr~   r   c                 >   t         j                  j                  |j                  d         j	                         }t
        j                  j                  ||j                  d         j	                         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d	       t        |j                  j                  d            S )
Nr/   rH   r.  r  rn   rt  zPackaging status is activatedru  zPackaging status is deactivated)rL   r=   r>   rK   rM   r+  rk   rn   r   r   rs   r   rv  r<   ro   r  s       r2   rB   zchangeGiftPackagingStatus.postG  s    ~~$$W__Y-G$HNNP*&&--JGLLQZD[-\bbd#||H%#*((*ZZ3G<=
w||''7
88>>'<=
w||''7
88r4   Nr  r[   r4   r2   r=  r=  F  r  r4   r=  c                   ,    e Zd Z eed      d        Zy)deleteGiftPackagingr~   r   c                     t         j                  j                  |      j                  t	        j
                                t        j                  |d       t        d      S )Nr   r|  r~  r4  )	r+  r=   r>   r   r   r   r   rs   r	   r  s      r2   r<   zdeleteGiftPackaging.getT  sJ      B '...G
723	(	))r4   Nr   r[   r4   r2   r@  r@  S  s    $*5* 6*r4   r@  c                   ,    e Zd Z eed      d        Zy)getStoreNotificationsr~   r   c           	         t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|j                        j                  d      }|j                  j                  d      }t        j                         j                  d      }|j                  j                  d      }|r8t
        j                  j                  ||d	z   |z   gd
      j                  d      }t        |d      }|j                  j                  d      }|j                  |      }	t        |d|	|||d      S )Nr/   rH   Tr   r  r   z%H:%M:%Sr}  r  )start_date__ranger   r  r  zget_store_notifications.html)
notify_objr  r  r   )rL   r=   r>   rK   rM   StoreNotificationsrr   r!  r;   r<   r   r   strftimer   r"  r   )
rc   r@   r   not_objr  r  r  r%  r&  rF  s
             r2   r<   zgetStoreNotifications.get[  s5   ~~$$W__Y-G$HNNP*&&--z}}-]ffglm'.,		 	 	,${{z**''..,PZ]`P`bfPfAgy}.~  H  H  IN  O7$)'+!!+.*	6Z_k  zD  R\  8]  
^  ^r4   Nr   r[   r4   r2   rC  rC  Z  s    $*5^ 6^r4   rC  c                   ,    e Zd Z eed      d        Zy)deleteStoreNotificationsr~   r   c                    t         j                  j                  |j                  d         j	                         }|j
                  j                  d      }|rv|j                  d      D cg c]  }t        |       }}t        j                  j                  |      j                          t        j                  |d       t        d      S t        j                  |d       t        d      S c c}w )	Nr/   rH   	delete_id,)pk__inzDeleted Sucessfullyz*At least One notification must be selected/get-store-notifications)rL   r=   r>   rK   rM   r;   r<   splitr  rG  deleter   rs   ro   r	   )rc   r@   r   idsrr   int_id_lists         r2   r<   zdeleteStoreNotifications.getj  s    ~~$$W__Y-G$HNNP*$#$'IIcN3Nb#b'N;3$$K$8??AG12 
,	-- >>'FG	,	-- 4s   ,C0Nr   r[   r4   r2   rK  rK  i  s    $*5	. 6	.r4   rK  c                   ,    e Zd Z eed      d        Zy)readNotificationStorer~   r   c                 ,   t         j                  j                  |j                  d         j	                         }t
        j                  j                  |j                        j                         }d|_        |j                          t        d      S )Nr/   rH   r   FrP  )rL   r=   r>   rK   rM   rG  rr   lastis_readr   r	   )rc   r@   r   rI  s       r2   r<   zreadNotificationStore.getw  sm    ~~$$W__Y-G$HNNP*&&--z}}-EJJL''/	,,.	,	--r4   Nr   r[   r4   r2   rV  rV  v  s    $*5. 6.r4   rV  c                   ,    e Zd Z eed      d        Zy)serviceRequestListr~   r   c                 B   t         j                  j                  |j                  d         j	                         }t
        j                  j                  |j                        j                  d      }|j                  j                  d      }|rFt
        j                  j                  t        |      t        |      z  t        |      z  d	|
      }t        |d      }|j                  j                  d      }|j                  |      }t        |d|||d      S )Nr/   rH   r   r  r  r  )customer__first_name__icontains)customer__last_name__icontainsTr   r  r  zservice_request_list.html)req_objr  r   )rL   r=   r>   rK   rM   r   rr   r!  r;   r<   r   r   r"  r   )rc   r@   r   r$  r  r%  r&  r`  s           r2   r<   zserviceRequestList.get  s   ~~$$W__Y-G$HNNP*$$++*--+@II%P()+&&--a[f.gjk  MX  kY  /Y  \]  }H  \I  /I  ]a  ku-  v8"%)'+{+'	3wU`nx4y	zzr4   Nr   r[   r4   r2   r\  r\    s    $*5	{ 6	{r4   r\  c                   ,    e Zd Z eed      d        Zy)changeServiceStatusr~   r   c                    t        d|j                  d          t        j                  j	                  |j
                  d         j                         }t        j                  j	                  ||j                        j                         }t        j                  j	                  |      j                  |j                  d          |j                  d   dk(  rd}n|j                  d   d	k(  rd
}nd}|j                  j                  j                  }t        t        j                        }|j                  j                  j                   dk(  r|j                  j                  j"                  dk(  r@ddd|j$                  j&                  z   dz   |z   d}t)        |      j+                  ||      }	|j                  j                  j"                  dk(  r0d}
d|z   f}ddd|z   d}t)        |      j+                  ||
||      }	t,        j                  j	                  |j                  j                        j                         }t.        j                  j1                  |d|j$                  j&                  z   dz   |z   d       t3        j4                  |d       t7        |j8                  j;                  d            S )Nactionr/   rH   rr   r   r   delivery_statusr*   Pendingrt  
On the way	Deliveredr   androidservice_statusSERVICE ACCEPTEDz"Your service request delivery for zis typetitlerC   api_keyregistration_iddata_messageios)SERVICE STATUSz!Your service request delivery is rw  rt  message_titlemessage_bodyru   is ServicecustomerrC   notification_typeStatus changes successfullyru  )rJ   rk   rL   r=   r>   rK   rM   r   rr   r   r~  r   device_tokenr-   r   FIREBASE_SERVER_KEYnotification_enableddevice_type	serviceIdenglish_service_namer'   notify_single_deviceBuyerCustomerNotificationsrV  r   rs   r   rv  r<   )rc   r@   rr   r   r$  rg  rt  
server_keyru  resultry  rz  	buyer_objs                r2   rB   zchangeServiceStatus.post  s   h'(~~$$W__Y-G$HNNP*$$++r
+FLLN(  B '..w||H?U.V\\(s"?||H$!? ?%%**77/8//0*11Q6((I5.&:H<N<N<c<ccfkkm||L
 Z0EEVe  vBE  CF((E1%M7GHL.$:?JL Z0EEVe  vCL F :Fmm""h&7&7&:&:";AAC)&&	Bfhphzhz  iP  iP  CP  SY  CY  [j  Cj  ~G&  H
79:	gll&&~6	77r4   Nr  r[   r4   r2   rb  rb    s    $*5#8 6#8r4   rb  c                       e Zd Zd Zy)testFcmc                     d}d}dddd}t        |      j                  ||      }t        d	|       t        d
d|d      S )NzcLWvBCEzQHSqmlyM6-LKPM:APA91bFbX2gvrxC3QX6OcSlbZIflOPLS7Cdmpu-Cg6ryZ46Ucw1Uf61kqIHvnvzV-SeNl67Czcr1-EEWFEQCEJHZyRMIg2jbw_jOYnidQVGbBBn_LJIprpYjti8toMv6AX74KsPntlzSzAAAAyWeVa0M:APA91bHrD_vt7MqP2_R8PlFNAOsdvKR02IXEVjPhBaXZnUTjw6EmcEM4Vp8RJad8jrypS1geR29rcBvSfGlwX_h4z7VmfQpepemdEcQh8kjSwMNRwLR9FrVyh35HJdjXSckIHMqSErSerl  rm  z!Your service request delivery forrn  rq  rs  z++++++++++++++++++++   r  )status_codestatus_messagedata)r'   r  rJ   r   )rc   r@   rt  r  ru  r  s         r2   r<   ztestFcm.get  s`     z/ j*,$7	,
 :.CCTcsC  A&v&	S(&Q	RRr4   Nr   r[   r4   r2   r  r    s    Sr4   r  c                   ,    e Zd Z eed      d        Zy)viewServiceRequestr~   r   c                 
   t         j                  j                  |j                  d         j	                         }t
        j                  j                  ||j                        j	                         }t        |d||d      S )Nr/   rH   re  zview_service_request.htmlr$  r   rL   r=   r>   rK   rM   r   rr   r   rc   r@   rr   r   r$  s        r2   r<   zviewServiceRequest.get  si    ~~$$W__Y-G$HNNP*$$++r
+FLLN(	3V`4a	bbr4   Nr   r[   r4   r2   r  r    s    $*5c 6cr4   r  c                   ,    e Zd Z eed      d        Zy)acceptRequestListr~   r   c                 `   t         j                  j                  |j                  d         j	                         }t
        j                  j                  ||j                        j	                         }d|_        |j                          t        d      }|}t        j                  }|j                  j                  j                  }d}	t        |j                  j                  j                         t!        j"                  |	|||g|       t%        j&                  |d       t)        d	      S )
Nr/   rH   re  r   zservice_approved.htmlzSerivce Acceptedhtml_messagezSerivce accepted successfully/service-request-list)rL   r=   r>   rK   rM   r   rr   rl  r   r   r   EMAIL_HOST_USERr~  r   r6   rJ   r   	send_mailr   rs   r	   
rc   r@   rr   r   r$  r  plain_message
from_emailtosubjects
             r2   r<   zacceptRequestList.get  s    ~~$$W__Y-G$HNNP*$$++r
+FLLN((
--/!"9:,-''*##"'$$%..-bTU
7;<	)	**r4   Nr   r[   r4   r2   r  r        $*5+ 6+r4   r  c                   ,    e Zd Z eed      d        Zy)rejectRequestListr~   r   c                    t         j                  j                  |j                  d         j	                         }t
        j                  j                  ||j                        j	                         }d|_        |j                          t        d      }|}t        j                  }|j                  j                  j                  }d}	t        j                   |	|||g|       t#        j$                  |d       t'        d	      S )
Nr/   rH   re     zservice_rejected.htmlzService Rejectedr  zService rejected successfullyr  )rL   r=   r>   rK   rM   r   rr   rl  r   r   r   r  r~  r   r6   r   r  r   rs   r	   r  s
             r2   r<   zrejectRequestList.get  s    ~~$$W__Y-G$HNNP*$$++r
+FLLN((
--/!"9:,-''*##"'..-bTU
7;<	)	**r4   Nr   r[   r4   r2   r  r    r  r4   r  c                   ,    e Zd Z eed      d        Zy)dealSectionListr~   r   c                 \   t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|j                        j                  d      }|j                  j                  d      }|rRt
        j                  j                  t        |      t        |      z  d|j                        j                  d      }t        |d	      }|j                  j                  d
      }|j                  |      }t        |d|||d      S )Nr/   rH   F)today_deal_start_date__isnullr   r  r  r  r  r  r  zdeal_section_list.html)	today_objr  r   )rL   r=   r>   rK   rM   r   rr   r!  r;   r<   r   r   r"  r   )rc   r@   r   r$  r  r%  r&  r  s           r2   r<   zdealSectionList.get  s"   ~~$$W__Y-G$HNNP*%%EU_UbUb%cllmrs()+%%a&TVW  xC  WD  'D  ch  t~  tA  tA%  B  K  K  LQ  R8"%)'+  -)	0iVaoy1z	{{r4   Nr   r[   r4   r2   r  r    s    $*5	| 6	|r4   r  c                   2    e Zd Z eed      d        Zd Zy)addDealProductr~   r   c                     t         j                  j                  |j                  d         j	                         }t
        j                  j                  ddd|j                        }t        |d||d      S )Nr/   rH   r   T)rO  r   rn   r   add_deal_product.html)r  r   )rL   r=   r>   rK   rM   r   rr   r   )rc   r@   r   products_objs       r2   r<   zaddDealProduct.get  sh    ~~$$W__Y-G$HNNP*!!((!t\`lvlyly(z,	0Zd1e	ffr4   c                 z   t        j                  |j                        }|j                         r~|j                  j                  d      }t        j                  j                  |      j                  t        j                                t        j                  |d       t        d      S t        |dd|i      S )Nrl  r   today_deal_start_datezSepical deal added successfully/deal-section-listr  rt   )r   addDealFormrk   rl   rm   r<   r   r=   r>   r   r   r,   r   rs   r	   r   )rc   r@   rt   rl  s       r2   rB   zaddDealProduct.post  s    			7<<	($	]]_!!%%l3:j)00

0UG>?
'
((
'16$-
@@r4   Nr   r[   r4   r2   r  r    s$    $*5g 6g
Ar4   r  c                   ,    e Zd Z eed      d        Zy)deleteDealProductr~   r   c                     t         j                  j                  |      j                  d        t	        j
                  |d       t        d      S )Nr   r  z!Sepical deal deleted successfullyr  )r   r=   r>   r   r   rs   r	   r  s      r2   r<   zdeleteDealProduct.get$  sD    
R ''t'D
7?@	&	''r4   Nr   r[   r4   r2   r  r  #  s    $*5( 6(r4   r  c                   ,    e Zd Z eed      d        Zy)chatListr~   r   c           	         t         j                  j                  |j                  d         j	                         }t
        j                  j                  |j                        }t        j                  j                  |      j                  d      }t        j                  j                         }t        j                         }t        |d||||d      S )Nr/   rH   r   r   z-last_message_timezchat_list.html)roomsr   
buyer_info
today_date)rL   r=   r>   rK   rM   r
   r<   r/   	chat_roomr!  r  r<  r   r,   r   )rc   r@   r   r	  r  r  	todayDates          r2   r<   zchatList.get,  s    ~~$$W__Y-G$HNNP*ll*"4"45(



"
"
"
2
;
;<P
Q%}}  "*jjl)
 
(%Z]gu~)  
A  Ar4   Nr   r[   r4   r2   r  r  +  s    $*5
A 6
Ar4   r  )APIViewc                   ,    e Zd Z eed      d        Zy)getMessageListr~   r   c           	         	 |j                   }|j                  d      }|j                  d      }|st        ddd      S |st        ddd      S t        j                  j                  |      }t        j                  j                  |      }t
        j                  j                  |j                        }t        j                  j                  |j                        }t        j                  j                  ||	      j                  d
      t        j                  j                  ||	      j                  d
      z  }	g }
|	D ]d  }|j                  |k(  rd}nd}t        d|j                  j                         t        d|j                  j                         t        j                  j                  t        |j                  j                        t        |j                  j                        z        }|j                  dk(  rQ|
j!                  |j"                  |j$                  dz   |j&                  z   ||j(                  |j                  d       |
j!                  |j*                  |j$                  dz   |j&                  z   ||j(                  |j                  d       g t        d|
i      S # t,        $ r!}t        dt/        |      d      cY d }~S d }~ww xY w)Nr   r/     user_id is requiredr  r  store_id is requiredr   rH   )sender_userreceiver_user
created_atTFzmessage.sender_user.idzmessage.receiver_user.idrA   r  )rC   sender_namesenderr   ro  r  500)query_paramsr<   r   r
   r=   rL   rr   r  Messager>   r!  r  rJ   r  r   ro  r   rC   
first_name	last_namer  r]  r#  r-   )rc   r@   r  r   r/   	storeChatchatuserstoreObjru   r   r  rC   r  r   r(  s                  r2   r<   zgetMessageList.get;  s   F


4hhz"8XXi 7
s<QRSS
s<RSTT||8,9ll'*8nn   68]]x{{37oo$$($S\\]ijmtm|m|  nD  nD  QY  ir  nD  ns  n|  n|  }I  nJ  J87wi'VV	
"7#6#6#9#9:	
$W%:%:%=%=>==Qw':':'='=>'J_J_JbJb@ccdD||v^^tPS?SUYUcUc?cms  }D  }O  }O  X_  Xd  Xd  f  g^^DOOS<PRVR`R`<`kq  {B  {M  {M  V]  Vb  Vb  c  d  w'
((	 F
eSVD
EEFs*   =J>  J> I-J> >	K(K#K(#K(Nr   r[   r4   r2   r  r  :  s    $*5F 6Fr4   r  c                       e Zd Zd Zy)addMessagesc                 T   	 |j                   }|j                  d      }|j                  d      }|j                  d      }|st        ddd      S |st        ddd      S |st        ddd      S t        j                  j                  |	      }t        j                  j                  |	      }|j                  d
      }|s|t
        j                  j                  |||d       t        j                  j                  ||      }	||	_        t        j                         |	_        d|	_        |	j                          nt        |      }
t        t         j"                        dz   |
z   }
t        |
      }t
        j                  j                  |||d
       t        j                  j                  ||      }	d |	_        t        j                         |	_        d|	_        |	j                          t        ddi      S # t$        $ r!}t        dt        |      d      cY d }~S d }~ww xY w)Nr   r/   rC   r  r  r  r  zmessage is requiredr   r]  rA   )r  r  rC   ro  )r   r   r   r   )r  r  r]  ro  rs   r  )r  r<   r   r
   r=   r  rV  r  last_message_textr   r   last_message_timerZ  r   uploadThemessagepicturer-   r   r   r#  )rc   r@   r  r   r/   rC   r   buyerr]  crr   	image_urlr(  s                r2   rB   zaddMessages.post_  s   (F
,,4hhz"8XXi 7XXi 7
s<QRSS
s<RSTT
s<QRSS <<x(5<<w'588G5 OOuE7Y_`					E		7B"B#<<>BBJGGI#E*G!!"3&w.G'lIOOuEY`a					E		7BB#<<>BBJGGI
	),
--	 F
eSVD
EEFs1   AG= G= !G= 1FG= =	H'H"H'"H'Nrx  r[   r4   r2   r  r  ^  s    )Fr4   r  c                   ,    e Zd Z eed      d        Zy)changeOrderStatusr~   r   c                    t        d|j                  j                  d             t        j                  j                  |      j                  |j                  d          t        j                  j                  |      j                         }|j                  d   dk(  rd}n|j                  d   dk(  rd}nd}|j                  j                  }t        t        j                        }|j                  j                  d	k(  r|j                  j                  d
k(  r6ddd|j                   z   dz   |z   d}t#        |      j%                  ||      }|j                  j                  dk(  rPd}	d|j                   z   dz   |z   f}
ddd|j                   z   dz   |z   d}t#        |      j%                  ||	|
|      }t&        j                  j                  |j                  j(                        j                         }t*        j                  j-                  |d|j                   z   dz   |z   d       t/        j0                  |d       t3        |j4                  j                  d            S )Nrd  r   rf  r*   rh  rt  ri  rj  r   rk  order_statuszORDER STATUSz Your order request delivery for r{  rn  rq  rs  rv  )rm  rx  rH   r|  r}  r  ru  )rJ   r;   r<   r   r=   r>   r   rk   rM   r~  r  r-   r   r  r  r  orderIdr'   r  r  rr   r  rV  r   rs   r   rv  )rc   r@   rr   r$  rg  rt  r  ru  r  ry  rz  r  s               r2   rB   zchangeOrderStatus.post  sY   *+b!((h9O(P%%%,224(\\(s"?||H$!? ?%%22/8//0*++q0##y0,"8(:J:JJVSUddL Z0EEVe  vBE  CF##u,'M68H8HH6QSbbcL,"8(:J:JJVSUddL Z0EEVe  vC  R^  myE  zFmm""8+<+<+?+?"@FFH)&&	BdfnfvfvBvyB  BQ  CQ  en&  o
79:	gll&&~6	77r4   Nr  r[   r4   r2   r  r    s    $*5 8 6 8r4   r  c                   ,    e Zd Z eed      d        Zy)
getInvoicer~   r   c                    t         j                  j                  |      j                         }t        j                  j                  |j
                        j                         }t        j                  j                  |j                  d      }t        j                  j                  |j                        j                         }t        |j                        d d t        t        j                               z   t        |j                        d d z   }t        d|       t!        j"                  t$        j'                  |            d   }|j)                  dd	      j+                  d      }	t-        j.                  |	
      }
dd l}|j2                  j5                  t        t6        j8                        dz         rn+|j;                  t        t6        j8                        dz          |
j=                  t        t6        j8                        dz   |j                  z   dz   d       |j2                  j?                  t        t6        j@                        dz   |j                  dz         }t        d|       ||_!        |jE                          d|jB                  z   }|j2                  j?                  |jG                         |      }tI        |d      5 }tK        jL                  |jO                               }d d d        j+                  d      }t        |       |||||d}tQ        d      }tR        j                  jU                         j                         }|jW                  |||||d      }tY        d      }d|d<   tZ        j]                  |      j_                  |tZ        ja                  d      g       |S # 1 sw Y   xY w)Nr   Tr  r   orderPack_id   ------------------r   utf-16surrogatepasscontent/media/qrCode/.png   scaleqrCode/r]  media/rbutf-8)invoicecustomer_obj
orders_objtrans_idr]  zgetinvoice.htmlzapplication/pdf)content_typezattachment; filename="file.pdf"zContent-Dispositionstringstatic/store/css/invoice.cssstylesheets)1r   r=   r>   rM   r  customer_idCartr  CustomerTransactionrr   r-   r  r   r   r   rJ   codecsunicode_escape_decodestring_utilsshuffleencodedecodepyqrcoderV  osrN   existsr   BASE_DIRmkdirpngjoin
MEDIA_ROOTqr_code_imager   getcwdopenbase64	b64encodereadr   r;  r<  r   r   
weasyprintHTML	write_pdfCSS)rc   r@   rr   r  r  r   r  qr_unique_numbernew_strencodedparceldetailsurlr  r]  path_to_imageabs_path_to_image
image_fileencoded_stringbase64_imager  templater6  htmlresponses                          r2   r<   zgetInvoice.get  s	    $$$+113'%%)<)<%=CCE,||""W__d"K* ((//wzz/KQQS(001"15s8<<>7JJSQXQdQdMefhghMii-.(()=)=>N)OPQRS' /BII(S 45#WW^^C))*+;;<88C!!"#334''#h
 !1
1'//
A&
HRS'T
'',,s8../	9'//&:P
Q%'	,,.W222- ggll299;> t$
$$Z__%67> %  &&w/, <Z[clx	y$+,(''++-335)	G<U_ks  }I  J  
K$'89($E( !///((z~~Nl?m>n(o	/ %$s   $O  O	Nr   r[   r4   r2   r  r    s    $*5+ 6+r4   r  c                   ,    e Zd Z eed      d        Zy)viewOrderDetailsr~   r   c           
      0   t         j                  j                  |j                  d         j	                         }t
        j                  j                  |      j	                         }t        j                  j                  |j                        j	                         }t        j                  j                  |j                  d      }t        j                  j                  |j                        j	                         }t        |d|||||d      S )	Nr/   rH   r   Tr  r  zview_order_details.html)r  r  r   r  r   )rL   r=   r>   rK   rM   r   r  r  r	  r  r
  rr   r   )rc   r@   rr   r   r  r  r   r  s           r2   r<   zviewOrderDetails.get  s    ~~$$W__Y-G$HNNP*$$$+113'%%)<)<%=CCE,||""W__d"K* ((//wzz/KQQS(	1WT`nx  EM  [e  3f  
g  gr4   Nr   r[   r4   r2   r0  r0    s    $*5g 6gr4   r0  c                   ,    e Zd Z eed      d        Zy)couponListingr~   r   c                 f   t         j                  j                  |j                  d         j	                         }t
        j                  j                  |      j                  d      }t        |d      }|j                  j                  d      }|j                  |      }t        |d||d      S )	Nr/   rH   rX  r  r  r  zcoupon_listing.html)
coupon_objr   )rL   r=   r>   rK   rM   StoreCouponsr!  r   r;   r<   r"  r   )rc   r@   r   couponr%  r&  r5  s          r2   r<   zcouponListing.get  s    ~~$$W__Y-G$HNNP*&&
&;DDUK&#)'+!!+.*	-JT^._	``r4   Nr   r[   r4   r2   r3  r3    s    $*5a 6ar4   r3  c                   2    e Zd Z eed      d        Zd Zy)addCouponStorer~   r   c           	         t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|      j                  d      }t        j                  j                  d|      }t
        j                  j                  d|      j                  dd      j                         }t        d|       t        |d	||||d
      S )Nr/   rH   Tr   r  maincategory__id#maincategory__category_name_englishcategoryadd_coupon_store.html)productsr  catgeoryr   )rL   r=   r>   rK   rM   r   r!  r  valuesdistinctrJ   r   )rc   r@   r   r?  r  r@  s         r2   r<   zaddCouponStore.get  s    ~~$$W__Y-G$HNNP*$$j$QZZ[`a(""))T:)V'%%z%RYYZl  nS  T  ]  ]  _(
8	/Hwbj  yC  1D  
E  Er4   c                    t         j                  j                  |j                  d         j	                         }t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|r1t        j                  j                  |d|	      j	                         }	nd }	|j                  j                  d
      }
|
r/t        j                  j                  |
      j	                         }nd }|j                  j                  d      }|r/t        j                  j                  |      j	                         }nd }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }t        j                  j                  ||||||	|||||       t!        j"                  |d       t%        d      S t'        |d      S )Nr/   rH   coupon_name_englishcoupon_name_arabiccoupon_typecoupon_discountr   Trr   r   r   r  r   category_product	coupon_oncoupon_start_datecoupon_end_dater   rD  rE  rF  rG  r   r  rI  rJ  rK  rL  zCoupon added successfully/coupon-listingr>  )rL   r=   r>   rK   rM   r   addCouponFormrk   rl   rm   r<   r   r  r7  r6  rV  r   rs   r	   r   )rc   r@   r   rt   rD  rE  rF  rG  r   r  r  r'  rI  category_objrJ  rK  rL  s                    r2   rB   zaddCouponStore.post  s   ~~$$W__Y-G$HNNP*			W\\	*$	]]_**../DE))--.BC""&&}5;''++,=>?##I.7""))WV`)aggiKK""9-7""))W)5;;=KK''++,>?!))004D0EKKMLL  $$[19))--.AB''++,=>?H[  pB{[f  zF,=o  _ G89
$
%%
0
11r4   Nr   r[   r4   r2   r9  r9    s#    $*5E 6E#2r4   r9  c                   2    e Zd Z eed      d        Zd Zy)editCouponStorer~   r   c           
      2   t         j                  j                  |j                  d         j	                         }t
        j                  j                  d|      j                  d      }t        j                  j                  d|      }t
        j                  j                  d|      j                  dd      j                         }t        j                  j                  |      j	                         }t        d	|       t        |d
|||||d      S )Nr/   rH   Tr   r  r;  r<  r   r=  edit_coupon_store.html)r?  r  r@  r5  r   )rL   r=   r>   rK   rM   r   r!  r  rA  rB  r6  rJ   r   )rc   r@   rr   r   r?  r  r@  r5  s           r2   r<   zeditCouponStore.get)  s   ~~$$W__Y-G$HNNP*$$j$QZZ[`a(""))T:)V'%%z%RYYZl  nS  T  ]  ]  _(##**b*1779*
8	0XPWck  zD  R\  2]  
^  ^r4   c                    t         j                  j                  |j                  d         j	                         }t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }	|	r1t        j                  j                  |	d|	      j	                         }
nd }
|j                  j                  d
      }|r/t        j                  j                  |      j	                         }nd }|j                  j                  d      }|r/t        j                  j                  |      j	                         }nd }|j                  j                  d      }t        d|       |j                  j                  d      }|j                  j                  d      }t        j                  j                  |      j!                  ||||||
|||||       t#        j$                  |d       t'        d      S t)        |d      S )Nr/   rH   rD  rE  rF  rG  r   TrH  r  r   rI  rJ  rK  rL  rM  zCoupon Updated successfullyrN  rT  )rL   r=   r>   rK   rM   r   rO  rk   rl   rm   r<   r   r  r7  rJ   r6  r   r   rs   r	   r   )rc   r@   rr   r   rt   rD  rE  rF  rG  r   r  r  r'  rI  rP  rJ  rK  rL  s                     r2   rB   zeditCouponStore.post2  s6   ~~$$W__Y-G$HNNP*			W\\	*$	]]_**../DE))--.BC""&&}5;''++,=>?##I.7""))WV`)aggiKK""9-7""))W)5;;=KK''++,>?!))004D0EKKMLL  $$[19Y))--.AB''++,=>?"%,,zVi  ~P{[f  zF,=o - _ G:;
$
%%
1
22r4   Nr   r[   r4   r2   rR  rR  (  s#    $*5^ 6^#3r4   rR  c                   2    e Zd Z eed      d        Zd Zy)createServiceInvoicer~   r   c                 
   t         j                  j                  |j                  d         j	                         }t
        j                  j                  ||j                        j	                         }t        |d||d      S )Nr/   rH   re  service-invoice.htmlr  r  r  s        r2   r<   zcreateServiceInvoice.get\  si    ~~$$W__Y-G$HNNP*$$++r
+FLLN(	.8Q[/\	]]r4   c                    t         j                  j                  |j                  d         j	                         }t
        j                  j                         j	                         }t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }t        j                  j                  ||j                        j	                         }	t        |      dz  t        |j                         z  }
t"        j                  j                  |j                  |	      }|st"        j                  j%                  |j                  |	      }t'        |j                        |_        ||_        ||_        t/        |      t/        |
      z   |_        |	j2                  j4                  |_        |	j2                  j6                  |_        ||_        |	j:                  |_        |
|_        |	j@                  jB                  d	z   |	j@                  jD                  z   |_#        |jI                          tK        |jF                        d d
 tK        tM        jN                               z   tK        |j0                        d d
 z   tK        |j>                        d d
 z   }tQ        d|       tS        jT                  tV        jY                  |            d   }|j[                  dd      j]                  d      }t_        j$                  |      }dd l0}|jb                  je                  tK        tf        jh                        dz         rn+|jk                  tK        tf        jh                        dz          |jm                  tK        tf        jh                        dz   |j(                  z   dz   d       |jb                  jo                  tK        tf        jp                        dz   |j(                  dz         }tQ        d|       ||_9        |jI                          d|jr                  jt                  z   }|jb                  jo                  |jw                         |      }ty        |d      5 }t{        j|                  |j                               }d d d        j]                  d      }tQ        |       ||||d}t        d      }|j                  |      }t        j                         }t        j                  |      j                  |t        j                  d      g       t        tf        jp                        }tK        tf        jh                        dz   d |j(                   d!z   }|jI                  ||      }||_I        |jI                          t        j                  j                  ||j                        j                  d"#       t        j                  |d$       t        d&      S t        j                  |d%       t        d&      S t        |d'd(|i      S # 1 sw Y   xY w))Nr/   rH   
unit_pricetotal_pricerK  re  r+   )r   service_request_idr  r  r  r   r  r  r  r  r  r  r  r  r]  r  r  r  )r  r]  	admin_vatr   service-invoice-pdf.htmlr  r  r  )locationz/media/InvoicePdf/invoice_z.pdfT)invoice_generatedz$Service invoice created successfullyzService Invoice already createdr  rY  rt   )NrL   r=   r>   rK   rM   r;  r<  r   ServiceInvoiceFormrk   rl   rm   r<   r   rr   r  r=  ServiceInvoicerV  r3   invoice_numberr[  total_before_vatr   total_amountr  r  arabic_service_namerK  notesdescription
vat_amountr~  r  r  customer_namer   r-   r   r   rJ   r  r  r  r  r  r  r  r  rN   r  r   r  r  r  r  r  qr_coder   r  r  r  r  r  r   r   ior   r  r   r!  r"  r$   invoice_pdf_urlr   r   rs   r	   )rc   r@   rr   r   r^  rt   r[  r\  rK  r  rk  r  r#  r$  r%  r&  r  r]  r'  r(  r)  r*  r+  contextr,  r-  
pdf_outputstoragepdf_file_namepdf_file_paths                                 r2   rB   zcreateServiceInvoice.postb  sN   ~~$$W__Y-G$HNNP*''++-335)		!	!',,	/$	]]_!!%%l3:""&&}5;##J/8''..":==.IOOQ:K $s9+C+C'DD:"**11:==\f1g>
$,,33Z]]^h3iN$6~7H7H$IN! *N&1N#"'"4uZ7H"HN*4*>*>*S*SN')3)=)=)Q)QN&&N!+!1!1N *N#-#6#6#A#AC#G*J]J]JgJg#gN >778!<c(,,.>QQTWXfXsXsTtuwvwTxx{~  @N  @Y  @Y  |Z  []  \]  |^  ^	
/0**<+?+?@P+QRSTUG">>(ODKKHU
//"6
7C	ww~~c(++,-==>	XXc(##$%556GGC!!"#33N4Q4QQRXXbcGdGGLLX001);N<Y<YZ`<`aE	'% N
 ~55:::M RYY[-@ 
	&*&&z'89^ 
' "((1L	,$ &	G 67H??7#DJOO4O **:JNNSqDrCs*t  )<)<=G**+,@@8NLiLiKjjnAooMLL
;M '4N"""bz}}"=DDW[D\WCD *
++ W>?
*
++
/
>>e 
'	&s   *$Y  Y*Nr   r[   r4   r2   rW  rW  [  s$    $*5^ 6^
d?r4   rW  c                       e Zd Zd Zy)
pdfInvoicec                     t        |d      S )Nr_  ra   rb   s     r2   r<   zpdfInvoice.get  s    	2	44r4   Nr   r[   r4   r2   rv  rv    s    5r4   rv  )django.views.generic.baser   auth_apis.modelsdjango.contrib.authr   r   r   django.shortcutsr   r	   r
   r   django.httpr   django.http.responser   rn  r   r   django.template.loaderr   django.corer   django.contribr   django.confr   mathpytzr  django.contrib.auth.decoratorsr   django.utils.decoratorsr   admin_panel.modelsr   django.core.paginatorr   r   r   store_apis.modelspasslib.hashr   rp   store_apis.functionsdjango.core.exceptionsr   rb  panel_apis.modelsadmin_panel.functionsr   panel_apis.functionsr   r   	functionsrn  r   	xhtml2pdfr   pdfkitdjango.templater    r  r!   r  django.core.mailr"   django.core.files.storager#   r$   urllib.requestr%   r  requestsurllibPILr&   pyfcmr'   bearerr3   rD   rW   r\   r^   r}   r   r   r   r   r   r   r   r  r  r*  r_  ri  rr  rz  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-  r8  r=  r@  rC  rK  rV  r\  rb  r  r  r  r  r  r  r  r  rest_framework.viewsr  r  r  r  r  r0  r3  r9  rR  rW  rv  r[   r4   r2   <module>r     sH   *  ; ; - ! . $ -   3  #   ! ! 9 4    +   8 " 3 
  3 "  /   $ /   3 $ / #    3  5 7 	 "     ! 
,
*H-4 -:+yT +y\#/4 #/L"$ "6 6&7$ 7:)d ).2d 2.54 50-$ -"W3d W3tX3t X3t" "(
9$ 
9,D ,
-$ 
-Ad A,$ 9t 9Ad A*4t 4($ 9t 9, ,>4 >*1D 1&|t |9D 9)d )@T @*3d 3&~ ~9d 9+ +!'4 !'Fzd z< <6=$ =09$ 9'D '} }Bt B8C C09 9*$ *^D ^.t ..D .{ {%8$ %8RSd Sc c+ +$+ +F|d |AT A"( (At A )!FW !FH*F' *F\"8 "8N- -^gt gaD a-2T -2`-3d -3fk?4 k?\5 5r4   