
?_8                @   s^  d  d l  m Z d  d l m Z d  d l m Z d  d l m Z m	 Z	 d  d l
 Td  d l Td  d l Td  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 m Z d  d l m Z d  d l Z d  d l Z d  d
 l m Z d  d l Z d  d l Z d  d l  m! Z! d  d l" Z" d  d l# Z# d  d l$ Z$ d  d l$ m% Z% d  d l& Z& d  d l" Z" d  d l' m( Z( d  d l) Td  d l* Td  d l+ m, Z, d  d l- m. Z. d  d l/ m0 Z0 d  d l  m! Z! d  d l1 Td  d l2 m3 Z3 d  d l4 m5 Z5 d  d l6 Z6 d  d l7 m8 Z8 d  d l9 m: Z: d  d l; Z; d  d l; m< Z< d  d l= Z= d  d l> m? Z? d  d l@ Z@ d  d lA ZA d  d lB mC ZC d  d lD mE ZE d  d lB mF ZF d  d lG ZG d  d l Z d  d lH mI ZI mJ ZJ d  d lK mL ZL mM ZM mN ZN mO ZO mP ZP mQ ZQ mR ZR mS ZS mT ZT mU ZU mV ZV d  d lH mW ZW mX ZX mY ZY mZ ZZ Gd  d!   d! e  Z[ e, e\ d" d# Gd$ d%   d% e   Z] e, e\ d" d# Gd& d'   d' e   Z^ e, e\ d" d# Gd( d)   d) e   Z_ e, e\ d" d# Gd* d+   d+ e   Z` e, e\ d" d# Gd, d-   d- e   Za Gd. d/   d/ e  Zb e, e\ d" d# Gd0 d1   d1 e   Zc Gd2 d3   d3 e  Zd Gd4 d5   d5 e  Ze Gd6 d7   d7 e  Zf Gd8 d9   d9 e  Zg Gd: d;   d; e  Zh Gd< d=   d= e  Zi Gd> d?   d? e  Zj Gd@ dA   dA e  Zk GdB dC   dC e  Zl GdD dE   dE e  Zm e, e\ d" d# GdF dG   dG e   Zn e, e\ d" d# GdH dI   dI e   Zo e, e\ d" d# GdJ dK   dK e   Zp GdL dM   dM e  Zq GdN dO   dO e  Zr dP dQ   Zs GdR dS   dS e  Zt e, e\ d" d# GdT dU   dU e   Zu GdV dW   dW e  Zv dX dY   Zw d S)Z    )render)django_pbkdf2_sha256)APIView)MultiPartParser
FormParser)*)HttpResponseJsonResponse)Response)IsAuthenticated)csrf_exempt)Token)api_viewpermission_classes)AllowAnyN)settings)	timedelta)FileSystemStorage)method_decorator)Q)parse)FCMNotification)TemplateView)MIMEText)MIMEMultipart)QRCode)generate_pdf)EmailMultiAlternatives)CurrencyConverter)	send_mail)parcel_delivered_success_mailpayment_reminder_mail)getcourierprice_easyshipgenerate_awbpdfgenerate_paymentreceiptpdfconvertuserbalancegetcourierpricefrombackend"convert_currency_between_countriesgetawbfilepathgetpaymentreceiptfilepathgetatnfilepathgetunreadnotificationscount#deliverygetunreadnotificationscount)gettimezone"getcurrenttimeinnewcountrytimezoneconvertutctonewtimezonejaaduc               @   s%   e  Z d  Z e f Z d d   Z d S)filterTravellerc          (   O   sL  t  d  t  d | j  yt  d  | j j d  } t  d  | se t d d d d	 d
 d i  S| j j d  } t  d  | s t d d d d	 d
 d i  S| j j d  } t  d  | s t d d d d	 d
 d i  Sd } | j d  } t | d  d t | d  d t | d  } t |  } t  d  t  d  t  d  t |  j   } t  |  t j j	 | j
   |  }	 t  t |	   t  |	  t j j t d |  t d |  @ }
 t  |
  d } t  d  g  } x|
 D]} t  t | j   | j } t  |  | j } t j j	 | |  } t  t |   t  |  | |	 k rd } | j j j j sd } nl d | j j j j k rt  d   | j j j j } | j d! d"  } n# t t j  d# | j j j j } | j d$ | j d% | j j j d& | j j j d' | j d( | j d) d d* d d+ | d, | j d- | j d. | j d/ | j d0 | j d1 | j  d2 | j! d3 | j" i  qWt  |  |
 rt d d4 d d5 d
 d6 d7 | i  St  d8  t d d4 d d5 d
 d9 d7 | i  SWnQ t# k
 rG} z1 t  |  t d d: d d	 d
 t |  i  SWYd  d  } ~ Xn Xd  S);Nz



zdata is  : onetoCitytwocodei  statusfalsemessagezDestination City is requiredfromCityzCity is required
searchDatethreezDate is requiredz00:00:00-   /   r   fivezbefore main_user_objz'==================here from enterd datetocityfromcitynotz$==================here from new date z//zfull url existsoriginalz200*200zmedia/200*200-IDNamePhonezDeparture TimezArrival TimeRatingzCompleted TaskzProfile PicturezCharges per KGzFrom Countryz	From CityzDeparture Datez
To countryzTo cityzArrival Datez	Travel By   truezTravller FindListsevenzTravller Not Findi  )$printPOSTgetr
   splitstrr   timedatetimecombinedatetypeSupplierJobobjectsfilterr   departuretimedeparturedateuserimagenamereplacer   WEB_BASE_URLappendtraveller_idphonearrivaltimechrgesperkgfromcountryrB   	tocountryrA   arrivaldate	travel_by	Exception)selfrequestargskwargsdes_citycity
start_daterS   dep_timedeparturedatetimemain_user_objtimeuseralluserr]   new_timenewdatenewdeparturedatetimer^   e r|   -/var/www/html/Transporter/Mobileapis/views.pypost>   s    




4




(

	
	
	
#									
"
&
zfilterTraveller.postN)__name__
__module____qualname__r   r   r~   r|   r|   r|   r}   r1   <   s   	r1   r_   dispatchc               @   s%   e  Z d  Z e f Z d d   Z d S)DeleteParcelRequestc             O   sf  t  d  t  d | j  | j j d  } | sH t d d d d i  S| j j d  } | sv t d d d d	 i  Sg  } g  } t j j d
 |  } | s t d d d d i  S| j d  t j j d | d  }	 |	 st d d d d i  S| j d  g  }
 t	 j j d |	 d d |  } | rLd | _
 t d d d d i  St d d d d i  Sd  S)Nz



zdata is  : session_tokenr5   r   errorzSession Token Empty	RequestIdzRequest Id is RequiredtokenzUser Not Logged INyesr]   zUser Not Register as Tav eller	parcel_idTrJ   r8   zDelete RequestzNo Reuest Find)rN   rO   rP   r
   MainUserrY   rZ   rb   CustomerCustomerJobdeleteRequest)rl   rm   rn   ro   session_token_val
Request_idaidsmain_job_objcustomerObjdatacustomerjobobjr|   r|   r}   r~      s0    
	zDeleteParcelRequest.postN)r   r   r   r   r   r~   r|   r|   r|   r}   r      s   	r   c               @   s%   e  Z d  Z e f Z d d   Z d S)RejectParcelRequestc             O   s  t  d  t  d | j  | j j d  } | sH t d d d d i  S| j j d  } | sv t d d d d	 i  Sg  } g  } t j j d
 |  } | s t d d d d i  S| j d  t j j d | d  }	 |	 st d d d d i  S| j d  g  }
 t	 j j d |	 d d |  } | rUd | _
 d | _ t d d d d i  St d d d d i  St d d d |
 i  S)Nz



zdata is  : r   r5   r   r   zSession Token Emptyr   zRequest Id is Requiredr   zUser Not Logged INr   r]   zUser Not Register as Tav ellertravllerr   FTrJ   r8   zRequest Rejected SuccessfullyzNo Reuest Findr   )rN   rO   rP   r
   r   rY   rZ   rb   Supplierr   requestAcceptrequestReject)rl   rm   rn   ro   r   r   r   r   r   supplier_obj_jobr   r   r|   r|   r}   r~      s4    
		zRejectParcelRequest.postN)r   r   r   r   r   r~   r|   r|   r|   r}   r      s   	r   c               @   s%   e  Z d  Z e f Z d d   Z d S)AcceptParcelRequestc             O   s  t  d  t  d | j  | j j d  } | sH t d d d d i  S| j j d  } | sv t d d d d	 i  S| j j d
  } | s t d d d d i  Sg  } g  } t j j d |  }	 |	 s t d d d d i  S| j d  t j j d |	 d  }
 |
 s0t d d d d i  S| j d  g  } t	 j j d |
 d d |  } | rd | d _
 d | d _ | | d _ | d j   t d d d d i  St d d d d i  Sd  S)Nz



zdata is  : r   r5   r   r   zSession Token Emptyr   zRequest Id is RequiredChargeszPlease Add Chargesr   zUser Not Logged INr   r]   zUser Not Register as Tavellerr   r   TFrJ   r8   zRequest Accept SuccessfullyzNo Reuest Find)rN   rO   rP   r
   r   rY   rZ   rb   r   r   r   r   chargesByTravellersave)rl   rm   rn   ro   r   r   chargesr   r   r   r   r   r   r|   r|   r}   r~      s<    
zAcceptParcelRequest.postN)r   r   r   r   r   r~   r|   r|   r|   r}   r      s   	r   c               @   s   e  Z d  Z d d   Z d S)ShowAllRequestsToCustomerc          &   O   sz  t  d  t  d | j  | j j d  } t j j d |  } | s] t d d d d i  St j j d	 | d
  } | s t d d d d i  St j j d	 | d
  } g  } | s t d d d d i  S| rx| D]}	 |	 j	 r | j
 d |	 j i  |	 j r| j
 d d i  n | j
 d d i  |	 j	 rP| j
 d d i  n | j
 d d i  |	 j r| j
 d d i  n | j
 d d i  |	 j r| j
 d d i  n | j
 d d i  | j
 d |	 j j j d |	 j j j d |	 j d |	 j d |	 j d |	 j d |	 j d |	 j d |	 j d |	 j d |	 j d |	 j d  |	 j d! |	 j d" |	 j d# |	 j d$ |	 j  d% |	 j! i  q Wt d d d& | i  St" | d' d( }
 t  |
 j#  t d d d& | d) |
 j# i d* d d+ d, Sy t  |  Wn/ t$ k
 r%} z t  |  WYd  d  } ~ Xn X| rvt" | d' d( }
 t  |
 j#  t d d d& | d) |
 j# i d* d d+ d, Sd  S)-Nz



zdata is  : r   r   r5   rJ   r8   zUser Not Logged Inr]   r   zUser Not Registerd as CustomerzNo Sending Request of ParcelzCharges By TravellerzRequest SendTrueFalsezRequest AcceptzRequest RejectedzRequest Paid	TravellerUserz	Parcel IdzPickup AddresszFrom Countryz	From CityzPostal CodezReciver NamezReciver Country CodezReciver PhonezReciver Drop AddresszReacive To CountryzReacive CityzReacive Postal codeWeightDescriptionDatezJob SatatuszRequest StatusmanyTr   r6   safeF)%rN   rO   rP   r   rY   rZ   r	   r   r   r   rb   r   requestSendr   requestPaidr   r]   r_   r   pickupaddressrg   rB   frompostalcodereceivernamereceivercountrycodereceiverphonereceiverdropaddressrh   rA   topostalcodeparcelweightdescriptionjob_creation_date
job_statusZCustomerJobSerializerr   rk   )rl   rm   rn   ro   r   ru   r   CustomerobjZreqDatacustom
serializerr{   r|   r|   r}   r~     sx    
																				+zShowAllRequestsToCustomer.postN)r   r   r   r~   r|   r|   r|   r}   r      s   r   c               @   s   e  Z d  Z d d   Z d S) notificationTravellerAndCustomerc          8   O   s  t  d  t  d | j  | j j d  } yt j j d |  } | s` t d d d d i  St j j d	 | d  } t j j d	 | d  } g  } d
 }	 d
 }
 | s d }	 | s d }
 d
 } | r|	 r|
 rt	 j j t
 d | d  t
 d	 | d  B } nJ |	 r,t	 j j t
 d | d   } |
 rQt	 j j t
 d	 | d   } | rxd| D]I} |	 r| j | d k r| j d
 k s| j d
 k rnx| j j j j sd } nl d | j j j j k rt  d  | j j j j } | j d d  } n# t t j  d | j j j j } | j d d d | j j j d | j j j d | j j j d | j d | j d | j d | j d | j d | j d | j d | j d  | j d! | j  d" | j! d# | j" d$ | j# d% | j$ d& | j% d' | j& d( | j d) | j d* | j' d+ | i  |
 r^| j | d k r^| j j j j sJd } nl d | j j j j k rt  d  | j j j j } | j d d  } n# t t j  d | j j j j } | j d d, d | j j j d | j j j d | j j j d | j d | j d | j d | j d | j d | j d | j d | j d  | j d! | j  d" | j! d# | j" d$ | j# d% | j$ d& | j% d' | j& d( | j d) | j d* | j' d+ | i  q^Wn t d d- i  St d d. d/ | i  SWn; t( k
 r} z t d d d | i  SWYd  d  } ~ Xn Xd  S)0Nz



zdata is  : r   r   r5   r   r8   zUser Not Logged Inr]   TFr   rD   z//zfull url existsrE   z200*200zmedia/200*200-ZstatusIdr   zTraveller Namez	User Namez
User Phonez	Parcel IdzPickup AddresszFrom Countryz	From CityzPostal CodezReciver NamezReciver Country CodezReciver PhonezReciver Drop AddresszReaciver CountryzReaciver Cityr   r   r   zJob Satatusr   r   r   Z
requestPayr^   ZSenderzNo Request FoundrJ   r   ))rN   rO   rP   r   rY   rZ   r	   r   r   r   r   r   r   r   r]   r^   r_   r`   rR   r   ra   rb   rd   r   r   rg   rB   r   r   r   r   r   rh   rA   r   r   r   r   r   r   rk   )rl   rm   rn   ro   r   ru   ZtravellerObjr   Zall_requestZtravelFinderZcustomerFinderZforFunExtrar   r   r^   r{   r|   r|   r}   r~   V  s    
3	
#																				
#																			z%notificationTravellerAndCustomer.postN)r   r   r   r~   r|   r|   r|   r}   r   S  s   r   c               @   s   e  Z d  Z d d   Z d S)sendParcelToTravellerc          )   O   s  t  d  t  d | j  | j j d  } t j j d |  } t  |  y"| rP| j j d  } | s t d d d d	 i  St  |  t j j d
 |  } | s t d d d d i  S| j j d  } | j j d  }	 |	 s t d d d d i  S| j j d  }
 |
 s+t d d d d i  S| j j d  } | j j d  } | skt d d d d i  S| j j d  } | st d d d d i  S| j j d  } | st d d d d i  S| j j d  } | st d d d d i  S| j j d  } | s#t d d d d i  S| j j d  } | sQt d d d d i  S| j j d  } | st d d d d i  S| j j d   } | st d d d d! i  S| j j d"  } t j j	   } | d  k rt  d#  t
 d=  } n) t | j  } t  d&  t
 | d%  } t j j d' | d  } | r>n2 t j j d' | d  } t j j d' | d  } t  d(  yp t j j d) | d j d' | d d* |	 d+ |
 d, | d- | d. | d/ | d0 | d1 | d2 | d3 | d4 d5 d6 |  WnG t k
 r3} z' t d d7 d d8 d t
 |  i  SWYd  d  } ~ Xn Xt d d9 d d: d d; i  St d d7 d d8 d d< i  SWnQ t k
 r} z1 t  |  t d d7 d d8 d t
 |  i  SWYd  d  } ~ Xn Xd  S)>Nz



zdata is  : r   r   Z
travllerIdr6   r   r8   zTraveller Id is Emptyrc   zNo Supplier with this IDZpickupAddressfromCountryzFrom Country Name Requiredr9   zFrom City Name RequiredZpostal_codeZrecNamezRecipient Name RequiredZcountryCodezRecipient Country Code RequiredZrecPhonezRecipient Phone Number RequiredZparcelDropAdrrszParcel Drop Address RequiredZ
recCountryzRecipient Country Name RequiredZrecCityzRecipient City Name RequiredZparcelWeightzParcel Weight RequiredZ
parcelDesczParcel Description Required	promocodezlast travller id not findi'  r=   zlast travleer is findr]   2r   rg   rB   r   r   r   r   rh   rA   r   r   r   Tr   i  r7   rJ   rK   zRequest SentzUser not logged in.i'  )rN   rO   rP   r   rY   rZ   r
   rX   r   lastrR   intr   r   creater]   rk   )rl   rm   rn   ro   r   ru   ZtravellerIdZsupplierObjZpickup_addr_valZcountry_nm_valZcity_nm_valZpostal_code_valZrec_name_valZrec_countrycode_valZrec_phone_valZparcel_drop_addr_valZrec_country_nm_valZrec_city_nm_valZparcel_wt_valZparcel_des_valZpromocode_valZlast_customer_objnew_traveller_idZlatest_customer_idZnew_customer_idZcustomer_objr{   r|   r|   r}   r~     s    





p5 
zsendParcelToTraveller.postN)r   r   r   r~   r|   r|   r|   r}   r   
  s   r   c               @   s   e  Z d  Z d d   Z d S)UpdateProfilePicturec                 s}  t  d  t  d  t  d | j  y t  d | j  Wn/ t k
 ri } z t  d  WYd  d  } ~ Xn X| j j d  } | s t d d d d	 d
 d i  St j j d |  } y| rd } | r4d d l	 m
 } | j j d  }	 |	 st d d d d	 d
 d i  S|	 r/|	 j }
 t  d  t  |
  t  d  |
 j d  }
 t |
 d.  } d d  l } | j |	 j    } t  d  t  |  | j |  } t  d  d d  l   d d  l  d j    f d d   t d  D  } t j j   } t  d  x | D] } t  | j | j  | j |  } | j t | j  t | j  g | j  } | j t t j  d t | j  d t | j  d | d |  } t t j   d t | j  d t | j  d | d | }
 q	W| j |  } | j t t j  d  | d |  t  d! |
  |	 rWt j j d |  j! d |
  n t d" d# d d$ d% d& i  t j j d |  } | d j" } d' | d j# j k rt  d(  | d j# j }	 n! t t j   d) | d j# j }	 t  d*  t d" d# d
 d+ d |	 d d$ d% d+ i  Sn t d d, d
 d- i  SWnA t k
 rx} z! t d d, d
 t |  i  SWYd  d  } ~ Xn Xd  S)/NzUpdateProfile - in postz



zdata is  : z
data is jjr   r5   i  r6   r7   r8   zUser not Logged Inr   Tr   )Imager^   z)Image Required for Update Profile picture
.r=   34rD   c                s)   g  |  ] }   j   j  j   q Sr|   )choiceascii_lettersdigits).0n)randomstringr|   r}   
<listcomp>  s   	 z-UpdateProfilePicture.post.<locals>.<listcomp>   zbeforee resizingz/media/r   r<   zmedia/z/media/original-zfilename = codecrJ   rK   status_messagezProfile not updatedz//zful url existszmedia/200*200-zprofile updatedzProfile updated successfullyi  zUser Not Logged In)$rN   rO   FILESrk   rP   r
   r   rY   rZ   PILr   r_   rQ   rR   ioBytesIOreadopenr   r   joinrangeThumbnailSizeallheightwidth	thumbnailr   	ANTIALIASr   r   BASE_DIRra   updatefcmtokenr^   )rl   rm   rn   ro   r{   r   obj
Extra_Truer   r^   filename	extensionr   
image_dataimgstthumbnailsize_objsthumbnailsizeimru   main_user_obj_fcmtokenr|   )r   r   r}   r~   o  sx    


	





+
-JE&"
!
+zUpdateProfilePicture.postN)r   r   r   r~   r|   r|   r|   r}   r   m  s   r   c               @   s   e  Z d  Z d d   Z d S)TravelByc             O   s   t  d  t  d | j  y t j j   } | r| t | d d } t  | j  t d d d | j d d	 i d d d
 d St d d d d d d i  SWnG t	 k
 r } z' t d d d t
 |  d d i  SWYd  d  } ~ Xn Xd  S)Nz

zdata is  : r   Tr5   rJ   r   r6   rK   r   F   r8   zNo vehical type foundr7   i  )rN   rO   TravelByListrY   r   ZTravelByListSeralizerr   r	   r
   rk   rR   )rl   rm   rn   ro   r   r   r{   r|   r|   r}   r~     s    
+ zTravelBy.postN)r   r   r   r~   r|   r|   r|   r}   r     s   r   c               @   s   e  Z d  Z d d   Z d S)
GetCountryc             O   s   t  d  t  d | j  y t j j   } | r| t | d d } t  | j  t d d d | j d d	 i d d d
 d St d d d d d d i  SWnG t	 k
 r } z' t d d d t
 |  d d i  SWYd  d  } ~ Xn Xd  S)Nz

zdata is  : r   Tr5   rJ   r   r6   rK   r   Fr   r8   zNo countries foundr7   i  )rN   rO   	CountriesrY   r   ZCountrySeralizerr   r	   r
   rk   rR   )rl   rm   rn   ro   r   r   r{   r|   r|   r}   r~     s    
+ zGetCountry.postN)r   r   r   r~   r|   r|   r|   r}   r     s   r   c               @   s   e  Z d  Z d d   Z d S)GetCityc       	      O   sR  t  d  t  d | j  | j j d  } t  |  | sX t d d d d d d	 i  Sy t  d
  t j j d |  } t j j d |  } t  d  | r t  d  t | d d } t  | j	  t
 d d d | j	 d d i  St d d d d d d i  SWnG t k
 rM} z' t d d d t |  d d	 i  SWYd  d  } ~ Xn Xd  S)Nz

zdata is  : 
country_idr5   i  r8   zEnter country namer6   r7   1idcountryr   r   r   TrJ   r   rK   i  ZmeesagezNo cities foundi  )rN   rO   rP   r
   r   rY   CitiesrZ   ZCitySeralizerr   r	   rk   rR   )	rl   rm   rn   ro   Zcountry_id_valZcountry_objr   r   r{   r|   r|   r}   r~     s&    




 zGetCity.postN)r   r   r   r~   r|   r|   r|   r}   r     s   r   c               @   s"   e  Z d  Z e d d    Z d S)	SignUpOTPc             O   sb  t  d  y g  } t  d | j  | j j d  } | sW t d d d d d d	 i  S| d
 k s t d d d d d d i  S| j j d  } | s t d d d d d d i  S| j j d  } | s t d d d d d d i  S| j j d  } | st d d d d d d i  S| j j d  }	 |	 s9d }	 d | k rOd | } | j j d  }
 t  t |
   |
 st d d d d d d i  S| j j d  } | st d d d d d d i  St j j d |  } | rt d d d d d d i  St j j d d d | d |
 d d  } | rGt d d d d d d i  Sg  } t j j d |
  } | j d  | r| j d   | d! j	 d k r| j d"  t d d d d d d# i  S| j d$  xa | D]. } | j d | j
 d% | j d | j i  qWn( | j d&  t j j d |
 d |  } | j d'  | r	t   } t  d( |  t j j   } t j j   t d) d*  } | rt j |  } t j j d |
  j d | d | d+ |	 d | d |
 d, | d- |  } t  d"  t d d. d d/ d d0 d1 | i  SWnQ t k
 r]} z1 t  |  t d d2 d d d t |  i  SWYd  d  } ~ Xn Xd  S)3Nz



zdata is  : r   r5   i  r6   r7   r8   zToken Emptyz2yt$-2@jc_(!!yy*j1pn9gjvfb8^pa!gSfkvu7juy6eet6xtd4kzInvalid tokenr_   z
Name EmptyemailzEmail Emptycountry_codezcountry_code emptyreferral_codeNONE+rd   zMobile number emptypasswordzPassword emptyi  zEmail already exists.
role__role
normalusercountrycoder   zMobile number already exists.r   r   r   zUser exists.r   Email56zOTP of 5 digits:minutes   referralcode	signupOTP	mobileOTPrJ   rK   zOTP Send on Your Mobile NumberOTPi  )rN   rO   rP   r
   rW   r   rY   rZ   rb   r6   rd   r   r_   r   
GernateOTPrT   nowr   handlerhashr   rk   rR   )rl   rm   rn   ro   r   	token_valZname_valemailidcountry_code_valr   	phone_valpassword_valZphonenumbercheck_objr   ru   mr  
start_timeexpire_timenew_password_valr{   r|   r|   r}   r~     s    

'		E
&
zSignUpOTP.postN)r   r   r   r   r~   r|   r|   r|   r}   r     s   r   c               @   s"   e  Z d  Z e d d    Z d S)SignUpc             O   sn  t  d  t  d | j  | j j d  } | sN t d d d d d d	 i  S| j j d
  } | s t d d d d d d i  S| j j d  } | s t d d d d d d i  S| d k s t d d d d d d i  Sy8t j j d | d |  } | r| d j d k rt t	 j
 t j d    } | j d  } | j d  } t j j d d  }	 | j d |	 d d d | d | d d  | d j }
 t  |
  t d d d d d d d | i  S| d j d k rt d d  d d d d! i  Sn t d d d d d d" i  SWnQ t k
 ri} z1 t  |  t d d# d d d t |  i  SWYd  d  } ~ Xn Xd  S)$Nz



zdata is  : rd   r5   i  r6   r7   r8   zPhone Emptyotpz	OTP Emptyr   zfcmtoken_val Emptyz2yt$-2@jc_(!!yy*j1pn9gjvfb8^pa!gSfkvu7juy6eet6xtd4kzInvalid tokenr  r   0r  b'roler  r   r   mobile_verifiedTrJ   rK   zUser registered successfullyr   i  zUser is already registered.zInvalid OTPi  )rN   rO   rP   r
   r   rY   rZ   r6   rR   binasciib2a_hexosurandomstripUserRoler   r   rk   )rl   rm   rn   ro   r  Zotp_valfcmtoken_valru   r   Zuserrole_objr   r{   r|   r|   r}   r~   F  s>    
(
" 
zSignUp.postN)r   r   r   r   r~   r|   r|   r|   r}   r  E  s   r  c               @   s%   e  Z d  Z e f Z d d   Z d S)Loginc             O   s  t  d  t  d | j  t | j j d   } t  |  | j j d  } | j j d  } | j j d  } t  d  | s t d d	 d
 d d d i  S| s | j j d  } | s t d d	 d
 d d d i  St  d  | st d d	 d d d d i  St  d  | d k r6t d d	 d d d d i  S| d k s^t d d	 d d d d i  S| st j j d | d d  }	 n t j j d | d d  }	 |	 st d d	 d d i  S| st j j d | d d d d  }
 n! t j j d | d d d d  }
 |
 r|
 d j } t	 j
 | |  } | rt  d  |
 d j rt t j t j d    } | j d  } | j d   } t  d!  | st j j d |  j d | d |  t j j d |  j   } n@ t j j d |  j d | d |  t j j d |  j   } t  d"  d# } | rq| j rg| j rg| j rg| j rg| j rg| j rgd$ } t  d%  t  d&  | j } i  } | j j sd' } nZ d( | j j k rt  d)  | j j } | j d* d+  } n t t j  d, | j j } i  } t  d-  | j sd' } n	 | j } | j s6d' } n	 | j } | j sQd' } n	 | j } | j sld' } n	 | j } | j sd' } n	 | j } | j sd' } n	 | j } | j sd' } n | j j d.  } d/ | j  k r| j  j d/ d0  } n	 | j  } t  d1  t  |  | j d2 | j d3 | d | j! d4 | d | j" d5 | d6 | d7 | d8 | d9 | d: | d; | d< | i  t# d d= d d> d? | d d@ i  Sqt d d	 d d d d i  Sn t d dA d d d dB i  Sd  S)CNz



zdata is  : r   rd   r  r   r2   r5   i  Zstausr7   r8   zfcmtoken_val Emptyr   zEmail or Mobile is requiredr4   r6   zPassword is requiredr;   NonezToken Emptyz2yt$-2@jc_(!!yy*j1pn9gjvfb8^pa!gSfkvu7juy6eet6xtd4kzInvalid tokenr  r  zPlease enter valid credentialsr   r   ZFourr  r   r!  ZFivesixFTrM   ZeightrD   z//zfull url existsrE   z200*200zmedia/200*200-r   z%d/%m/%Yz++r  r   r_   r   r  addressline1addressline2r   staterq   
postalcodedateofbirthr^   rJ   rK   r   zUser Logged Ini  zUser does not exist.)$rN   rO   rR   rP   r
   r   rY   rZ   r  r  verifyr#  r$  r%  r&  r'  r(  r   firstr.  r   r0  rq   r1  r2  r^   r_   r`   r   ra   r/  strftimer  r   rd   r	   )rl   rm   rn   ro   r  r  r  r*  Z	email_valZmainuser_objr   Z	new_passwcheckr   ru   Zprofileaddressr   r^   r.  r/  r   r0  rq   r1  r2  r  r|   r|   r}   r~   m  s    




$!

%%
6

		

																					

			%z
Login.postN)r   r   r   r   r   r~   r|   r|   r|   r}   r+  k  s   	r+  c               @   s%   e  Z d  Z e f Z d d   Z d S)ForgotPasswordc       
      O   s]  t  d  t  d | j  y | j j d  } | sK t d d d d i  St j j d |  } | r t   } t j j	   } t j j	   t
 d d	  } | j d
 | d | d |  t  d  t d d d d d d d | i  St d d d d d d d | i  SWnQ t k
 rX}	 z1 t  |	  t d d d d d t |	  i  SWYd  d  }	 ~	 Xn Xd  S)Nz



zdata is  : rd   r6   i  r8   zMobile is Requiredr
  r  forgotpasswordOTP	starttime
expiretimer   r5   rJ   rK   zOTP send on Your Mobiler  r7   zMobile number does not existi  )rN   rO   rP   r
   r   rY   rZ   r  rT   r  r   r   r	   rk   rR   )
rl   rm   rn   ro   Zphoneidru   r  r  r  r{   r|   r|   r}   r~     s$    
	
"&
zForgotPassword.postN)r   r   r   r   r   r~   r|   r|   r|   r}   r8    s   	r8  c               @   s%   e  Z d  Z e f Z d d   Z d S)ForgotPasswordCheckOTPc             O   sa  t  d  t  d  t  d | j  y | j j d  } | s[ t d d d d d	 d
 i  S| j j d  } | s t d d d d d	 d i  St  d  t j j d | d |  } t  d  | r t d d d d d d d	 d i  St d d d d d d d	 d i  SWnQ t k
 r\} z1 t  |  t d d d d d	 t |  i  SWYd  d  } ~ Xn Xd  S)Nz



z$ForgotPasswordCheckOTP API - in postzdata is  : rd   r5   i  r6   r7   r8   zMobile is requiredr  zOTP is requiredzbefore main_user_objr9  zafter main_user_objrJ   rK   ZotpverifiedTzOTP verifiedi  FzPlease Enter a valid OTP)	rN   rO   rP   r
   r   rY   rZ   rk   rR   )rl   rm   rn   ro   rd   r  ru   r{   r|   r|   r}   r~     s&    



"&
zForgotPasswordCheckOTP.postN)r   r   r   r   r   r~   r|   r|   r|   r}   r<    s   	r<  c               @   s%   e  Z d  Z e f Z d d   Z d S)UpdatePasswordc       
      O   sq  t  d  t  d | j  y| j j d  } | sQ t d d d d d d	 i  S| j j d
  } | s t d d d d d d i  S| j j d  } | s t d d d d d d i  St  d  t j j d | d |  } t  d  | r| d j d k r't  d  t d d d d d d i  S| d j d k r`t  d  t d d d d d d i  S| d j d k rt  d  t j	 |  } t  |  t j j d |  } | r| j
 d |  t d d d d d d i  St d d d d d d i  Sn t d d d d d d i  SWnQ t k
 rl}	 z1 t  |	  t d d d d d t |	  i  SWYd  d  }	 ~	 Xn Xd  S)Nz



zdata is  : rd   r5   i  r6   r7   r8   zMobile is requiredr  zOTP is requiredZnewpasswordzNew password is requiredzbefore main_user_objr9  zafter main_user_objr   r   i  z%User is disabled. Contact SuperAdmin.r  zUser is not registered with us.r   r  rJ   rK   zPassword updated successfullyi  zPassword not updatedzInvalid OTP)rN   rO   rP   r
   r   rY   rZ   r6   r  r  r   rk   rR   )
rl   rm   rn   ro   rd   r  r  ru   r  r{   r|   r|   r}   r~   ,  sF    






 
zUpdatePassword.postN)r   r   r   r   r   r~   r|   r|   r|   r}   r=  *  s   	r=  c               @   s   e  Z d  Z d d   Z d S)
GetProfilec             C   sT  t  d  t  d | j  t  d  y| j j d  } | s[ t d d d d d	 d
 i  St j j d |  } | r| d j j s d } nf d | d j j k r t  d  | d j j } | j	 d d  } n! t
 t j  d | d j j } i  } t  d  | d j sd } n | d j } | d j s>d } n | d j } | d j sad } n | d j } | d j sd }	 n | d j }	 | d j sd }
 n | d j }
 | d j sd } n | d j } | d j sd } n | d j j d  } d | d j k r2| d j j	 d d  } n | d j } t  d  t  |  | j d | d j d | d j d | d | d j d | d | d | d |	 d  |
 d! | d" | d# | i  t d d$ d d% d& | d	 d' i  St d d( d d d	 d) i  SWnQ t k
 rO} z1 t  |  t d d( d d d	 t
 |  i  SWYd  d  } ~ Xn Xd  S)*Nz



zdata is  : r   r   r5   i  r6   r7   r8   zUser not logged inr   r   rD   z//zfull url existsrE   z200*200z/media/200*200-r   z%d/%m/%Yz++r  r   r_   r   r  rd   r.  r/  r   r0  rq   r1  r2  r^   rJ   rK   r   successi  zUser not logged in.)rN   GETrP   r
   r   rY   rZ   r^   r_   r`   rR   r   ra   r.  r/  r   r0  rq   r1  r2  r5  r  r   r   rd   r	   rk   )rl   rm   r   r   r^   r   r.  r/  r   r0  rq   r1  r2  r  r{   r|   r|   r}   rP   V  s|    

	
!
							

" 
zGetProfile.getN)r   r   r   rP   r|   r|   r|   r}   r>  U  s   r>  c               @   s   e  Z d  Z d d   Z d S)UpdateProfileOTPc          '   O   s  t  d  t  d  t  d | j  | j j d  } | j j d  } t j j d |  } y7| rw| j j d  } | j j d  } | s t d	 d
 d d d d i  S| j   } d | k r d | } t  |  | j j d  }	 |	 s d }	 | j j d  }
 |
 s*t d	 d
 d d d d i  S|
 j   }
 | j j d  } | sjt d	 d
 d d d d i  S| j j d  } | j j d  } | st d	 d
 d d d d i  S| j j d  } | st d	 d
 d d d d i  S| j j d  } | st d	 d
 d d d d i  S| j j d  } | sLt d	 d
 d d d d i  S| j j d  } | st d	 d
 d d d d i  Sy t	 |  } WnA t
 k
 r} z! t d	 d
 d d d d  i  SWYd  d  } ~ Xn Xt  |  t  d!  | d" j | d" j } | |
 } t  |  t  |  d# } d } x5 t d$  D]' } | | t j t j   d%  7} q7Wt  d& |  t j j t j d'   } | t d( d)  } | | k r| j d* | d+ | d, |  t  d-  t d	 d. d d/ d0 d d d1 d2 | i  Sy, t d	 d. d d/ d0 d3 d d4 d2 | i  SWqt
 k
 rs} z. t  d5 |  t d	 d
 d d d6 d7 i  SWYd  d  } ~ XqXn t d	 d
 d d d d8 i  SWn[ t
 k
 r} z; t  d9  t  |  t d	 d: d d d t |  i  SWYd  d  } ~ Xn Xd  S);NzUpdateProfileOTP - in postz



zdata is  : r   rd   r   r^   r   r5   i  r6   r7   r8   zCountry code is requiredr  r   rD   zMobile number is requiredadd1zAddress line 1 is requiredadd2r   zCountry is requiredr0  zState is requiredrq   zCity is requiredr1  zPostal code is requireddobzDate of birth is requiredz+Date of birth format should be (mm/dd/yyyy)Z111111r   
0123456789   
   zOTP of 5 digits:UTCr
     updateprofileOTPupdateprofileOTP_starttimeupdateprofileOTP_expiretimer   rJ   rK   Zotponz#OTP sent successfully on your emailr  mobilez$OTP sent successfully on your mobilezmobile otp send error=r   zInvalid phone numberzUser not logged in.zin last exceptioni  )rN   rO   rP   r   rY   rZ   r   r
   r(  r   rk   r  rd   r   mathfloorr   rT   r  pytztimezoner   r   r	   rR   )rl   rm   rn   ro   r   rd   r   r^   r  r  r  rB  rC  r   r0  rq   r1  dob_valrD  r{   Z	userphoneZusernewphoner   r  ir  r  r|   r|   r}   r~     s    



/




%
(,2 

zUpdateProfileOTP.postN)r   r   r   r~   r|   r|   r|   r}   rA    s   rA  c               @   s   e  Z d  Z d d   Z d S)UpdateProfilec       &   3      s  t  d  t  d  t  d | j  y t  d | j  Wn/ t k
 ri } z t  d  WYd  d  } ~ Xn X| j j d  } | s t d d d d	 d
 d i  St j j d |  } y| rid } | rd d l	 m
 } | j j d  }	 |	 r|	 j }
 t  d  t  |
  t  d  |
 j d  }
 t |
 dD  } d d  l } | j |	 j    } t  d  t  |  | j |  } t  d  d d  l   d d  l  d j    f d d   t d  D  } t j j   } t  d  x | D] } t  | j | j  | j |  } | j t | j  t | j  g | j  } | j t t j  d t | j  d t | j  d | d |  } t t j   d t | j  d t | j  d | d | }
 qW| j |  } | j t t j  d | d |  t  d  |
  | j j d!  } | s2| d j } | j j d"  } | sW| d j! } | j"   } d# | k ryd# | } | j j d$  } | s| d j# } | j"   } | j j d%  } | s| d j$ } | j j d&  } | j j d'  } | s| d j% } | d j% r&| d j% | k r&| j j d(  } | sK| d j& } | j j d)  } | sp| d j' } | j j d*  } | s| d j( } | j j d+  } | s| d j) } n yS | j d  } t | d  d, t | d-  d, t | d  } t* |  } Wn* t d d d
 d. d/ d d0 d. i  SYn X|	 rt j j d |  j+ d! | d |
 d1 | d$ | d2 | d3 | d' | d( | d) | d* | d4 |  nU t j j d |  j+ d! | d1 | d$ | d2 | d3 | d' | d( | d) | d* | d4 |  
t j j d |  } | d j, } d5 | d j- j k rKt  d6  | d j- j }	 n! t t j   d7 | d j- j }	 t  d8  t j j d |  }  i  }! t  d9  |  d } | r| j$ sd }" n	 | j$ }" | j. sd }# n	 | j. }# | j% sd } n	 | j% } | j& sd } n	 | j& } | j' s)d } n	 | j' } | j( sDd } n	 | j( } | j) s_d }$ n | j) j/ d:  }$ d; | j! k r| j! j0 d; d#  }% n	 | j! }% t  d  t  |	  |! j+ d! | j d< | j1 d1 |% d$ | j# d2 |" d3 |# d' | d( | d) | d* | d4 |$ d |	 i  n( t d= d> d
 d? d |	 d d@ d0 d? i  St d= d> d
 d? dA |! d d@ d0 d? i  Sn t d dB d
 dC i  SWnA t k
 r} z! t d dB d
 t |  i  SWYd  d  } ~ Xn Xd  S)ENzUpdateProfile - in postz



zdata is  : z
data is jjr   r5   i  r6   r7   r8   zUser not Logged Inr   Tr   )r   r^   r   r   r=   r   r   rD   c                s)   g  |  ] }   j   j  j   q Sr|   )r   r   r   )r   r   )r   r   r|   r}   r   6  s   	 z&UpdateProfile.post.<locals>.<listcomp>r   zbeforee resizingz/media/r   r<   zmedia/z/media/original-zfilename = r_   r   r  rd   rB  rC  r   r0  rq   r1  rD  r>   r?   z+Date of birth format should be (mm/dd/yyyy)status_coder   r  r.  r/  r2  z//zful url existszmedia/200*200-zprofile updatedr   z%d/%m/%Yz++r   r   rJ   zProfile updated successfullyrK   r   i  zUser Not Logged Inr   )2rN   rO   r   rk   rP   r
   r   rY   rZ   r   r   r_   rQ   rR   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ra   r  r(  rd   r.  r   r0  rq   r1  r2  r   r   r   r^   r/  r5  r`   r   )&rl   rm   rn   ro   r{   r   r   r   r   r^   r   r   r   r   r   r   r   r   r   usernamer  r  rB  rC  r   r0  rq   r1  rR  rD  ru   r   Zobj_for_userr   r.  r/  r2  r  r|   )r   r   r}   r~     s   


	





+
-JE&
4'^U
!


																					

			(+zUpdateProfile.postN)r   r   r   r~   r|   r|   r|   r}   rT    s   rT  c               @   s   e  Z d  Z d d   Z d S)RegisterTravellerc          "   O   s  yt  d  t  | j  | j j d  } | j j d  } | s` t d d d d d d	 i  St  |  | j j d
  } | s t d d d d d d i  St  |  | j j d  } | s t d d d d d d i  St  d  | j d  } t  | d  t  | d  t  | d  t | d  d t | d  d t | d  } t |  } t  d  t  |  | j j d  } | st d d d d d d i  St |  j   } t  |  t j j	 | j
   |  }	 t  d  t  d |	  t  d  | j j d  }
 |
 s3t d d d d d d i  St  |
  |
 | k ret d d d d d d i  S| j j d  } | st d d d d d d i  St  |  | j j d  } | st d d d d d d i  S| j d  } t | d  d t | d  d t | d  } t |  } t  |  | j j d   } | sdt d d d d d d! i  St |  j   } t  |  t j j	 | j
   |  } t  d  t  d" |  t  d  t  d  t  d |	  t  d" |  t  d  | j j d#  } | st d d d d d d$ i  St  |  | j j d%  } | s\t d d d d d d& i  St j j d' |  } t  |  t j j   } t  |  | d  k rt  d(  t dC  } n) t | j  } t  d*  t | d  } d+ d,   | D } t | d  d- | d <d. j |  } d/ | d |
 d | } | rvt j j d0 | d  } | rt j j d0 | d d1 | d2 | d3 | d4 | d5 | d6 | d7 |
 d8 | d9 | d: | d% | d; t |   } n| t j j d0 | d  } t j j d0 | d1 | d2 | d3 | d4 | d5 | d6 | d7 |
 d8 | d9 | d: | d% | d; t |   } t  d<  t j j   } t d d= d d> d d? i  St d d d d d d@ i  SWn[ t k
 r} z; t  dA  t  |  t d dB d d d t |  i  SWYd  d  } ~ Xn Xd  S)DNzRegisterTraveller - in postr   from_country_nmr5   i  r6   r7   r8   zEnter from_country_nmfrom_city_nmzEnter from_city_nmdep_datezEnter dep_datez	fine herer<   r=   r   r?   r>   zfine twors   zEnter dep_timez





zdeparturedatetime = to_country_nmzEnter to_country_nmz<Destination Country must be different from Boarding Country.
to_city_nmzEnter to_city_nmarrival_datezEnter arrival_datearrival_timezEnter arrival_timezarrivaldatetime = r   zPlease Enter Per KG chargesrj   zEnter Travell Byr   zlast travller id not findi'  zlast travleer is findc             S   s   g  |  ] } |  q Sr|   r|   )r   charr|   r|   r}   r   6  s   	 z*RegisterTraveller.post.<locals>.<listcomp>r  rD   zATN-r]   rc   	atnnumberrg   rB   r\   r[   rh   rA   ri   re   rf   z



  111 



rJ   rK   z4Your travelling details are successfully registered.zUser not logged in.zin exceptioni  i'  )rN   rO   rP   r
   rQ   rR   r   rS   rT   rU   rV   r   rY   rZ   rX   r   r   rc   r   r   r   rk   )rl   rm   rn   ro   r   rX  rY  rZ  rs   rt   r[  r\  r]  r^  arrivaldatetimeper_kg_chargestravelled_bymain_usr_objZlast_supplierjob_objr   Zlatest_traveller_idsnew_atn_numbersupplier_objsupplier_job_objZsupplierjob_objr{   r|   r|   r}   r~     s    



4






4










jc
 

zRegisterTraveller.postN)r   r   r   r~   r|   r|   r|   r}   rW    s   rW  c               @   s%   e  Z d  Z e f Z d d   Z d S)searchTravllerc          (   O   s  t  d  t  d | j  yt  d  | j j d  } | s[ t d d d d d	 d
 i  S| j j d  } | s t d d d d d	 d i  S| j j d  } t  d  | s t d d d d d	 d i  S| j j d  } t  d  | st d d d d d	 d i  S| j j d  } t  d  | sIt d d d d d	 d i  S| j j d  }	 t  d  |	 st d d d d d	 d i  St  d  | j d  } t | d  d t | d  d t | d  } t |  } t  d  t  d  t  d  t |	  j   }
 t  |
  t j j	 | j
   |
  } t  t |   t  |  t j j t d  |  t d! |  @t d" |  @t d# |  @ } t  |  d$ } t  d%  g  } x| D]} t  t | j   | j } t  |  | j } t j j	 | |  } t  t |   t  |  | | k rd& } | j j j j sId& } nl d' | j j j j k rt  d(  | j j j j } | j d) d*  } n# t t j  d+ | j j j j } | j d, | j d- | j j j d. | j j j d/ | j d0 | j d1 d d2 d d3 | d4 | j d5 | j d6 | j d7 | j d8 | j d9 | j  d: | j! d; | j" i  qWt  |  | rt d d< d d= d	 d> d? | i  St  d@  t d d< d d= d	 dA d? | i  SWnQ t# k
 r} z1 t  |  t d dB d d d	 t |  i  SWYd  d  } ~ Xn Xd  S)CNz



zdata is  : r2   r   r5   i  r6   r7   r8   zCountry is requiredZ	toCountryzDestination Country is requiredr3   r4   zDestination City is requiredr9   zCity is requiredr:   r;   zDate is requiredZ
searchTimezTime is requiredZfourr<   r=   r>   r?   r   r@   zbefore main_user_objz'==================here from enterd daterg   rh   rA   rB   rC   z$==================here from new daterD   z//zfull url existsrE   z200*200zmedia/200*200-rF   rG   rH   zDeparture TimezArrival TimerI   zCompleted TaskzProfile PicturezCharges per KGzFrom Countryz	From CityzDeparture Datez
To countryzTo cityzArrival Datez	Travel ByrJ   rK   zTravller FindrL   rM   zTravller Not Findi  )$rN   rO   rP   r
   rQ   rR   r   rS   rT   rU   rV   rW   rX   rY   rZ   r   r[   r\   r]   r^   r_   r`   r   ra   rb   rc   rd   re   rf   rg   rB   rh   rA   ri   rj   rk   )rl   rm   rn   ro   r   Zdes_countryrp   rq   rr   rS   rs   rt   ru   rv   rw   r]   rx   ry   rz   r^   r{   r|   r|   r}   r~   T  s    






4




B

	
	
	
#									
"
&
zsearchTravller.postN)r   r   r   r   r   r~   r|   r|   r|   r}   ri  R  s   	ri  c               @   s%   e  Z d  Z e f Z d d   Z d S)searchTravllerByidc          1   O   s  t  d  t  d | j  yt  d  | j j d  } | s[ t d d d d d	 d
 i  St j j t d |   } t  | d  y t  | d j j j	  Wn/ t
 k
 r } z t  |  WYd  d  } ~ Xn X| rt d d d d d	 d d | d j j j	 d | d j j j d | d j d | d j d | d j d | d j d | d j d | d j d | d j d | d j d d i  St  d  t d d d d d	 d i  SWnQ t
 k
 r} z1 t  |  t d d d d d	 t |  i  SWYd  d  } ~ Xn Xd  S)Nz



zdata is  : r2   r   r5   i  r6   r7   r8   zTravller id is requiredrc   r   rJ   rK   zTravller FindzTravller NamezTravller PhonezFrom Countryz	From Cityz
To CountryzTo CityzDeparture DatezDeparture TimezArrival DatezArrival TimezTravlled ByZCarrM   zTravller Not Findi  )rN   rO   rP   r
   rX   rY   rZ   r   r]   r_   rk   rd   rg   rB   rh   rA   r\   r[   ri   re   rR   )rl   rm   rn   ro   rc   ru   r{   r|   r|   r}   r~     s(    


 
zsearchTravllerByid.postN)r   r   r   r   r   r~   r|   r|   r|   r}   rj    s   	rj  c              C   sH   d }  d } x5 t  d  D]' } | |  t j t j   d  7} q W| S)NrE  rD   rF  rG  )r   rN  rO  r   )r   r  rS  r|   r|   r}   r    s
    %r  c               @   s%   e  Z d  Z e f Z d d   Z d S)DeleteTravelc             O   s  t  d  t  d  t  d | j  g  } y| j j d  } | sa t d d d d d	 d
 i  S| j j d  } | s t d d d d d	 d i  St j j d |  } | s t d d d d d	 d i  St j j d | d  } | st d d d d d	 d i  Sg  }	 t j j d | d d |  }
 |
 ry |
 d j	   Wqt
 k
 r} z' t d d d d d	 t |  i  SWYd  d  } ~ XqXn t d d d d d	 d i  St d d d d d	 d i  SWnG t
 k
 r} z' t d d d d d	 t |  i  SWYd  d  } ~ Xn Xd  S)Nz

z1ShowTravellerDetailsToTravellerTest API - in postzdata is  : r   r5   i  r6   r7   r8   zUser Not Logged IN	travel_idzTraveller ID is Requiredr   zUser not Logged INr]   r   z You are not register as Travllerrc   i  zNot find any Traveling DetailsrJ   rK   z%Traveling record deleted successfully)rN   rO   rP   r
   r   rY   rZ   r   rX   deleterk   rR   )rl   rm   rn   ro   r   sessionrl  main_obj_getrg  	data_sendrh  r{   r|   r|   r}   r~     s8    

8 zDeleteTravel.postN)r   r   r   r   r   r~   r|   r|   r|   r}   rk    s   	rk  c               @   s   e  Z d  Z d d   Z d S)UpdateTravelc             O   sJ  yt  d  t  | j  | j j d  } | sN t d d d d d d i  S| j j d	  } | s t d d d d d d
 i  St j j d |  } | rt j j d | d  } | r t j j d | d d |  } | d } n t d d d d d d i  S| s&t d d d d d d i  S| j j d  }	 |	 sG| j	 }	 | j j d  }
 |
 sh| j
 }
 | j j d  } | s| j } n | j d  } t  | d  t  | d  t  | d  t | d  d t | d  d t | d  } t |  } t  d  t  |  | j j d  } | s=| j } nX t |  j   } t  |  t j j | j   |  } t  d  t  d |  t  d  | j j d  } | s| j } | j j d  } | s| j } t  |  | j j d  } | s| j } nY | j d  } t | d  d t | d  d t | d  } t |  } t  |  | j j d  } | s| j } n t |  j   } t  |  t j j | j   |  } t  d  t  d |  t  d  t  d  t  d |  t  d |  t  d  | j j d   } | s)| j } t  |  | j j d!  } | sT| j } d" d#   | D } t | d  d$ | d <d% j |  } d& |	 d | d | } t j j d | d d |  j d' | d( |	 d) |
 d* | d+ | d, | d- | d. | d/ | d! | d0 t |   t j j d | d d |  } | d } g  } | j d1 | j	 d2 | j
 d3 | j d4 | j d5 | j d6 | j d7 | j d8 | j d9 | j d: | j i
  t d d; d d< d d= d> | i  St d d d d d d i  SWn[ t k
 rE} z; t  d?  t  |  t d d@ d d d t |  i  SWYd  d  } ~ Xn Xd  S)ANzRegisterTraveller - in postr   r5   i  r6   r7   r8   zSession Token is requiredrl  z6Travelling Details not Found,Travelling id in requiredr   r]   r   rc   zUser Not Logged InrX  rY  rZ  r<   r=   r?   r>   zfine twors   z





zdeparturedatetime = r[  r\  r]  r^  zarrivaldatetime = r   rj   c             S   s   g  |  ] } |  q Sr|   r|   )r   r_  r|   r|   r}   r   e  s   	 z%UpdateTravel.post.<locals>.<listcomp>r  rD   zATN-r`  rg   rB   r\   r[   rh   rA   ri   re   rf   ZFromCountryz	From CityzDep DatezDep Timez
To CountryzFrom CountryzArrival DatezArrival Timer   z	Travel ByrJ   rK   zDetails Updatedr   zin exceptioni  )rN   rO   rP   r
   r   rY   rZ   r   rX   rg   rB   r\   rQ   rR   r   r[   rS   rT   rU   rV   rh   rA   ri   re   rf   rj   r   r   r   rb   rk   )rl   rm   rn   ro   r   rl  rd  rg  rh  rX  rY  rZ  rs   rt   r[  r\  r]  r^  ra  rb  rc  re  rf  Zsupplier_obj_after_updater   r{   r|   r|   r}   r~     s    
		4




		
4





	
	k
									" 

zUpdateTravel.postN)r   r   r   r~   r|   r|   r|   r}   rq    s   rq  c               @   s%   e  Z d  Z e f Z d d   Z d S)#ShowTravellerDetailsToTravellerTestc             O   s  t  d  t  d  t  d | j  g  } y]| j j d  } | s[ t d d d d i  S| j d	  t j j d
 |  } | j d  t j j d | d  } g  } | j d  t	 j j d | d  }	 | j d  x~ |	 D]v }
 | j d |
 j
 d |
 j d |
 j d |
 j d |
 j d |
 j d |
 j d |
 j d |
 j d |
 j d |
 j i  q W| j d  t d d d | d d i  SWnA t k
 r} z! t d d d t |  i  SWYd  d  } ~ Xn Xd  S)Nz

z1ShowTravellerDetailsToTravellerTest API - in postzdata is  : r   r5   i  r6   rK   r   r   r   r]   r   r   r   r   zFrom Countryz	From Cityz
To CountryzTo cityzDep DatezDep TimezArrival DatezArrival Timezper Kg Chargesz	Travel Byr  rJ   r   r   )rN   rO   rP   r
   rb   r   rY   rZ   r   rX   rc   rg   rB   rh   rA   r\   r[   ri   re   rf   rj   rk   rR   )rl   rm   rn   ro   r   rn  ro  rg  rp  rh  travelr{   r|   r|   r}   r~     sB    

										 z(ShowTravellerDetailsToTravellerTest.postN)r   r   r   r   r   r~   r|   r|   r|   r}   rr    s   	rr  c             C   s  d } d } d } | } d } t  |  t d  } | | d <d | d <| | d <d	 }	 t |	 d
  }
 | j |
  z y[ t j d d  } t  t |   | j | |  } | j d | | j	    t  d  Wn/ t
 k
 r} z t  |  WYd  d  } ~ Xn XWd  | j   Xd  S)Ni  zsmtp.gmail.comzmanii.6264s@gmail.comZ
mypasswordalternativeSubjectFromToz"<h1>Hello,Welcome To our site</h1>htmlzEmail has been sent succesfully)rN   r   r   attachsmtplibZSMTP_SSLrW   loginZsendmail	as_stringrk   quit)r  r  subjectportZsmtp_serverZsender_emailZreceiver_emailr  r8   rx  part2serverZaar{   r|   r|   r}   sendOTPmail  s,    



!r  )xdjango.shortcutsr   Zpasslib.hashr   r  rest_framework.viewsr   Zrest_framework.parsersr   r   Customer.modelsSupplier.modelsBasicPages.modelsdjango.httpr   r	   rest_framework.responser
   Zrest_framework.permissionsr   django.views.decorators.csrfr   rest_framework.authtoken.modelsr   Zrest_framework.decoratorsr   r   r   r&  r$  rz  ssldjango.confr   r   r   rT   r   rN  django.core.files.storager   ZMobileapis.serializersZMobileapis.decoratorsdjango.utils.decoratorsr   django.db.modelsr   Zdateutil.parserr   ZSuperAdmin.modelsZpyfcmr   django.views.generic.baser   jsonemail.mime.textr   email.mime.multipartr   pyqrcoder   ZpdfkitZheadless_pdfkitr   rP  Zboto3django.core.mailr   Zcurrency_converterr   r   calendarZ/SuperAdmin.send_mail_from_adminsection_templater    r!   Z BasicPages.basic_pages_functionsr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Z
checkloginr   r   r   r   r   r   r   r   r   r   r   r  r+  r8  r<  r=  r>  rA  rT  rW  ri  rj  r  rk  rq  rr  r  r|   r|   r|   r}   <module>   s   





L"Z !%ScTK&+V``	!3