U
    Âîj² ã                1   @   sP  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
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ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$m%Z% d dl&m'Z' d dl(m)Z* d dl(m)Z) d dl+m,Z,m+Z+m-Z- d dl.Z.d dl(m)Z) d dl/Z0d dl1m2Z2 d dl3Z3d dl4Z4d dl5m6Z6 d dl7Z7d dl/Z0d dl8m9Z9m:Z: ddl;m<Z< d dl=m>Z> d dl+m+Z+m?Z? d dl@Z@d dlAmBZB d dlCmDZD d dlEZEd dlmZ d dlFZFd dl mZ d dlGZGd dlAmHZH d dlImJZJ e7jKejLejMfd�ZNddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLg1ZOG dMdN„ dNeƒZPG dOdP„ dPeƒZQd dl&m'Z' d d
lm Z m!Z! d dlmZ d dlm	Z	 d dlmZ d dlmZ d dl"m#Z# d dlFZFG dQdR„ dReƒZRG dSdT„ dTeƒZSG dUdV„ dVe9ƒZTdWdX„ ZUdYdZ„ ZVG d[d\„ d\eƒZWG d]d^„ d^eƒZXG d_d`„ d`eƒZYG dadb„ dbeƒZZd dclm[Z[ e[ƒ Z'G ddde„ deeƒZ\G dfdg„ dgeƒZ]d dhl+m-Z- d dl(m)Z) G didj„ djeƒZ^d dhl+m-Z- d dl(m)Z) G dkdl„ dleƒZ_G dmdn„ dneƒZ`G dodp„ dpeƒZaG dqdr„ dreƒZbG dsdt„ dteƒZcG dudv„ dveƒZdG dwdx„ dxeƒZed dl@Z@G dydz„ dzeƒZfG d{d|„ d|eƒZgG d}d~„ d~eƒZhG dd€„ d€eƒZiG d�d‚„ d‚eƒZjG dƒd„„ d„eƒZkG d…d†„ d†eƒZlG d‡dˆ„ dˆeƒZmG d‰dŠ„ dŠeƒZnG d‹dŒ„ dŒeƒZoG d�dŽ„ dŽeƒZpG d�d�„ d�eƒZqG d‘d’„ d’eƒZrd“d”„ ZsG d•d–„ d–eƒZtd—d˜„ Zud™dš„ Zvd›dœ„ ZwG d�dž„ džeƒZxG dŸd „ d eƒZyd¡d¢„ ZzG d£d¤„ d¤eƒZ{G d¥d¦„ d¦eƒZ|G d§d¨„ d¨eƒZ}G d©dª„ dªeƒZ~G d«d¬„ d¬eƒZG d­d®„ d®eƒZ€G d¯d°„ d°eƒZ�G d±d²„ d²eƒZ‚G d³d´„ d´eƒZƒG dµd¶„ d¶eƒZ„G d·d¸„ d¸eƒZ…G d¹dº„ dºeƒZ†G d»d¼„ d¼eƒZ‡dS )½é    )Úsettings)Úrender)ÚAPIView©ÚResponse©Ústatusé   )ÚPolicyÚTicketÚ	TicketlogÚQuotelogÚ
AuctionlogÚProfilesÚOtpÚProductÚVendorÚEnquiryÚVendorquoteÚAuctionÚMessageÚPaymentÚPaymenthistoryÚNotification©ÚObjectDoesNotExist)ÚNotFound)ÚauthenticateÚlogin)ÚRefreshToken)Úmake_password)ÚUser)Útimezone)ÚdateÚdatetimeÚ	timedeltaN)ÚHttpResponse)ÚQ)ÚRetrieveAPIViewÚListAPIView)ÚUserSerializer)ÚIsAuthenticated)r$   Útime)ÚEmailMessage)ÚBASE_DIR)Ú	send_mail)Úget_random_string)ÚauthÚUSDÚEURÚGBPÚSGDÚAEDÚAUDÚCADÚCHFÚHKDÚJPYÚMYRZNZDÚSARÚQARÚOMRÚKWDÚBHDÚTHBÚZARZSEKZNOKZDKKÚCNYÚINRZMXNÚPHPÚIDRZTWDZHUFZPLNZCZKÚTRYÚILSÚKRWÚBRLÚEGPÚNGNÚPKRÚBDTÚLKRÚKESZGHSZTZSZUGXZRWFZXOFZXAFZMADZTNDc                   @   s   e Zd ZdZdd„ ZdS )ÚOrderAPIViewz¬
    International Payments enabled.
    Frontend sends: amount (smallest unit), currency (user's currency or USD fallback).
    Razorpay gets: native currency amount.
    c              
   C   s¼   zx|j  d¡}|j  dd¡ ¡ }|s:tdddœtjd�W S |tkrFd}tj 	t
|ƒ|d	d
œ¡}t|d ||dœtjd�W S  tk
r¶ } z tdt|ƒdœtjd� W Y ¢S d }~X Y nX d S )NÚamountÚcurrencyrE   TzAmount is required©ÚerrorÚmessager   r2   r	   )rS   rT   Zpayment_captureÚid)Zorder_idrS   rT   )ÚdataÚgetÚupperr   r   ÚHTTP_400_BAD_REQUESTÚRAZORPAY_SUPPORTED_CURRENCIESÚclientÚorderÚcreateÚintÚHTTP_200_OKÚ	ExceptionÚstr)ÚselfÚrequestrS   rT   r_   Úe© rh   ú+/var/www/html/VBACK/school/./myapp/views.pyÚpost>   s>    þýýýüþýzOrderAPIView.postN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rj   rh   rh   rh   ri   rR   8   s   rR   c                   @   s   e Zd ZdZefZdd„ ZdS )ÚVerifyAPIViewuž  
    Verify Razorpay payment signature.
    Save correct human-readable amount in user's currency to DB.

    Example DB values:
      India  â†’ payment_amount=824.82, currency=INR  (with 18% GST)
      Oman   â†’ payment_amount=2.87,   currency=OMR
      USA    â†’ payment_amount=8.40,   currency=USD
      Kuwait â†’ payment_amount=2.58,   currency=KWD
      Japan  â†’ payment_amount=1260,   currency=JPY
    c              
   C   sÒ  �z^|j  d¡}|j  d¡}|j  d¡}|j  d¡}|j  dd¡}|j  d¡}t|||gƒsrtdd	d
œtjd�W S |d kr�tddd
œtjd�W S |||dœ}tj |¡ ddl	m
}	 t|ƒ}
tjj|jjd� ¡ �rtjj|jjd�}|
|_||_|	 ¡ |_| ¡  n"tjj|
||jj|	 ¡ |jjd� tjj|
||jj|jjd� tdddœd ddœtjd�W S  tjjk
�rŽ   tddd
œtjd� Y S  tk
�rÌ } z tdt|ƒd
œtjd� W Y ¢S d }~X Y nX d S )NÚrazorpay_order_idÚrazorpay_payment_idÚrazorpay_signatureÚpayment_amountrT   rE   ÚcasesTzMissing payment detailsrU   r   zPayment amount is required)rp   rq   rr   r   )r#   ©Úuser_id)rs   Úpayment_statusrv   Úpayment_dateÚcreated_by_id©rs   rw   rv   ry   éÈ   Úsuccess©ÚcodeÚresponsezPayment verified successfully©r   rV   rW   zInvalid payment signature)rY   rZ   Úallr   r   r\   r^   ÚutilityZverify_payment_signaturer$   r#   Úfloatr   ÚobjectsÚfilterÚuserrX   Úexistsrs   rw   Útodayrx   Úsaver`   r   rb   ÚrazorpayÚerrorsZSignatureVerificationErrorrc   rd   )re   rf   rp   rq   rr   rs   rT   rw   Úparamsr#   Zamount_to_saveZpaymerg   rh   rh   ri   rj   n   sˆ    þýþýý

ú
üýüþý
þýzVerifyAPIView.postN)rk   rl   rm   rn   r+   Úpermission_classesrj   rh   rh   rh   ri   ro   `   s   ro   c                   @   s   e Zd Zdd„ ZdS )ÚGoogleLoginAPIViewc           
      C   sÜ   |j  d¡}|j  d¡}|s,tddidd�S tjj|d� ¡ }|sv| d¡d	 }tjj||d d
�}t	jj
|d	ddd� t||ƒ t |¡}t	jj|d�}d}d}	ttjddœd|j|j|jt|jƒt|ƒ|j||	dœdœƒS )NÚemailÚnamerW   zEmail requiredé�  r   ©r�   ú@r   ©Úusernamer�   ÚpasswordÚ r	   )r†   ÚroleÚphoner   ©r†   ú../static/dummy.pngr|   r}   zGoogle Login Success)rX   r•   r�   ÚtokenÚrefreshr˜   ÚprofileÚcompanylogo)r   rW   rY   )rY   rZ   r   r!   r„   r…   ÚfirstÚsplitÚcreate_userr   r`   r   r   Úfor_userr   rb   rX   r•   r�   rd   Úaccess_tokenr˜   )
re   rf   r�   r�   r†   r•   rœ   rž   ÚproÚcomrh   rh   ri   rj   b  sV     ÿþýü

þ÷õzGoogleLoginAPIView.postN©rk   rl   rm   rj   rh   rh   rh   ri   rŽ   `  s   rŽ   c                   @   s   e Zd Zdd„ ZdS )ÚLoginAPIViewc                 C   sF  |j }| d¡}| d¡}d }t d|¡rjz"tjj|d�}t||j|d�}W qx tjk
rf   d }Y qxX nt|||d�}|d k	�r"t	||ƒ t
 |¡}zÞtjj|jd�}|jdkrÔttjdd	œd
dd dœtjd�W S z|jj}	W n   d}	Y nX |j}
d}|jdk�r\z:tjj|jd�}tjj|jd�}|j�r:|jj}|j}
W n tk
�rX   Y nX n|j�rl|jj}|j}
W n" tk
�r–   d}	d}d }Y nX ttjdd	œd d|j|�r¸|jnd|�rÆ|jnd|�rÔ|jnd|�râ|jnd|j|j|j |j!t"|ƒt"|j#ƒ|	||
|�r|jnddœdœƒS ttj$dd	œddd dœtj$d�S d S )Nr•   r–   z[^@]+@[^@]+\.[^@]+r’   )r•   r–   ru   é   rV   r}   zInactive userzYou are inactive. Contact Admin©r   rV   rW   rY   r   r›   r|   zLogin successr—   r	   )r�   ÚcountryrT   Úsymbolr™   rX   r•   r�   ZisSuperr�   rœ   rž   rŸ   Úcompanynamer˜   zAuthentication failedzInvalid username or password)%rY   rZ   ÚreÚmatchr!   r„   r   r•   ÚDoesNotExistr   r   r£   r   rX   r   r   ÚHTTP_403_FORBIDDENÚprofilesÚurlr�   r˜   r   rv   ry   rŸ   Úservicenamer   rb   Ú
alteremailÚalteremail1Úalteremail2r™   r�   Úis_superuserrd   r¤   ZHTTP_401_UNAUTHORIZED)re   rf   rY   Zusername_or_emailr–   r†   Úget_userrœ   rž   r¥   r­   r¦   Zcreated_companyZcompany_creator_profilerh   rh   ri   rj   ¬  s¼    

ý
ý



þùø
ÿÿ


þëõ'þõózLoginAPIView.postNr§   rh   rh   rh   ri   r¨   ª  s   r¨   c                   @   s&   e Zd ZefZeZdd„ Zdd„ ZdS )ÚUserAPIViewc                 C   s   | j jS )N)rf   r†   )re   rh   rh   ri   Ú
get_objectO  s    zUserAPIView.get_objectc                 C   sT   |j }tjj|d d�}tjj|d�}ttjddœd|j|j	|j
j|jjdœdœƒS )	Nr�   r’   rš   r|   r}   T)r•   r�   r˜   rž   ©r   rV   rY   )rY   r!   r„   rZ   r   r   r   rb   r•   r�   r˜   rX   r²   r³   )re   rf   rY   r†   rž   rh   rh   ri   rj   R  s    
üýzUserAPIView.postN)	rk   rl   rm   r+   r�   r*   Zserializer_classr»   rj   rh   rh   rh   ri   rº   J  s   rº   c              
   C   s`   d}d|› d�}zt ||tj| gdd� W n0 tk
rZ } ztd|› �ƒ W 5 d }~X Y nX d S )Nú%Your One-Time  (OTP) for Verificationú?Dear User,

    Your One-Time  (OTP) for verification is:

    z¯

    Please enter this code to proceed. This OTP is valid for the next 1 minutes.

    If you did not request this code, please ignore this email.

    Thank you,  
    
    F©Úfail_silentlyúError sending email: ©r/   r   ÚDEFAULT_FROM_EMAILrc   Úprint©r�   ÚotpÚsubjectrW   rg   rh   rh   ri   Úsend_otp_emailf  s    üû
rÈ   c              
   C   s`   d}d|› d�}zt ||tj| gdd� W n0 tk
rZ } ztd|› �ƒ W 5 d }~X Y nX d S )Nr½   r¾   z³

    Please enter this code to proceed. This OTP is valid for the next 1 minutes.

    If you did not request this code, please ignore this email.

    Thank you,  
    
        Fr¿   rÁ   rÂ   rÅ   rh   rh   ri   Úsend_otp_emails  s    üû
rÉ   c                   @   s   e Zd ZefZdd„ ZdS )ÚVendorbulkuploadAPIViewc                 C   s²  �z"|j j}|jd }tj|dd�}g }d}| ¡ D �]Ì\}}�z|d }	|d }
|d }t|d ƒ ¡ }t|d	 ƒ ¡ }t|d
 ƒ ¡ }|d }|d }|d }|d }tj	j
t|	d�t|
d�B |d� ¡ }|rè| |	|
ddœ¡ W q4|	d }t|ƒ}tj	j|	|
|d�}tj	j|	|d|
|||j|d� tj	j|	||
|||||||j||j jd� |d7 }W q4 tk
�r¨ } z,ttjddœdd|› �dœƒ W Y ¢  W S d }~X Y q4 tk
�r  } z:ttjddœdd|d › d t|ƒ› �dœƒ W Y ¢  W S d }~X Y q4X q4ttjd!dœd |› d"�|d#œƒW S  tk
�rj } z&ttjddœdd$|› �dœƒ W Y ¢S d }~X Y nD tk
�r¬ } z$ttjddœdt|ƒdœƒ W Y ¢S d }~X Y nX d S )%NÚfileÚSheet1©Z
sheet_namer   zVendor NameÚEmailz	Address 1zPhone Numberz
GST NumberZPincodez	Address 2ÚStateZCityÚRemarks)Ú
vendornamer’   ©ry   z5Vendor Name or Email already exists for this company.)Úvendorr�   Úreasonú@123r”   r©   )r�   r™   r˜   r�   Úaddressr–   rv   Úgst)rÑ   r™   r�   rÖ   Úpincoder×   ÚcityÚstater«   rv   Úremarksry   r	   Úfailedr}   TzMissing column in Excel: r€   zError processing row ú: r|   z  vendor(s) uploaded successfully)r   rV   rW   Ú
duplicateszMissing uploaded file: )r†   rX   ÚFILESÚpdÚ
read_excelÚiterrowsrd   Ústripr   r„   r…   r'   r‡   Úappendr    r!   r`   r   ÚKeyErrorr   r   r\   rc   ÚHTTP_500_INTERNAL_SERVER_ERRORÚHTTP_201_CREATED)re   rf   Ú
company_idÚuploaded_fileÚdfZduplicate_vendorsZsuccess_countÚindexÚrowrÑ   r�   rÖ   r™   r×   rØ   r«   rÚ   rÙ   rÛ   r‡   Zdefault_passwordÚhashed_passwordr†   rg   rh   rh   ri   rj   ö  s¶    
þ
ýýøô
ý"
ý&
ü

ý
ýzVendorbulkuploadAPIView.postN)rk   rl   rm   r+   r�   rj   rh   rh   rh   ri   rÊ   ó  s   rÊ   c                   @   s"   e Zd ZefZdd„ Zdd„ ZdS )ÚProductbulkuploadAPIViewc              
   C   sÐ   |j }z€|jd }tj|dd�}| ¡ D ]D\}}|d }|d }|d }	|d }
t||	||
|jd�}| ¡  q(tt	j
d	d
œd ddœƒW S  tk
rÊ } z&tt	jdd
œdd|› �dœƒ W Y ¢S d }~X Y nX d S )NrË   rÌ   rÍ   zProduct NamezMaterial CoderÐ   ÚSpecification)r�   Údescriptionr~   ÚspecificationÚ
created_byr|   r}   úProduct created successfullyr€   rÜ   TúMissing required field: )rY   rß   rà   rá   râ   r   r†   r‰   r   r   rç   rå   r\   )re   rf   rY   ré   rê   rë   rì   r�   r~   rð   rñ   Údatasrg   rh   rh   ri   rj   p  s,    


ý

ýzProductbulkuploadAPIView.postc              
   O   sÈ   |  d¡}|j}z@tjj |d�}|  d|j¡|_| ¡  ttjddœd ddœƒW S  tj	k
r~   ttj
ddœd	d
dœƒ Y S  tk
rÂ } z(t|ƒ ttjddœd	ddœƒ W Y ¢S d }~X Y nX d S )NrX   ©rX   Úfilesr|   r}   zFile added successfullyr€   rÜ   TúNo data foundúSomething went wrong)rZ   rY   r   r„   Úsfiler‰   r   r   rb   r°   ÚHTTP_404_NOT_FOUNDrc   rÄ   r\   )re   rf   ÚargsÚkwargsrX   rY   Úcompanyrg   rh   rh   ri   Úput˜  s0    

ý

ý
ýzProductbulkuploadAPIView.putN)rk   rl   rm   r+   r�   rj   rÿ   rh   rh   rh   ri   rî   m  s   (rî   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚContentemailAPIViewNc              
   C   sZ   z$t ||||gd�}d|_| ¡  W n0 tk
rT } ztd|› �ƒ W 5 d }~X Y nX d S )N©rÇ   ÚbodyÚ
from_emailÚtoÚhtmlrÁ   )r-   Úcontent_subtypeÚsendrc   rÄ   ©re   rÇ   rW   r  Úto_emailÚpdf_fileÚemail_messagerg   rh   rh   ri   Úsend_em·  s    üzContentemailAPIView.send_emc              
   C   sœ   zT|j  d¡}d}d}tj}tj| j||||fd�}| ¡  tt	j
ddœd ddœƒW S  tk
r– } z$tt	jd	dœd
t|ƒdœƒ W Y ¢S d }~X Y nX d S )NrW   zvinothraj170@gmail.comzAuction Quote List Details©Útargetrü   r|   r}   ú&Email is being sent in the background.r€   rÜ   T)ÚPOSTrZ   r   ÚEMAIL_HOST_USERÚ	threadingÚThreadr  Ústartr   r   rç   rc   ræ   rd   )re   rf   rW   r	  rÇ   r  Úemail_threadrg   rh   rh   ri   rj   Ç  s*    
þ
ý

ýzContentemailAPIView.post)N)rk   rl   rm   r  rj   rh   rh   rh   ri   r   µ  s   
r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚEmailfunctionAPIViewc              
   C   sh   z2t ||||gd�}| |j| ¡ d¡ | ¡  W n0 tk
rb } ztd|› �ƒ W 5 d }~X Y nX d S )Nr  zapplication/pdfrÁ   )r-   Úattachr�   Úreadr  rc   rÄ   r  rh   rh   ri   Úsend_emailsssç  s    üz"EmailfunctionAPIView.send_emailsssc           	   
   C   sÆ   z~|j d }|j d¡}|s6ttjddœdddœƒW S d}d	}tj}tj	| j
|||||fd
�}| ¡  ttjddœd ddœƒW S  tk
rÀ } z$ttjddœdt|ƒdœƒ W Y ¢S d }~X Y nX d S )NZpdfFiler�   rÜ   r}   TzEmail is required.r€   zEnquiry Detailsz*Hello,  anywhere your Enquiry details Sir.r  r|   r  )rß   rY   rZ   r   r   r\   r   r  r  r  r  r  rç   rc   ræ   rd   )	re   rf   r
  r�   rÇ   rW   r  r  rg   rh   rh   ri   rj   ø  s8    

ý
þ
ý

ýzEmailfunctionAPIView.postN)rk   rl   rm   r  rj   rh   rh   rh   ri   r  å  s   r  )Úget_user_modelc                   @   s   e Zd Zdd„ ZdS )ÚSendotpAPIViewc           	   
   C   s   |j }zÆ| di ¡ dd ¡}td|ƒ tjj|d� ¡ sRttj	ddœddd	œƒW S tjj|d�}t
jj|jd
�}tddd�}||_t ¡ |_| ¡  |j}tjt||fd� ¡  ttjddœd d|idœƒW S  tk
�r } z.td|ƒ ttjddœdt|ƒd	œƒ W Y ¢S d }~X Y nX d S )NrŒ   r�   úReceived email:©r•   zEmail not foundr}   TzUser name not registeredr€   r’   é   Ú
1234567890©ÚlengthÚallowed_charsr  ÚSuccessr¼   zError:úInternal Server Error)rY   rZ   rÄ   r!   r„   r…   r‡   r   r   rû   r   r`   r�   r0   rÆ   r"   ÚnowÚotp_created_atr‰   r  r  rÈ   r  rb   rc   ræ   rd   )	re   rf   rY   r•   Úbackr†   rÆ   r�   rg   rh   rh   ri   rj   ;  s<    

ý


ý


ýzSendotpAPIView.postNr§   rh   rh   rh   ri   r  :  s   r  c                   @   s   e Zd Zdd„ ZdS )ÚSendotpsAPIViewc              
   C   sè   |j }zš| dd ¡}td|ƒ tjj|dd� ¡ rLttj	ddœddd	œƒW S t
d
dd�}tjj||t ¡ d�}tjt||fd� ¡  ttjddœd d|idœƒW S  tk
râ } z$ttjddœdt|ƒd	œƒ W Y ¢S d }~X Y nX d S )Nr�   r  r   )r�   r˜   zEmail already registeredr}   Tz;This email is already registered. Please use another email.r€   r  r  r   )r�   rÆ   r&  r  r#  r¼   r$  )rY   rZ   rÄ   r   r„   r…   r‡   r   r   ZHTTP_409_CONFLICTr0   r   r`   r"   r%  r  r  rÉ   r  rb   rc   ræ   rd   )re   rf   rY   r�   rÆ   r†   rg   rh   rh   ri   rj   c  s0    

ý

ý

ýzSendotpsAPIView.postNr§   rh   rh   rh   ri   r(  b  s   r(  ©r%   c                   @   s   e Zd Zdd„ ZdS )ÚVerifyotpsAPIViewc                 C   sÐ   |j  d¡}|j  d¡}z†tjj|d� d¡}|jtdd� }t 	¡ |krbt
ddd	d
œtjd�W S ||jkr„t
dddd
œtjd�W S t
ddd	d
œtjd�W S W n, tjk
rÊ   t
ddd	d
œtjd� Y S X d S )Nr�   rÆ   r’   r&  é<   ©Úsecondsé‘  ú&OTP expired. Please request a new one.T©r   rW   rV   r   r{   úOTP VerifiedFr‘   úInvalid OTPé”  úOTP not found)Úquery_paramsrZ   r   r„   r…   Úlatestr&  r%   r"   r%  r   r   rb   rÆ   r°   )re   rf   r�   Úotp_enteredÚuser_otpÚexpiration_timerh   rh   ri   rZ   Š  sH    ýü
ýüýüýüzVerifyotpsAPIView.getN©rk   rl   rm   rZ   rh   rh   rh   ri   r*  ‰  s   r*  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚVerifyotpAPIViewc                 C   sî   |j  d¡}tjj|d�}|j}t|dƒ |j  d¡}z†tjj|d� d¡}|j	t
dd� }t ¡ |kr€td	d
ddœtjd�W S ||jkr¢tddddœtjd�W S tddddœtjd�W S W n, tjk
rè   tddddœtjd� Y S X d S )Nr�   r  Z+sdsdfdsfsdfsdfsdfsdfdsfdsfdfdsfdsfdfsdssdsdrÆ   r’   r&  r+  r,  r.  r/  Tr0  r   r{   r1  Fr‘   r2  r3  r4  )r5  rZ   r!   r„   r�   rÄ   r   r…   r6  r&  r%   r"   r%  r   r   rb   rÆ   r°   )re   rf   r•   Zdosair�   r7  r8  r9  rh   rh   ri   rZ   ³  sN    
ýü
ýüýüýüzVerifyotpAPIView.getc                 C   s˜   |d k	r€zJt jj|d�}|jr:|jjdd� d |_| ¡  ttjddœd ddœƒW S  t	k
r~   ttj
ddœd d	dœƒ Y S X ttjddœd
ddœƒS )Nru   F)r‰   r|   r}   z"Profile image deleted successfullyr€   rÜ   zProfile not foundzID not providedzUser ID is required)r   r„   rZ   r²   Údeleter‰   r   r   rb   r   rû   r\   )re   rf   rX   rž   rh   rh   ri   r<  ß  s.    
ý

ý
ýzVerifyotpAPIView.deleteN)rk   rl   rm   rZ   r<  rh   rh   rh   ri   r;  ²  s   ,r;  c                   @   s*   e Zd ZefZdd„ Zdd„ Zdd„ ZdS )ÚProfileupdateAPIViewc                 K   s¼   |  d¡}|d k	r¸zxtjj |d�}tjj |jd�}|jrN|jjdkrN|jj}nd}|j|j|j	|j
|j||jdœ}ttjddœd |dœƒW S  tk
r¶   ttjd	dœd
ddœƒ Y S X d S )NrX   rö   ru   r›   )r�   r�   r™   Úf_nameÚl_namerž   rX   r#  r}   r¼   ÚFailedTúCompany not foundr€   )rZ   r!   r„   r   rX   r²   r³   r�   r�   r™   Ú
first_nameÚ	last_namer   r   rb   r   rû   )re   rf   rý   rX   r†   rþ   ÚprrY   rh   rh   ri   rZ   -  s6    

ø
ý

ýzProfileupdateAPIView.getc              
   C   sÞ   |j }zD| d¡}tjj|jjd�}||_| ¡  tt	j
ddœd ddœƒW S  tk
r’ } z*tt	jddœdd	t|ƒ› �dœƒ W Y ¢S d }~X Y nH tk
rØ } z*tt	jddœdd
t|ƒ› �dœƒ W Y ¢S d }~X Y nX d S )NÚ
prof_photoru   r|   r}   zProfile updated successfullyr€   rÜ   Trô   úAn error occurred: )rY   rZ   r   r„   r†   rX   r²   r‰   r   r   rç   rå   r\   rd   rc   ræ   )re   rf   rY   ZphoÚtakerg   rh   rh   ri   rj   U  s.    

ý

ý
ýzProfileupdateAPIView.postc                 C   sd  |j }|j  d¡}|j  d¡}|j  d¡}|j  d¡}tjj|d�j|d� ¡ rnttj	ddœd	d
dœtj	d�S zÂt
jj|d�}tjj|d�}	|d |	_|d |	_|d |	_|d |	_|	 ¡  |d |_|d |_|d |_| ¡  tjj|jd�}
|d |
_|d |
_|d |
_|
 ¡  ttjddœd ddœƒW S  tk
�r^   ttj	ddœd	ddœƒ Y S X d S )NrE  Úphone_noÚemail_idrB  )Úusername__iexactrö   rÜ   r}   Tz(The username you entered already exists.r€   r   ru   Zfirst_namesrC  r|   úUser updated successfullyrù   )rY   rZ   r!   r„   r…   Úexcluder‡   r   r   r\   r   r•   rB  rC  r�   r‰   r™   r�   r   rv   rÑ   rç   r   )re   rf   rX   rY   rE  rH  rI  rB  ÚmmÚsdrÓ   rh   rh   ri   rÿ   {  sR    
ýü










ý

ýzProfileupdateAPIView.putN©rk   rl   rm   r+   r�   rZ   rj   rÿ   rh   rh   rh   ri   r=  )  s   (&r=  c                   @   s   e Zd Zdd„ ZdS )ÚCompanyreportAPIViewc                 K   sä  |  d¡}|d k	rÒzŽtjj |d�}tjj |jd�}|jrP|jjdkrPt|jƒ}nd}|j|j	|j
|j|j||j|j|j|j|j|jdœ}ttjddœd |dœƒW S  tk
rÌ   ttjd	dœd
ddœƒ Y S X �n|j  d¡}t|ƒ �zÈg }|j  dd¡ ¡ }	|j  dd¡ ¡ }
|j  dd¡ ¡ }|j  dd¡ ¡ }|j  dd¡ ¡ }|dk�rdtjjddd�}ntjjddd�}|	�r†|j|	d�}|�r˜|j|d�}|�rª|j|d�}|
�r¼|j|
d�}|�rüz"t|ƒ}|dk�râ|j|d�}W n tk
�rú   Y nX |D ]–}tjj|jd�  ¡ }t!jj|jdd �  ¡ }tjj |jd�}|j�rP|jj}nd}|j|j|j
|j"|j|||j#j|j	|j||j
|jd!œ}| $|¡ �q ttjddœd |dœƒW S  tk
�rÞ   ttj%d	dœd
d"dœƒ Y S X d S )#NrX   rö   rš   r›   ©r�   r�   r™   rÖ   rØ   rž   Ú	firstnameÚlastnameÚgenderÚdojr–   rX   r#  r}   r¼   r@  TrA  r€   ÚvalrÑ   r—   rØ   r�   r™   r   Ú2r©   r   ©r   r˜   r	   ©Zname__icontains©Zemail__icontains©Zphone__icontains©Zpincode__icontains©r	   r©   r   rÒ   ©ry   r   )r�   rX   r™   Ú	gstnumberrØ   ÚvendorcountÚauctioncountr×   r�   rÖ   rž   r™   r   rù   )&rZ   r!   r„   r   rX   r²   r³   rd   r�   r�   r™   rÖ   rØ   rB  rC  rT  rU  r–   r   r   rb   r   rû   ÚGETrÄ   r5  rã   r…   ra   Ú
ValueErrorr   rv   Úcountr   r_  r×   rä   r\   )re   rf   rý   rX   r†   rþ   rD  rY   rV  r•   rØ   r�   r™   Ústatus_paramÚ	companiesÚ
status_intr`  ra  Úusersr¥   Úcompany_datarh   rh   ri   rZ   ¿  s¸    
ï
ý

ý


ñ
ý

ýzCompanyreportAPIView.getNr:  rh   rh   rh   ri   rP  ¾  s   rP  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚRegisterAPIViewc                 K   sÒ  |  d¡}|d k	rÐzŒtjj |d�}tjj |jd�}|jrN|jjdkrN|jj}nd}|j|j|j	|j
|j||j|j|j|j|j|jdœ}ttjddœd |dœƒW S  tk
rÊ   ttjd	dœd
ddœƒ Y S X �nþ|j  d¡}t|ƒ �z¸g }|j  dd¡ ¡ }	|j  dd¡ ¡ }
|j  dd¡ ¡ }|j  dd¡ ¡ }|j  dd¡ ¡ }|dk�rhtjjddd� d¡}ntjjddd� d¡}|	�r�|j|	d�}|�r¢|j|d�}|�r´|j|d�}|
�rÆ|j|
d�}|�rz"t|ƒ}|dk�rì|j|d�}W n tk
�r   Y nX |D ]z}tjj |jd�}|j�r0|jj}nd}|j�rF|jj}nd }|j|j|j	|j |j||j|j
||j	|jd!œ}| !|¡ �q
ttjddœd |dœƒW S  tk
�rÌ   ttj"d	dœd
d"dœƒ Y S X d S )#NrX   rö   rš   r›   rQ  r#  r}   r¼   r@  TrA  r€   rV  rÑ   r—   rØ   r�   r™   r   rW  r©   r   rX  z-user_idr	   rY  rZ  r[  r\  r]  r   zNo file)r�   rX   r™   r_  rØ   r×   r�   rÖ   rž   r™   r   rù   )#rZ   r!   r„   r   rX   r²   r³   r�   r�   r™   rÖ   rØ   rB  rC  rT  rU  r–   r   r   rb   r   rû   rb  rÄ   r5  rã   r…   Úorder_byra   rc  rv   r×   r_  rä   r\   )re   rf   rý   rX   r†   rþ   rD  rY   rV  r•   rØ   r�   r™   re  rf  rg  rh  r¥   Zerori  rh   rh   ri   rZ   L  s¶    

ï
ý

ý



ó
ý

ýzRegisterAPIView.getc                 C   s  |j }�zb| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}	| d¡}
| d	¡}| d
¡}| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}d}|sè|}t|ƒ}t|||||d�}| ¡  tjjdd|jd� t	|||||||||||	|||
||||d�}| ¡  t
tjddœd ddœƒW S  tk
�r´ } z*t
tjd dœd!d"t|ƒ› �dœƒ W Y ¢S d }~X Y nJ tk
�rü } z*t
tjd dœd!d#t|ƒ› �dœƒ W Y ¢S d }~X Y nX d S )$Nr´   r•   rB  Z
last_namesrI  Zph_norÖ   rØ   r_  rÚ   r˜   r×   rU  rE  ÚpanrT  r«   rT   r¬   r–   Zcompanyprofiler›   )rB  rC  r•   r�   r–   ÚnewuserzA new user has registered)ÚtyperW   rv   )r–   r²   r×   r´   rT  rl  r�   r�   r·   r™   rÖ   r†   rU  rØ   r_  rŸ   rµ   r¶   r|   r}   z New User Registered successfullyr€   rÜ   Trô   rF  )rY   rZ   r    r!   r‰   r   r„   r`   rX   r   r   r   rç   rå   r\   rd   rc   ræ   )re   rf   rY   r´   r�   r>  r?  r�   r™   rÖ   rØ   r_  rÚ   r˜   r×   rU  r²   rl  rT  rµ   r¶   r¬   r–   rŸ   r¥   rí   ZvanÚprofile_datarg   rh   rh   ri   rj   Ù  s�    




















ý              ü
ý

ý
ýzRegisterAPIView.postc           
      C   s®  |j  d¡}|j}|j d¡}|dkrltjj|d�}|jdkrFd|_nd|_| ¡  ttj	ddœd d	d
œƒS |dkrºtjj|d�}|jdkr”d|_nd|_| ¡  ttj	ddœd dd
œƒS |�r4tjj|d�}|d |_
|d |_|d |_|d |_|d |_|d |_|d |_| ¡  ttj	ddœd dd
œƒS �zDtjj|d�}tjj|d�}	|d |_|d |_|d |_|d |_|d |_|d |_|d |_|d |_|d |_|d |_|d |_|d  |_|d! |_|d" |_|d# |_ |d$ |_!|d% |_"|d& |_#|d' |_$|d( |_%| ¡  |d |	_&|d) |	_'|d* |	_(|d |	_t)|d( ƒ|	_%|	 ¡  ttj	ddœd d+d
œƒW S  t*k
�r¨   ttj+d,dœd-d.d
œƒ Y S X d S )/NrV  ÚctcÚ1ru   r	   r©   r|   r}   zWFH updated successfullyr€   rW  zInactive updated successfullyÚgrossÚptÚuanrl  ÚaccountÚreimz#Salary details updated successfullyrö   r�   ÚpemailÚshiftÚmarriedstatusrT  r�   r™   rÖ   rÙ   rÚ   r«   rØ   Z
departmentZdesignationr˜   Ú	authorityrU  r²   Úempcoder–   rR  rS  rK  rÜ   Trù   ),rb  rZ   rY   r   r„   Zwfhr‰   r   r   rç   rp  rr  rs  rt  rl  ru  rv  r!   r�   rw  rx  ry  rT  r�   r™   rÖ   rÙ   rÚ   r«   rØ   Zdepartment_idZdesignation_idr˜   Zauthority_idrU  r²   r{  r–   r•   rB  rC  r    r   r\   )
re   rf   rX   rV  rY   rp  ZpoZmeowrM  rN  rh   rh   ri   rÿ   %  s¢    

ý

ý







ý
























ý

ýzRegisterAPIView.putc                 O   s‚   |  d¡}zFtjj |d�}| ¡  tjj |d�}| ¡  ttjddœd ddœƒW S  tk
r|   ttj	ddœd	d
dœƒ Y S X d S )NrX   ru   rö   r|   r}   zCompany deleted successfullyr€   rÜ   Trø   )
rZ   r   r„   r<  r!   r   r   rb   r   rû   )re   rü   rý   rè   rD  rþ   rh   rh   ri   r<  „  s"    

ý

ýzRegisterAPIView.deleteN)rk   rl   rm   rZ   rj   rÿ   r<  rh   rh   rh   ri   rj  K  s
    L_rj  c                   @   s   e Zd ZefZddd„ZdS )ÚTimeAPIViewNc           	      C   s    |d k	rœzft jj|d�}|j}tt| d¡ƒ\}}|d | }|j|j|j	||j
dœ}tt
jddœd |dœƒW S  tk
rš   tt
jddœd	d
dœƒ Y S X d S )N©Úen_id_idú:r+  )rX   Ú	starttimeZ	startdateÚdurationr   r|   r}   r¼   rÜ   Trø   r€   )r   r„   rZ   r�  Úmapra   r¡   rX   Úend_timeÚend_dater   r   rb   r   rû   )	re   rf   rX   rþ   r�  Úminutesr-  Útotal_secondsrY   rh   rh   ri   rZ   ž  s.    û
ý

ýzTimeAPIView.get)N©rk   rl   rm   r+   r�   rZ   rh   rh   rh   ri   r|  ›  s   r|  c                   @   s   e Zd ZefZdd„ ZdS )ÚAuctionexpireAPIViewc              
   C   s²   |j }z6tjj|d�}d|_| ¡  ttjddœd ddœƒW S  tk
rh   ttj	ddœdd	dœƒ Y S  t
k
r¬ } z(t|ƒ ttjddœdd
dœƒ W Y ¢S d }~X Y nX d S )Nr}  r©   r|   r}   zDepartment updated successfullyr€   rÜ   Trø   rù   )rY   r   r„   rZ   r   r‰   r   rb   r   rû   rc   rÄ   r\   )re   rf   rX   rY   rþ   rg   rh   rh   ri   rÿ   Â  s.    
ý

ý
ýzAuctionexpireAPIView.putN©rk   rl   rm   r+   r�   rÿ   rh   rh   rh   ri   rˆ  ¿  s   rˆ  c                   @   s   e Zd Zdd„ ZdS )ÚCompanydashboardAPIViewc           %      C   sè  �z²ddl m} |jj}tjj|d� ¡ }ddl m} ddlm	} |jj}|ƒ }tjj|d� ¡ }tjj||j
|jd� ¡ }|jdkr–d}	|j
d }
n|jd }	|j
}
tjj||
|	d� ¡ }|ƒ }tjj||
|	d� ¡ }tjj||j
|jd� ¡ }tjj||
|	d� ¡ }tjj||j
|jd� ¡ }tjj||
|	d� ¡ }tjj||j
|jd� ¡ }|ƒ  ¡ }tjj||d� ¡ }tjjd	|d
� ¡ }tjjd|d
� ¡ }dd l}ddlm} g }| ¡ j
}| ¡ j}|d }td|ƒD ]6}|j| }tjj|||d� ¡ }| ||dœ¡ �qÖd}tjj|d�}|D ]}|d7 }�q$t ¡ }|jdd�}||dd� } | jdd�}!tjj||!| d�}"|" ¡ }#|||||||#||||||dœ}$ttjddœd |$dœƒW S  tk
�râ   ttjddœdddœƒ Y S X d S )Nr   ©r%  rÒ   r)  )ry   Úcreated_at__yearÚcreated_at__monthr	   é   )ry   Zcreated_at__dater©   )r   ry   ©r$   )rŒ  r�  ry   ©Ú	monthnameÚcounts)Úday©Údays)ry   Zcreated_at__gteZcreated_at__lte)ÚtotalenquiryÚtotalvendorÚtotalenquirytodaydateÚactivevendorÚinactivevendorÚ	monthdataÚtotalvendorlastmonthÚcurrent_month_enquiryÚlast_month_enquiryÚcurrent_month_auctionÚlast_month_auctionÚcurrent_month_productÚlast_month_productr|   r}   r¼   rÜ   Trø   r€   )Údjango.utils.timezoner%  r†   rX   r   r„   r…   rd  r$   r%   ÚyearÚmonthr   r   r#   r   ÚcalendarÚrangeÚ
month_abbrrä   r"   Úreplacer   r   rb   r   rû   )%re   rf   r%  Úopr–  r%   Úcurrent_dateZtotal_enquiryr�  Z
last_monthZlast_month_yearrž  r   rŸ  r¢  r¡  r˜  r™  rš  r¦  r$   r›  Úcurrent_yearÚcurrent_monthÚbakr¥  Ú
month_nameZenquiry_countr—  ZtotaÚiZfirst_day_of_current_monthZlast_month_endZlast_month_startZlast_month_vendorsrœ  rY   rh   rh   ri   rZ   ã  sì    ý


ý
	ý
ý
ý
ý
ý
ý

þ



ý
þ
ýó
ý

ýzCompanydashboardAPIView.getNr:  rh   rh   rh   ri   rŠ  à  s   rŠ  c                   @   s   e Zd ZefZdd„ ZdS )ÚVendordashboardAPIViewc                 C   s  �zÞ|j j}g }d}d}d}tj ¡ }|D ]À}z‚|j}	t|	tƒrJt 	|	¡n|	}
t|ƒt
t|
ƒkr®|d7 }| |j¡ tjj||jd� ¡ }||7 }|tjj||jdd� ¡ 7 }W q* tk
rè } ztd|j› d|› �ƒ W 5 d }~X Y q*X q*g }tjj|d�}t ¡ }t ¡ }|D ]ª}z„tjj|jd	�}t|jtƒ�rHt |jd
¡ ¡ n|j}t|jtƒ�rnt |jd¡ ¡ n|j}t ||¡}||k�r˜| d|i¡ W n tjk
�r¸   Y �qY nX �qg }|D ]ê}zªtjj|d�}g }|jD ]L}z&t jj|d�}| |j|j!dœ¡ W n t jk
�r,   Y �qäY nX �qädd„ |j"D ƒ}| |jdt|j#ƒ |j$ ¡ |j%|j&||dœ¡ W n8 tk
�r¬ } ztd|› d|› �ƒ W 5 d }~X Y nX �qÆ|||| |dœ}t't(j)ddœd |||dœƒW S  t*k
�r   t't(j+ddœdddœƒ Y S X d S )Nr   r	   ©Ú	vendor_idÚ
enquiry_idé   )r³  r´  r   úError in enquiry ID rÝ   rÒ   r}  ú%Y-%m-%dú%H:%MZauctiondaterö   ©rX   Úlabelc                 S   s   g | ]}d |i‘qS ©rº  rh   ©Ú.0Úqrh   rh   ri   Ú
<listcomp>å  s     z.VendordashboardAPIView.get.<locals>.<listcomp>ú#ENQ-000)rX   Úenq_idr#   ÚdeliverylocationÚdeliverydateÚproductÚquantityzError processing enquiry ID )ÚavlcountÚsubmitcountZpendingcountÚrejectcountr|   r}   )r   rV   rY   rõ   ZdatassrÜ   Trø   r€   ),r†   rX   r   r„   r�   rÓ   Ú
isinstancerd   ÚjsonÚloadsr‚  rä   r   r…   rd  rc   rÄ   r   r#   rˆ   r$   r%  r   rZ   Ú	enq_id_idr„  Ústrptimerƒ  r,   Úcombiner°   rÄ  r   r�   rÅ  Úauto_idÚ
created_atrÂ  rÃ  r   r   rb   r   rû   )re   rf   rª  r´  rÇ  rÆ  rÈ  Ú	enquiriesÚenquiryÚvendor_dataÚvendor_listZquote_countrg   ÚauctionÚaucrˆ   Úcurrent_date_and_timeÚklÚrpr„  rƒ  Úauction_endrõ   Úrr¥   Ú
product_idÚquanrY   rh   rh   ri   rZ   ›  sœ    
ý*&&

ù
*ü
û

ýzVendordashboardAPIView.getNr‡  rh   rh   rh   ri   r±  ˜  s   r±  c                   @   s   e Zd Zdd„ ZdS )ÚAdmindashboardAPIViewc              	   C   s¦  �zpddl m} |jj}|ƒ }tjjddd� ¡ }tjjddd� ¡ }dd l}ddl	m	} g }	| ¡ j
}
| ¡ j}|d }ddlm} td|ƒD ]B}|j| }tjj|
|d�j|d	ƒd
�d pÀd}|	 ||dœ¡ q�tjjdd� ¡ }tj ¡  ¡ }d}tjjdd�}|D ]<}ztjj|jd� W n  tjk
�rB   |d7 }Y nX �q
||||||	dœ}ttjddœd |dœƒW S  tk
�r    ttjddœdddœƒ Y S X d S )Nr   r‹  r	   rX  r©   r�  )ÚSum)rŒ  r�  rs   )Útotal_amountrà  r�  ©r˜   ru   )ÚpaidcompanyÚunpaidcompanyÚtotalcompanyÚactivecompanyÚinactivecompanyr›  r|   r}   r¼   rÜ   Trø   r€   )r£  r%  r†   rX   r   r„   r…   rd  r¦  r$   r¤  r¥  Údjango.db.modelsrß  r§  r¨  r   Ú	aggregaterä   r   r�   rZ   rv   r°   r   r   rb   r   rû   )re   rf   r%  rª  r«  rå  ræ  r¦  r$   r›  r¬  r­  r®  rß  r¥  r¯  Úpaymenträ  râ  rã  ÚqpÚbrY   rh   rh   ri   rZ   	  sp    


þüüüþ

	ø

ý

ýzAdmindashboardAPIView.getNr:  rh   rh   rh   ri   rÞ  	  s   rÞ  c                   @   s   e Zd Zddd„ZdS )ÚCheckAPIViewNc                 C   s�   |j  d¡}|j  d¡}|j  d¡}|s0|s0|rrtj t|d�t|d�B t|d�B ¡ ¡ }ttj	ddœd |d	œƒS ttj
d
dœdddœtj
d�S )Nr™   r�   r×   ©r™   r’   ©r×   r|   r}   ©r   rV   r‡   rÜ   Tú!No phone, email, or GST provided.r€   r   )r5  rZ   r   r„   r…   r'   r‡   r   r   rb   r\   )re   rf   rX   r™   r�   r×   r‡   rh   rh   ri   rZ   e	  s&    ÿ
ý
ýüzCheckAPIView.get)Nr:  rh   rh   rh   ri   rì  b	  s   rì  c                   @   s   e Zd Zddd„ZdS )ÚCheckcompanyAPIViewNc           	      C   s  |j  d¡}|j  d¡}|j  d¡}|j  d¡p:|j  d¡}td|||ƒ |sZ|sZ|sZ|rîtƒ }|rr|t|d�O }|rŽ|t|d�td	d
�@ M }|rª|t|d�td	d
�@ M }|rÆ|t|d�td	d
�@ M }tj |¡ ¡ }tt	j
ddœd |dœƒS tt	jddœdddœt	jd�S )Nr™   r�   r•   r_  r×   zCheck Params:©r�   rí  r   rá  r’   ©r_  r|   r}   rï  rÜ   Trð  r€   r   )r5  rZ   rÄ   r'   r   r„   r…   r‡   r   r   rb   r\   )	re   rf   rX   r™   r�   r�   r_  Úqueryr‡   rh   rh   ri   rZ   	  s8    
ý
ýüzCheckcompanyAPIView.get)Nr:  rh   rh   rh   ri   rñ  ~	  s   rñ  c                   @   s   e Zd ZefZddd„ZdS )ÚCheckvendorAPIViewNc           
      C   sì   |j  d¡}|j  d¡}|j  d¡}|j  d¡p:|j  d¡}|jj}|sT|sT|sT|rÎtƒ }|rl|t|d�O }|r~|t|d�O }|r�|t|d�O }|r¢|t|d	�O }tjj||d
� ¡ }	t	t
jddœd |	dœƒS t	t
jddœdddœt
jd�S )Nr™   r�   r•   r_  r×   rò  rí  r’   ró  rÒ   r|   r}   rï  rÜ   Trð  r€   r   )r5  rZ   r†   rX   r'   r   r„   r…   r‡   r   r   rb   r\   )
re   rf   rX   r™   r�   r�   r_  rè   rô  r‡   rh   rh   ri   rZ   ¯	  s8    
ý
ýüzCheckvendorAPIView.get)Nr‡  rh   rh   rh   ri   rõ  ¬	  s   rõ  c                   @   s4   e Zd ZefZd
dd„Zdd„ Zdd„ Zdd	„ ZdS )ÚProductAPIViewNc                 C   s$  |d k	r²zxt jj|d�}z|jr(|jjnd }W n tk
rF   d }Y nX |j|j|j|j	|j
||jdœ}ttjddœd |dœƒW S  tk
r¬   ttjddœddd	œƒ Y S X �nn�z<d
}g }|j d¡}|j dd¡ ¡ }	|j dd¡ ¡ }
|�rt jj|d�}nt jj|jjd�}|	�r(|j|	d�}|
�rhz"t|
ƒ}|dk�rN|j|d�}W n tk
�rf   Y nX |D ]j}|d7 }z|j�rŠ|jjnd }W n tk
�rª   d }Y nX | ||j|j|j|j
||j|j	dœ¡ �qlttjddœd |dœƒW S  tk
�r   ttjddœddd	œƒ Y S X d S )Nrö   )rX   r�   r~   rð   rñ   rú   r   r|   r}   r¼   rÜ   Trø   r€   r   rv   r�   r—   r   rÒ   rY  r]  r   r	   )rì   rX   r�   r~   rñ   rú   r   rð   )r   r„   rZ   rú   r³   rc  rX   r�   r~   rð   rñ   r   r   rb   r   rû   r5  rã   r…   r†   ra   rä   )re   rf   rX   rþ   ÚflrY   rë   rf  rv   r�   re  Úproductsrg  rh   rh   ri   rZ   Ù	  sŽ    
ø
ý

ý

ö
ý

ýzProductAPIView.getc              
   C   s¨   |j }zXtjj|d |d |d |d |d | d¡|jd�}| ¡  ttj	dd	œd d
dœƒW S  t
k
r¢ } z&ttjdd	œdd|› �dœƒ W Y ¢S d }~X Y nX d S )Nr�   r~   rð   rñ   r   rú   )r�   r~   rð   rñ   r   rú   rò   r|   r}   ró   r€   rÜ   Trô   )rY   r   r„   r`   rZ   r†   r‰   r   r   rç   rå   r\   )re   rf   rY   rþ   rg   rh   rh   ri   rj   8
  s.    ÷
ý

ýzProductAPIView.postc              
   C   s  |j }zš| d¡}tjj|d�}| d|j¡|_| d|j¡|_| d|j¡|_| d|j¡|_| d|j¡|_| d|j	¡|_	| 
¡  tt	jdd	œd d
dœƒW S  tk
rÌ   tt	jdd	œdddœƒ Y S  tk
�r } z(t|ƒ tt	jdd	œdddœƒ W Y ¢S d }~X Y nX d S )Nrú   rö   r�   r~   rð   rñ   r   r|   r}   zProduct updated successfullyr€   rÜ   Trø   rù   )rY   rZ   r   r„   r�   r~   rð   rñ   rú   r   r‰   r   rb   r   rû   rc   rÄ   r\   )re   rf   rX   rY   Úverþ   rg   rh   rh   ri   rÿ   Y
  s:    

ý

ý
ýzProductAPIView.putc                 C   s¦   |d k	r¢zjt |ƒ}tjj|gd� ¡ }|rDttjddœdddœƒW S tjj	|d�}| 
¡  ttjddœd d	dœƒW S  tjk
r    ttjddœd d
dœƒ Y S X d S )N)Zproduct__containsrÜ   r}   zProduct is used in enquiryz:Cannot delete product. It's used in one or more enquiries.r€   rö   r|   zProduct deleted successfullyzNo product found)rd   r   r„   r…   r‡   r   r   r\   r   rZ   r<  rb   r°   rû   )re   rf   rX   Zproduct_id_strZis_usedrÄ  rh   rh   ri   r<  €
  s.    
ý

ý

ýzProductAPIView.delete)N©	rk   rl   rm   r+   r�   rZ   rj   rÿ   r<  rh   rh   rh   ri   rö  Ö	  s
   
_!'rö  c                   @   s   e Zd Zdd„ ZdS )Ú	FpAPIViewc           	   
   C   s®   |j }z^| di ¡}| d¡}| d¡}t|ƒ}tjj|d�}||_| ¡  ttj	ddœd ddœƒW S  t
k
r¨ } z&ttjd	dœd
d|› �dœƒ W Y ¢S d }~X Y nX d S )NrŒ   r�   r–   r  r|   r}   zPassword reset successfullyr€   rÜ   Trô   )rY   rZ   r    r!   r„   r–   r‰   r   r   rb   rå   r\   )	re   rf   rY   rŒ   r•   r–   rí   Úmanrg   rh   rh   ri   rj   ¦
  s(    


ý

ýzFpAPIView.postNr§   rh   rh   rh   ri   rû  ¢
  s   rû  c                   @   s&   e Zd ZefZddd„Zddd„ZdS )ÚNotificationAPIViewNc                 C   s   |d k	rtz:t jj|d�}|j|j|jdœ}ttjddœd |dœƒW S  t	k
rn   ttj
ddœddd	œƒ Y S X �nˆd
dlm} d
dlm} �z(d
}g }|jj}	tjj|	d�}
|
jdk�r˜tjjddgd� d¡}|D ] }|d7 }z|jrò|jjnd}W n tjk
�r   d}Y nX |jdk�r.d|› �}n|jdk�rF|› d�}nd}| ||j|j||j||j|ƒ ƒd dœ¡ qÖttjddœd |t|ƒdœƒW S ttjddœddg dœƒW S W nD tk
�rú } z$ttjddœdt|ƒd	œƒ W Y ¢S d }~X Y nX d S )Nrö   )rX   rÑ   r™   r|   r}   r¼   rÜ   Trø   r€   r   )Ú	timesincer‹  ru   r	   rm  Zpaymentuser)Ztype__inz-created_atÚUnknownzNew Company Registered: z made a paymentzUnknown notification typez ago)rì   rX   rn  rW   rÐ  Ztime_ago)r   rV   rY   rd  Z	forbiddenz1You do not have permission to view notifications.rª   ) r   r„   rZ   rX   rÑ   r™   r   r   rb   r   rû   Údjango.utils.timesincerþ  r£  r%  r†   r   r˜   r   r…   rk  r•   r!   r°   rn  rä   rÐ  Úlenr±   rc   ræ   rd   )re   rf   rX   rþ   rY   rþ  r%  rë   Znoterª  rž   ÚnotificationsÚnr•   rW   rg   rh   rh   ri   rZ   Î
  sˆ    ý
ý

ý	ÿþ
ú


ü
	
ü
ýzNotificationAPIView.getc              
   C   sâ   zp|d k	r:t jj|d�}| ¡  ttjddœd ddœƒW S |jj}t jj	|d� ¡  ttjddœd ddœƒW S W nl t
k
rœ   ttjddœd	d
dœƒ Y S  tk
rÜ } z$ttjddœd	t|ƒdœƒ W Y ¢S d }~X Y nX d S )Nrö   r|   r}   z!Notification deleted successfullyr€   ru   z&All notifications deleted successfullyrÜ   TzNotification not found)r   r„   rZ   r<  r   r   rb   r†   rX   r…   r   rû   rc   ræ   rd   )re   rf   rX   Únotificationrª  rg   rh   rh   ri   r<  '  s8    
ý

ý
ý
ýzNotificationAPIView.delete)N)N)rk   rl   rm   r+   r�   rZ   r<  rh   rh   rh   ri   rý  Ë
  s   
Yrý  c                   @   s4   e Zd ZefZd
dd„Zdd„ Zdd„ Zdd	„ ZdS )ÚVendorAPIViewNc                 C   s8  |d k	r¨znt jj|d�}|j|j|j|j|j|j|j	|j
|j|j|j|j|j|j|j|jdœ}ttjddœd |dœƒW S  tk
r¢   ttjddœddd	œƒ Y S X �nŒ�zZd
}g }|j d¡}|j dd¡ ¡ }|j dd¡ ¡ }	|j dd¡ ¡ }
|j dd¡ ¡ }|�rt jj|d�}nt jj|jjd�}|�rB|j|d�}|	�rT|j|	d�}|
�rf|j|
d�}|�r¦z"t|ƒ}|dk�rŒ|j|d�}W n tk
�r¤   Y nX |D ]@}|d7 }| ||j|j|j|j|j|j|j|j|jdœ
¡ �qªttjddœd |dœƒW S  tk
�r2   ttjddœddd	œƒ Y S X d S )Nrö   )rX   rÑ   r™   r�   rÖ   r×   Úaddress1rÙ   rÚ   Úvendor_company_nameÚplanÚplan_detailsrÛ   Úregistered_dater   rØ   r|   r}   r¼   rÜ   Trø   r€   r   rv   rÑ   r—   r�   r™   r   rÒ   ©Zvendorname__icontainsrZ  r[  r]  r   r	   )
rì   rX   r�   r�   r™   rÖ   rØ   r×   r   rv   )r   r„   rZ   rX   rÑ   r™   r�   rÖ   r×   r«   rÙ   rÚ   r  r  r	  rÛ   r
  r   rØ   r   rb   r   rû   r5  rã   r…   r†   ra   rc  rä   rv   )re   rf   rX   rþ   rY   rë   rf  rv   rÑ   r�   r™   re  Úvendorsrg  rh   rh   ri   rZ   O  s     ì
ý

ý
ö
ý

ýzVendorAPIView.getc                 C   sn  |j }�z| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}	| d¡}
| d	¡}| d
¡}| d¡}| d¡}| d¡}|d }t|ƒ}t|||d�}| ¡  |j}t||d|||||d�}| ¡  t|||||	|||
||||||jj|d�}| ¡  t	t
jddœd ddœƒW S  tk
�rh } z&t	t
jddœdd|› �dœƒ W Y ¢S d }~X Y nX d S )Nr•   r�   r™   rÖ   r  rÚ   rÙ   r  r  r	  r
  rÛ   r   rÕ   )r•   r–   r�   r©   )r�   r™   r˜   r�   rÖ   r–   rv   r   )rÑ   r™   r�   rÚ   rÙ   r«   rÖ   r  r  r	  r
  rÛ   rv   ry   r   r|   r}   zVendor created successfullyr€   rÜ   Trô   )rY   rZ   r    r!   r‰   rX   r   r   r†   r   r   rç   rå   r\   )re   rf   rY   r�   r�   r™   rÖ   r  rÚ   rÙ   r  r  r	  r
  rÛ   Ústatr–   rí   rõ   Zuser_instancero  rÓ  rg   rh   rh   ri   rj   ½  sx    












øï
ý

ýzVendorAPIView.postc           	   
   C   sz  |j }zútjj|d�}|d |_|d |_|d |_|d |_|d |_|d |_	|d |_
|d	 |_|d
 |_| ¡  tjj|d�}tjj|jd�}|d |_|d |_| ¡  tjj|jd�}|d |_|d |_|d |_| ¡  ttjddœd ddœƒW S  tk
�r.   ttjddœdddœƒ Y S  tk
�rt } z(t|ƒ ttjddœdddœƒ W Y ¢S d }~X Y nX d S )Nrö   r�   rÖ   r�   r™   r  rÚ   rÙ   r   rÛ   ru   r×   r|   r}   zVendor updated successfullyr€   rÜ   Trø   rù   )rY   r   r„   rZ   rÑ   rÖ   r�   r™   r«   rÚ   rÙ   r   rÛ   r‰   r!   rv   r•   r   r�   r_  r   rb   r   rû   rc   rÄ   r\   )	re   rf   rX   rY   rþ   rf  Úuser¥   rg   rh   rh   ri   rÿ     sR    














ý

ý
ýzVendorAPIView.putc                 C   sš   |d k	r–z`t jj|d�}| ¡  tjj|jd�}| ¡  tjj|jd�}| ¡  ttj	ddœd ddœƒW S  t
k
r”   ttjddœd ddœƒ Y S X d S )	Nrö   ru   r|   r}   zVendor deleted successfullyr€   rÜ   rø   )r   r„   rZ   r<  r   rv   r!   r   r   rb   r   rû   )re   rf   rX   rþ   Úvenr  rh   rh   ri   r<  e  s&    
ý

ýzVendorAPIView.delete)Nrú  rh   rh   rh   ri   r  L  s
   
nUSr  c                   @   s   e Zd ZefZddd„ZdS )ÚGetproductAPIViewNc              	   C   s|  |d k	r|zBt jj|d�}|j|j|j|j|jdœ}tt	j
ddœd |dœƒW S  tk
rv   tt	jddœddd	œƒ Y S X � nüzÌg }tƒ }tjjd
d�}|D ]L}t jj|jjdd�}	|	D ].}
|
j|kr¶| |
j|
jdœ¡ | |
j¡ q¶qšd}g }tjj|jjdd�D ]*}|d7 }| ||j|j||jdœ¡ �qtt	j
ddœd |dœƒW S  tk
�rv   tt	jddœddd	œƒ Y S X d S )Nrö   ©rX   rÑ   r™   r�   rÖ   r|   r}   r¼   rÜ   Trø   r€   r©   rá  r	   r^  ©rX   r�   r   )rì   rX   r�   Zvensrñ   )r   r„   r…   rX   rÑ   r™   r�   rÖ   r   r   rb   r   rû   Úsetr   r†   rv   rä   Úaddr   r�   rñ   )re   rf   rX   rþ   rY   r  Zunique_user_idsÚfprž   ÚerrÓ   rë   rf  rh   rh   ri   rZ   ‚  sn    û
ý

ý
þû

ý

ýzGetproductAPIView.get)Nr‡  rh   rh   rh   ri   r    s   r  c                   @   s   e Zd ZefZddd„ZdS )ÚGetenquirysAPIViewNc                 C   s  |d k	rzzBt jj|d�}|j|j|j|j|jdœ}tt	j
ddœd |dœƒW S  tk
rv   tt	jddœddd	œƒ Y S X n’zbd
}g }tjj|jjdd�D ]*}|d7 }| ||jdt|jƒ dœ¡ q˜tt	j
ddœd |dœƒW S  tk
�r
   tt	jddœddd	œƒ Y S X d S )Nrö   r  r|   r}   r¼   rÜ   Trø   r€   r   r©   ©ry   Úexpirestatusr	   rÀ  ©rì   rX   rÏ  )r   r„   r…   rX   rÑ   r™   r�   rÖ   r   r   rb   r   rû   r   r†   rä   rd   rÏ  )re   rf   rX   rþ   rY   rë   rf  rh   rh   ri   rZ   Ï  sR    û
ý

ýý

ý

ýzGetenquirysAPIView.get)Nr‡  rh   rh   rh   ri   r  Ì  s   r  c                   @   s   e Zd ZefZddd„ZdS )ÚGetallenquiryAPIViewNc                 C   sX  |d k	r\z"ddi}t tjddœd |dœƒW S  tk
rV   t tjddœddd	œƒ Y S X � nøzÈ|jj}g }tj 	¡ }|D ]’}zR|j
}t|tƒršt |¡}	n|}	t|ƒtt|	ƒkrÌ| |jd
t|jƒ dœ¡ W qx tk
�r }
 ztd|j› d|
› �ƒ W 5 d }
~
X Y qxX qxt tjddœd |dœƒW S  tk
�rR   t tjddœddd	œƒ Y S X d S )NrX   rW  r|   r}   r¼   rÜ   Trø   r€   rÀ  )rX   rÏ  r¶  rÝ   )r   r   rb   r   rû   r†   rX   r   r„   r�   rÓ   rÉ  rd   rÊ  rË  r‚  rä   rÏ  rc   rÄ   )re   rf   rX   rY   rª  r´  rÑ  rÒ  rÓ  rÔ  rg   rh   rh   ri   rZ     sX     ÿ
ý

ý

þ*
ý

ýzGetallenquiryAPIView.get)Nr‡  rh   rh   rh   ri   r  	  s   r  c                   @   s   e Zd ZefZddd„ZdS )ÚGetenquiryAPIViewNc           
      C   sF  |d k	rzzBt jj|d�}|j|j|j|j|jdœ}tt	j
ddœd |dœƒW S  tk
rv   tt	jddœddd	œƒ Y S X nÈz˜d
}g }tjj|jjdd�}|D ]\}tjj|jdd� ¡ }tjj|jd� ¡ }	|	sœ|sœ|d7 }| ||jdt|jƒ dœ¡ qœtt	j
ddœd |dœƒW S  tk
�r@   tt	jddœddd	œƒ Y S X d S )Nrö   r  r|   r}   r¼   rÜ   Trø   r€   r   r©   r  é   )r´  r   r}  r	   rÀ  r  )r   r„   r…   rX   rÑ   r™   r�   rÖ   r   r   rb   r   rû   r   r†   r   r‡   r   rä   rd   rÏ  )
re   rf   rX   rþ   rY   rë   rf  rÑ  Zhas_status_4Zauction_existsrh   rh   ri   rZ   U  sZ    û
ý

ýý

ý

ýzGetenquiryAPIView.get)Nr‡  rh   rh   rh   ri   r  R  s   r  c              
   C   sR   zt | |tj|dd� W n4 tk
rL } ztdt|ƒ› �ƒ W 5 d}~X Y nX dS ©z0
    Function to send email asynchronously.
    Fr¿   rÁ   N©r/   r   r  rc   rÄ   rd   ©rÇ   rW   Úrecipient_listrg   rh   rh   ri   Úsend_email_async’  s    r"  c                   @   s,   e Zd ZefZddd„Zdd„ Zdd„ ZdS )	ÚEnquiryAPIViewNc           "      C   sÀ  |d k	�rÞ�zžt jj|d�}g }|jD ]&}tjj|d�}| |j|jdœ¡ q&dd„ |jD ƒ}dd„ |j	D ƒ}dd„ |j
D ƒ}	|jj}
zdtjj||
d�}d	d„ |jp¦g D ƒ}d
d„ |jpºg D ƒ}dd„ |jpÎg D ƒ}dd„ |jpâg D ƒ}W n( tjk
�r   g }g }g }g }Y nX g }|jD ]:}tjj|d�}| |j|j|j|||||||	dœ
¡ �qtjj|jd�}|j|j|j|j|j|j|j|||dœ
}ttjddœd |dœƒW S  tk
�rØ   ttj ddœdddœƒ Y S X �nÞ�z¬|jj}g }tjj|d�}|j!dk�rZd}�zt"jj|d�}|j#dk�sB|j#dk�sB|j#dk�ršt$|j%t&ƒ�r\|j% '¡ }n|j%}|t(dd� }t)|dƒ t& *¡  '¡ }||k�r”dnd}nx|j#d k�s¾|j#d!k�s¾|j#d"k�rt$|j%t&ƒ�rØ|j% '¡ }n|j%}|t(d#d� }t& *¡  '¡ }||k�rdnd}n|j#}t)d$|ƒ W n tk
�r8   d%}Y nX t jj+|d&�D ]ô}ztjj|j|jd�}|j}W n" tk
�rŒ   d'}t,|ƒ}Y nX g }|jD ]L}z&tjj|d�}| |j|jd(œ¡ W n tjk
�rà   Y �q˜Y nX �q˜d)d„ |jD ƒ}|d*7 }| ||j|j|j|j|j|j|||j-d+t.|j/ƒ |d,œ¡ �qHttjddœd ||d-œƒW S t j 0¡ D �]}t.|ƒ|jk�rdz$tjj|j|jd�}|j1} |j}W n& tk
�rÄ   d.} d'}t,|ƒ}Y nX g }|jD ]0}tjj|d�}| |j|j|j|j2d/œ¡ �qÐg }|jD ]}!| d0|!i¡ �q| |j|j|j|j|j|j|j-| |||d+t.|j/ƒ d1œ¡ t)|jd2|ƒ �qdttjddœd |dœƒW S W n. tk
�rº   ttj ddœdddœƒ Y S X d S )3Nrö   ru   r  c                 S   s   g | ]}d |i‘qS ©rÅ  rh   r¼  rh   rh   ri   r¿  *  s     z&EnquiryAPIView.get.<locals>.<listcomp>c                 S   s   g | ]}d |i‘qS )rð   rh   )r½  Údrh   rh   ri   r¿  -  s     c                 S   s   g | ]}d |i‘qS ©Úunitrh   )r½  Úurh   rh   ri   r¿  .  s     ©r´  r³  c                 S   s   g | ]}d |i‘qS )Úraterh   )r½  r*  rh   rh   ri   r¿  6  s     c                 S   s   g | ]}d |i‘qS )Útransrh   )r½  r+  rh   rh   ri   r¿  7  s     c                 S   s   g | ]}d |i‘qS )Úpackrh   )r½  r,  rh   rh   ri   r¿  8  s     c                 S   s   g | ]}d |i‘qS rî  rh   )r½  r×   rh   rh   ri   r¿  9  s     )
rX   r�   rñ   rÝ  Údesr*  r+  r,  r×   r'  )
rX   rÅ  r¬   ÚendDateÚendTimeÚlocationÚdeliveryDaterÓ   rÄ  r-  r|   r}   r¼   rÜ   Trø   r€   r©   r   Ú
basicMonthÚstatndardMonthÚpremiumMonthé   r”  zcompleted show meÚDookÚ	CompletedÚ	basicYearZstatndardYearÚpremiumYearém  úStatus:ÚPendingrÒ   rq  r¹  c                 S   s   g | ]}d |i‘qS r»  rh   r¼  rh   rh   ri   r¿  Æ  s     r	   rÀ  )rì   rX   rÃ  rÂ  rÅ  r„  rƒ  rÄ  rÅ  r  rÏ  r   )r   rV   rY   Ústaz-----)rX   r�   rñ   r~   rÅ  )rX   rÃ  rÂ  rÅ  r„  rƒ  r  Ú
updated_atrÄ  rÅ  r   rÏ  úVendor found in company:)3r   r„   rZ   rÓ   r   rä   rv   r�   rÅ  rð   Úunitsr†   rX   r   ÚrateperUnitÚtransportCostÚpackingCostr×   r°   rÄ  r   rñ   ry   r·   r„  rƒ  rÂ  rÃ  r   r   rb   r   rû   r˜   r   rw   rÉ  rx   r$   r#   r%   rÄ   rˆ   r…   ra   r  rd   rÏ  r�   Úrequote_dater~   )"re   rf   rX   rþ   r  r³  rÙ  rÝ  r-  r'  ZemÚwrÚrateperunitsÚtransportcostÚpackingcostr×   r¥   rÜ  rž   rY   Úrrrf  Úwtrë   ré  rx   Údue_daterˆ   rÚ   ZfeZstwÚstÚderr(  rh   rh   ri   rZ     sb   

þ


öô
ý

ý$
$


ó
ü


ü

 ÿ
ô
ý
ýzEnquiryAPIView.getc           "      C   s¤  |j }�zP| d¡}|d k	rRtjj|d�}d|_| ¡  ttjddœd ddœƒW S | d¡}| d	¡}| d
¡}| d¡}| d¡}	| d¡}
| d¡}|
r¦|
 	d¡ng }| d¡}t
 |¡}dd„ |D ƒ}dd„ |D ƒ}dd„ |D ƒ}dd„ |D ƒ}tjj|jjd� ¡ }|dk�rd}n|d }t|j|||||||||	||d�}| ¡  d}d}ztjj|jjd�}W n tjk
�rˆ   d }Y nX |�s²t|||jj|jjd�}| ¡  n |D ]„}|jj}tjj|d�}tjjt|ƒd�}d|j› d|j› d |j› d!|j› d"|j› d#�}d$}|jg}tjt|||fd%�} |  ¡  �q¶ttjddœd d&dœƒW S W nF tk
�rž }! z&ttjd'dœd(d)|!› �dœƒ W Y ¢S d }!~!X Y nX d S )*NrX   rö   r©   r|   r}   zEnquiry status successfullyr€   rÅ  r1  ÚenddateÚendtimer0  rÓ   Úmaxú,rÄ  c                 S   s   g | ]}|d  ‘qS ©rÄ  rh   ©r½  Úitemrh   rh   ri   r¿  U  s     z'EnquiryAPIView.post.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS r$  rh   rS  rh   rh   ri   r¿  V  s     c                 S   s   g | ]}|d  ‘qS r&  rh   rS  rh   rh   ri   r¿  W  s     c                 S   s   g | ]}|  d d¡‘qS ©rð   r—   ©rZ   rS  rh   rh   ri   r¿  Y  s     rÒ   r   r	   )rò   rÏ  r>  rð   r„  rƒ  r@  rÅ  rÃ  rÂ  rÓ   rÄ  ZFreeÚ0ru   rz   úDear z-,

                    This enquiry is from: aC  


                    We have assigned a new enquiry to you. Kindly log in to your vendor portal to review and submit your quotation.

                    Access the portal here:
                    https://procure4less.com/signin/

                    Your login credentials are as follows:
                    Username: z
                    Password: zÞ

                    Please review the enquiry and submit your quote at the earliest convenience. If you have any questions, feel free to reach out to our support team.

                    Thank you,
                    z
                    z%New Enquiry Request - Action Requiredr  úEnquiry created successfullyrÜ   Trô   )rY   rZ   r   r„   r  r‰   r   r   rç   r¡   rÊ  rË  r…   r†   rX   rd  r   r°   r   ra   r�   r�   r–   r´   r  r  r"  r  rå   r\   )"re   rf   rY   r´  rÒ  rÅ  rÃ  r„  rƒ  rÂ  r  rP  Úvendors_listÚproduct_jsonÚproduct_dataÚproducts_listÚquantity_listÚ	unit_listÚdescription_listrd  r’  rw   rs   Zpayment_objZpayr°  rè   Úcompany_nameÚdaÚmail_messagerÇ   r!  Úthreadrg   rh   rh   ri   rj   -  s˜    

ý










       ÿ


þôï
ý
ýzEnquiryAPIView.postc                 C   sâ  |j }�zŽ| d¡}| d¡}| d¡}| d¡}| d¡}| d¡}	|	rT|	 d¡ng }
| d¡}t |¡}d	d
„ |D ƒ}dd
„ |D ƒ}dd
„ |D ƒ}dd
„ |D ƒ}tjj|d�}||_||_||_	||_
||_||_|
|_||_||_d|_| ¡  |
D ]‚}|jj}tjj|d�}tjjt|ƒd�}d|j› d|j› d|j› d|j› d|j› d�}d}|jg}tjt|||fd�}| ¡  qúttj ddœd ddœƒW S  t!k
�rÜ } z&ttj"ddœdd|› �dœƒ W Y ¢S d }~X Y nX d S ) NrÅ  r1  rN  rO  r0  rÓ   rQ  rÄ  c                 S   s   g | ]}|d  ‘qS rR  rh   rS  rh   rh   ri   r¿  Å  s     z&EnquiryAPIView.put.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS r$  rh   rS  rh   rh   ri   r¿  Æ  s     c                 S   s   g | ]}|d  ‘qS r&  rh   rS  rh   rh   ri   r¿  Ç  s     c                 S   s   g | ]}|  d d¡‘qS rU  rV  rS  rh   rh   ri   r¿  É  s     rö   r	   ru   rX  ú),

                This enquiry is from: a,  


                We have updated an enquiry for you. Kindly log in to your vendor portal to review and submit your quotation.

                Access the portal here:
                https://procure4less.com/signin/

                Your login credentials are as follows:
                Username: z
                Password: zÒ

                Please review the enquiry and submit your quote at the earliest convenience. If you have any questions, feel free to reach out to our support team.

                Thank you,
                z

                z(Enquiry Update Request - Action Requiredr  r|   r}   rY  r€   rÜ   Trô   )#rY   rZ   r¡   rÊ  rË  r   r„   r„  rƒ  r@  rÅ  rÃ  rÂ  rÓ   rÄ  rð   r  r‰   r†   rX   r   ra   r�   r�   r–   r´   r  r  Úsend_email_asyncer  r   r   rç   rå   r\   )re   rf   rX   rY   rÅ  rÃ  r„  rƒ  rÂ  r  rZ  r[  r\  r]  r^  r_  r`  r°  rè   ra  rb  rc  rÇ   r!  rd  rg   rh   rh   ri   rÿ   ¶  sj    








þôï

ý

ýzEnquiryAPIView.put)NrO  rh   rh   rh   ri   r#    s   
   
r#  c              
   C   sR   zt | |tj|dd� W n4 tk
rL } ztdt|ƒ› �ƒ W 5 d}~X Y nX dS r  r  r   rh   rh   ri   rf    s    rf  c              
   C   sR   zt | |tj|dd� W n4 tk
rL } ztdt|ƒ› �ƒ W 5 d}~X Y nX dS r  r  r   rh   rh   ri   Úsend_email_quote'  s    rg  c              
   C   sR   zt | |tj|dd� W n4 tk
rL } ztdt|ƒ› �ƒ W 5 d}~X Y nX dS r  r  r   rh   rh   ri   Úsend_email_requote0  s    rh  c                   @   s,   e Zd ZefZddd„Zdd„ Zdd„ ZdS )	ÚQuoteAPIViewNc                 C   s&  |d k	� rüzÀt jj|d�}|jj}g }|jD ]&}tjj|d�}| |j|jdœ¡ q,t	jj||d�}z
|j
}	W n tk
r†   d}	Y nX |j
d krš|j
}
n|j}
|j|j|
|dœ}ttjddœd |dœƒW S  tk
rö   ttjd	dœd
ddœƒ Y S X �n&zö|jj}g }tjj|d�}|jdk�r‚d}t j ¡ D ]4}|d7 }| ||j|j|j|j|j|jdœ¡ �q2ttjddœd |dœƒW S t j ¡ D ]H}t|ƒ|jk�rŒ| |j|j|j|j|j|jdœ¡ t|jd|ƒ �qŒttjddœd |dœƒW S W n. tk
�r    ttjd	dœd
ddœƒ Y S X d S )Nrö   r  r)  ú---)rX   rÅ  ÚtotalrÄ  r|   r}   r¼   rÜ   Trø   r€   ru   r©   r   r	   ©rì   rX   rÃ  rÂ  rÅ  r„  rƒ  ©rX   rÃ  rÂ  rÅ  r„  rƒ  r?  )r   r„   rZ   r†   rX   rÄ  r   rä   r�   r   Úrequoteamountr   ÚtotalAmountrÅ  r   r   rb   rû   r   r˜   r�   rÃ  rÂ  r„  rƒ  rd   rÓ   rÄ   )re   rf   rX   rþ   r³  rø  rÜ  rÄ  rª  rn  rS   rY   rI  rf  rJ  rë   rh   rh   ri   rZ   =  sž    

þ




ú

ý

ý	ù

ý
ú
ý
ýzQuoteAPIView.getc                 C   sF  |j }�zò|jj}| d¡}| d¡}| d¡}| d¡}| d¡}|rRt |¡ng }	dd„ |	D ƒ}
dd„ |	D ƒ}d	d„ |	D ƒ}d
d„ |	D ƒ}dd„ |	D ƒ}dd„ |	D ƒ}tjj||d� 	¡ sôt||pÈ|||d�}| 
¡  ttjddœd ddœƒW S zÐtjj||d�}|jdk�r>| d¡|_||_||_||_||_||_n0||_| d¡|_||_||_||_||_|
|_| 
¡  t||||| d¡| d¡||�pš||d�	}| 
¡  ttjddœd ddœƒW W S  tjk
�rö   ttjddœdddœƒ Y W S X W nF tk
�r@ } z&ttjddœdd|› �dœƒ W Y ¢S d }~X Y nX d S )NÚenidr   Ú	enquiryidrÔ   rÄ  c                 S   s   g | ]}|d  ‘qS rR  rh   rS  rh   rh   ri   r¿  »  s     z%QuoteAPIView.post.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS )ZratePerUnitrh   rS  rh   rh   ri   r¿  ¼  s     c                 S   s   g | ]}|d  ‘qS )rB  rh   rS  rh   rh   ri   r¿  ½  s     c                 S   s   g | ]}|d  ‘qS )rC  rh   rS  rh   rh   ri   r¿  ¾  s     c                 S   s   g | ]}|d  ‘qS )ZcalculateTotalrh   rS  rh   rh   ri   r¿  ¿  s     c                 S   s   g | ]}|d  ‘qS rî  rh   rS  rh   rh   ri   r¿  À  s     r²  )r   r´  r³  rÔ   r|   r}   zQuote data created successfullyr€   r)  r©   ro  )	rA  rC  rB  r×   ro  rn  rk  r´  r³  úEnquiry updated successfullyrÜ   Tz'Enquiry not found for the given vendor.rô   )rY   r†   rX   rZ   rÊ  rË  r   r„   r…   r‡   r‰   r   r   rç   Úenquirystatusrn  rA  rC  rB  r×   rk  ro  rÄ  r   rb   r°   rû   rå   r\   )re   rf   rY   rv   r´  Z
status_valrq  rÔ   r[  r\  r]  Z	rate_listZ
trans_listZ	pack_listZ
total_listZgst_listZnew_enquiryrÒ  Z	quote_logrg   rh   rh   ri   rj   ¯  s”    




ü
ý
ö
ý
ý
ýzQuoteAPIView.postc              
   C   s¶  |j }�zb|d }|d }t|ƒ tjj||d�}|dkrºd|_d|_| ¡  |jj	}t
jj|d�}t
jj|d�}d|j› d|j› d	|j› d
�}	d}
|jg}tjt|
|	|fd�}| ¡  n˜tjj||d�}d|_d|_t ¡ |_|jj	}t
jj|d�}t
jj|d�}d|j› d|j› d|j› d
�}	d}
|jg}tjt|
|	|fd�}| ¡  | ¡  ttjddœd ddœƒW S  tk
�r° } z&ttjddœdd|› �dœƒ W Y ¢S d }~X Y nX d S )Nr³  Úquoter)  r	   r  ru   rX  re  aO  


                We are pleased to inform you that your quotation for the enquiry has been accepted.

                You may click the link below to view the details:
                https://procure4less.com/signin/

                Thank you for your quotation and continued support.

                Best regards,
                ú
                z Your Quotation Has Been Acceptedr  é   r©   ao  


                You are requested to review and submit your requote for the provided enquiry.

                Kindly click the link below to view the details and submit your requote:
                https://procure4less.com/signin/

                If you have any questions, please feel free to reach out to our team.

                Thank you,
                zRequest for Requote Submissionr|   r}   rr  r€   rÜ   Trô   )rY   rÄ   r   r„   rZ   rs  r   r‰   r†   rX   r   r�   r�   r´   r  r  rg  r  r"   r%  rD  rh  r   rç   rå   r\   )re   rf   rX   rY   r  rt  rè   ra  rb  rc  rÇ   r!  rd  rõ   rg   rh   rh   ri   rÿ   j  sp    
þóþ


þóþ	
ý

ýzQuoteAPIView.put)NrO  rh   rh   rh   ri   ri  8  s
   
r <ri  c                   @   s   e Zd ZefZddd„ZdS )ÚQuotelistAPIViewNc                 C   sœ  |d k	�rr�z2t jj|d�}g }|jD ]þ}tjj|d� ¡ }|rFd}nd}z8tjj||d�}|j}	|j	}
|j
}|j}|j}|j}W n< tk
r¾   |}	d}
d}d}t|ƒ}d}t|ƒ}d}Y nX ztjj|	d�}|j}|j}W n tjk
rü   d	}d	}Y nX | |||||j|||
||j|d
œ¡ q&ttjddœd |dœƒW S  tk
�rl   ttjddœdddœƒ Y S X �n&zö|jj}g }tjj|d�}|jdk�rød}t j ¡ D ]4}|d7 }| ||j|j|j|j |j!|j"dœ¡ �q¨ttjddœd |dœƒW S t j ¡ D ]H}t#|ƒ|jk�r| |j|j|j|j |j!|j"dœ¡ t$|jd|ƒ �qttjddœd |dœƒW S W n. tk
�r–   ttjddœdddœƒ Y S X d S )Nrö   r}  r	   r   r)  rj  rq  rW  rÿ  )r³  r•   r�   rk  Úen_idr   Úrequotern  rÔ   ZoriginalenquirystatusÚauction_statusr|   r}   r¼   rÜ   Trø   r€   ru   r©   rl  rm  r?  )%r   r„   rZ   rÓ   r   r…   r‡   r   r³  rn  ro  r   rs  rÔ   r   ra   r!   r•   r�   r°   rä   rX   r  r   rb   rû   r†   r   r˜   r�   rÃ  rÂ  rÅ  r„  rƒ  rd   rÄ   )re   rf   rX   rþ   rÓ  r³  rÕ  rz  rª  Zuseidrn  ZamoZstmZstmsrÔ   rL  ÚstsrV  r•   r�   rI  rf  rJ  rë   rh   rh   ri   rZ   à  sÊ    





õ

ý

ý
ù

ý
ú
ý
ýzQuotelistAPIView.get)Nr‡  rh   rh   rh   ri   rw  Ü  s   rw  c              
   C   sR   zt | |tj|dd� W n4 tk
rL } ztdt|ƒ› �ƒ W 5 d}~X Y nX dS r  r  r   rh   rh   ri   Úsend_email_accquote`  s    r|  c                   @   s$   e Zd ZefZddd„Zdd„ ZdS )ÚAllauctionAPIViewNc           ,      C   s  |d k	�rd�z$ddl m }m} ddlm} ddlm} ddlm} g }tj	j
|d�}	|	jdkrttj	j|d� d	¡}
ntj	j|d� d
¡}
tj	j|d� d	¡}
|jj}tj	j
|d�}tj	j
|d�}tj	j
|jd�}g }|jD ]}| d|i¡ qÚg }|jD ]&}tj	j
|d�}| |j|jdœ¡ qø|
D ]@}tj	j
|jd�}|j}| |||j|j|j|j|jdœ¡ �q$g }g }|D ]}t|d
 ƒ}| |¡ �qr|D ]}t|d ƒ}| |¡ �q”|d }|D ]}||k �r¾|}�q¾|d }|D ]}||k �rà|}�qàtd|ƒ ||jddœd |||j |dt!|j"ƒ ||dœ	ƒW S  |k
�r^   ||j#ddœdddœƒ Y S X �nšddl m }m} ddlm} ddlm} ddlm} �zò|jj} g }!| $¡ }"tj	 %¡ D �]¶}#t!| ƒ|#j&k�rºztj	j
t!| ƒ|#jd�}$W n |k
�r   Y �qºY nX ztj	j
|$jd�}
W n |k
�r8   Y �qºY nX t'|
j(t!ƒ�rZ| )|
j(d¡ *¡ n|
j(}%t'|
j+t!ƒ�r€| )|
j+d¡ ,¡ n|
j+}&| -|%|&¡}'t.|
j/ 0d¡d ƒ}(|(})|'||)d� }*|"|'k �rÈd}+n|"|*k �rØd }+nd!}+g }|#j�r<|#jD ]L}z&tj	j
|d�}| |j|jd"œ¡ W n tj1k
�r6   Y �qîY nX �qî|! |#j|+dt!|#j"ƒ |
j2 *¡ ||* 3¡ |' 3¡ d#œ¡ �qº||jddœd |!d$œƒW S  |k
�rº   ||j#ddœdddœƒ Y S  t4k
�rü } z$||j5ddœdt!|ƒdœƒ W Y ¢S d }~X Y nX d S )%Nr   ©r$   r%   r   r   r   r}  r	   )rÌ  z-messagerW   ru   rö   rÅ  r  )rÝ  r•   rW   rk  ÚstorÌ  ry   rk  zLeat total amountr|   r}   rÀ  )	r   rV   rY   r¥   r¬   rÝ  rÏ  ZleastquoteamountZleastauctionamountrÜ   Trø   r€   )ry   rÌ  r·  r¸  r  ©r…  úNot StartedúAuction OngoingÚExpiredr¹  )rX   r   rÏ  Úauction_daterÄ  r9  rÚ  r¼   )6r$   r%   Údjango.core.exceptionsr   Úrest_framework.responser   Úrest_frameworkr   r   r„   rZ   r   r…   rk  r†   rX   r   r   ry   rÅ  rä   rÄ  r   r�   r!   r•   rW   rk  rÌ  rƒ   rÄ   rb   r·   rd   rÏ  rû   r%  r�   rÓ   rÉ  r„  rÍ  r#   rƒ  r,   rÎ  ra   r�  r¡   r°   rÐ  Ú	isoformatrc   ræ   ),re   rf   rX   r$   r%   r   r   r   rY   rÖ  rþ   Zrrrrü  ÚENZsymrÝ  r(  r¥   rÜ  rÙ  r°  Úper•   ÚtopZsoprT  ÚopsZopssZamurg   ÚabcrÛ  rI  rf  r×  rG  rù  r„  rƒ  rÚ  r…  Útotal_minutesÚauction_expirationÚsmrh   rh   ri   rZ   n  s   


 ÿ
þ


ù




÷

ý	&&


þù
ý

ý
ýzAllauctionAPIView.getc              
   C   sò   |j }z¢|d }tjj||d�}d|_|jj}tjj|d�}tjj|d�}d|j› d|j	› d�}d}	|j
g}
tjt|	||
fd	�}| ¡  | ¡  ttjd
dœd ddœƒW S  tk
rì } z&ttjddœdd|› �dœƒ W Y ¢S d }~X Y nX d S )Nr³  )rÌ  ry   r©   ru   rX  a7  ,

            We are pleased to inform you that your quote for the online auction has been accepted.
            
            The Purchase Order (PO) is currently under process and will be sent to you shortly.

            

            Thank you for your participation.

            Best regards,
            z
            z+Your Online Auction Quote Has Been Acceptedr  r|   r}   úQuote accepted successfullyr€   rÜ   Trô   )rY   r   r„   rZ   r   r†   rX   r   r�   r´   r�   r  r  r|  r  r‰   r   rç   rå   r\   )re   rf   rX   rY   r  rè   ra  rb  rc  rÇ   r!  rd  rg   rh   rh   ri   rÿ   S  s<    
õþ	
ý

ýzAllauctionAPIView.put)N)rk   rl   rm   r+   r�   rZ   rÿ   rh   rh   rh   ri   r}  i  s   
 fr}  c                   @   s   e Zd Zdd„ ZdS )ÚVendoractivestatusupdateAPIViewc              
   C   sÒ   zˆt jj|d�}|jdkr*d|_| ¡  nd|_| ¡  tjj|jd�}|jdkrbd|_| ¡  nd|_| ¡  ttjddœd ddœƒW S  t	k
rÌ } z&ttj
d	dœd
d|› �dœƒ W Y ¢S d }~X Y nX d S )Nrö   r	   r©   ru   r|   r}   r‘  r€   rÜ   Trô   )r   r„   rZ   r   r‰   r   rv   r   rç   rå   r\   )re   rf   rX   r  r¥   rg   rh   rh   ri   rÿ   Ÿ  s0    




ý

ýz#VendoractivestatusupdateAPIView.putN©rk   rl   rm   rÿ   rh   rh   rh   ri   r’  �  s   r’  c                   @   s   e Zd Zdd„ ZdS )Ú ProductactivestatusupdateAPIViewc              
   C   sš   zPt jj|d�}|jdkr*d|_| ¡  nd|_| ¡  ttjddœd ddœƒW S  tk
r” } z&ttjddœd	d
|› �dœƒ W Y ¢S d }~X Y nX d S )Nrö   r	   r©   r|   r}   r‘  r€   rÜ   Trô   )	r   r„   rZ   r   r‰   r   rç   rå   r\   )re   rf   rX   r  rg   rh   rh   ri   rÿ   Í  s$    


ý

ýz$ProductactivestatusupdateAPIView.putNr“  rh   rh   rh   ri   r”  Ë  s   r”  c                   @   s   e Zd ZefZddd„ZdS )Ú	PHAPIViewNc              !   C   sJ  ddl m} ddlm} ddlm} ddddd	d
dddddddddddddddddddddddd d!d"d#œ }d$d%d&d'd(d)d*œ}|d k	�rf�z2tjj|d+�}t	jj|j
d,�}	|j}
| |
d-¡\}}|jrÎt|jƒnd.}|	jrÞ|	jnd/}|	jrî|	jn
| ||¡}|d/k�r*t|d0 d1ƒ}t|| d1ƒ}|}d2}n|}d}|}d3}d4}|j�rxz|j d5¡}W n  tk
�rv   t|jƒ}Y nX |j|||	j|	j|	j|||||||||d6œ}|d7d8d9œd |d:œƒW S  tjk
�rì   |d;d<d9œd2d=d>œd;d� Y S  t	jk
�r   |d;d<d9œd2d?d>œd;d� Y S  tk
�r` } z&|d@d<d9œd2t|ƒd>œd@d� W Y ¢S d }~X Y nX �nà�zfg }t	jj|jjd,�}|jdAk�ržtj ¡  dB¡}ntjj|jjdC� dB¡}|D ]ü}zÖddl m} ddlm} ddlm} t	jj|j
d,�}|j�r|jnd/}|j�r|jn
| ||¡}|j�r2t|jƒnd.}d4}|j�rtz|j d5¡}W n  tk
�rr   t|jƒ}Y nX | |j||||||jdDœ¡ W n t	jk
�r²   Y �qºY nX �qº|d7d8d9œd |d:œƒW S  t	jk
�r    |d;d<d9œd2dEd>œd;d� Y S  tk
�rD } z&|d@d<d9œd2t|ƒd>œd@d� W Y ¢S d }~X Y nX d S )FNr   r   r   r   u   â‚¹ú$u   â‚¬õ   Â£u   Ø¯.Ø¥u   Ø±.Ø¹.ÚKDu   .Ø¯.Ø¨u   ï·¼u   Ø±.Ù‚zS$zA$õ   Â¥ZRMu   à¸¿ÚRzC$ZFrzHK$u   â‚©zR$u   â‚¦u   â‚¨u   à§³ZRsZKShu   â‚ºu   â‚ªu   â‚±ZRp) rE   r2   r3   r4   r6   r?   r@   rA   r=   r>   r5   r7   r;   r<   rB   rC   r8   r9   r:   rD   rJ   rK   rL   rM   rN   rO   rP   rQ   rH   rI   rF   rG   )zOne Month Basic Subscriptionú1 Month)zOne Month Standard Subscriptionr›  )zOne Month Premium Subscriptionr›  )zOne Year Basic Subscriptionú1 Year)zOne Year Standard Subscriptionrœ  )zOne Year Premium Subscriptionrœ  )r2  ZstandardMonthr4  r8  ÚstandardYearr9  rö   ru   )ÚSubscriptionzN/Ag        rE   gáz®Gáò?r©   TFr—   r·  )rX   rS   r#   r�   r�   r×   ÚyesÚnor  ZtotalamountrT   Úcurrency_symbolÚ
gst_amountÚtotal_payableÚshow_gstr{   r|   r}   r¼   r3  rÜ   zPayment history not foundr€   zVendor profile not foundiô  r	   z-idrÒ   )rX   rS   r£  rT   r¡  r#   r�   rø   ) r…  r   r†  r   r‡  r   r   r„   rZ   r   rv   rw   rs   rƒ   r¶   r·   Úroundrx   Ústrftimerc   rd   rX   r�   r�   r_  r°   r†   r˜   r�   rk  r…   rä   )re   rf   rX   r   r   r   ZCURRENCY_SYMBOLSZPLAN_DETAILSrþ   rÓ   r  r   rŸ  r  rT   Zcurr_symbolZer_before_gstr¢  r£  r¤  rx   rY   rg   rf  rê  ÚwpZwurh   rh   ri   rZ   õ  s^                           øú

ÿ
ý
ðý
ýü
ýü
ýü ÿþÿ

ýù
ý
ýü
ýüzPHAPIView.get)Nr‡  rh   rh   rh   ri   r•  ò  s   r•  c                   @   s   e Zd ZefZddd„ZdS )ÚQuotelogAPIViewNc                 C   sv  |d k	�rÒ�z’ddl m }m} ddlm} ddlm} ddlm} |j 	d¡}g }	t
jj||d�}
tjj	|d�}g }|jD ]}| |g¡ qzg }|jD ] }tjj	|d�}| |jg¡ q–t|
ƒD ]Ä\}}|	 |d	 |jræt|j ¡ ƒnd
|jrô|jnd
t|jtƒ�r
|jn|jgt|jtƒ�r$|jn|jgt|jtƒ�r>|jn|jgt|jtƒ�rX|jn|jgt|jtƒ�rr|jn|jg||dœ
¡ qÀ||jddœd |	dœƒW S  |k
�rÌ   ||j ddœdddœƒ Y S X �n ddl m }m} ddlm} ddlm} ddlm} �z$g }|j!j"}zt#jj	|d�}W n2 t#j$k
�rZ   ||j ddœdddœƒ Y W S X |j%dk�r’t&jj|j'd�}t(jj|j)ddd�d�}nt(jj|d�}|D ]n}ztjj	|j*d�}W n tj$k
�rÚ   Y �q¤Y nX | |j"|j ¡ dt|j+ƒ |j,|j-|j*|jdœ¡ �q¤||jddœd |dœƒW S  t.k
�rp } z$||j/ddœdt|ƒdœƒ W Y ¢S d }~X Y nX d S )Nr   r~  r   r   r   r³  r)  rö   r	   r—   )
rX   r#   rS   ÚrateperunitrG  rH  rk  r×   rÄ  rÅ  r|   r}   ©r   rV   ÚlogsrÜ   Trø   r€   ru   úUser profile not found.rÒ   rv   ©Úflat©Zcreated_by_id__inrÀ  ©rX   r#   rÏ  rÇ   rð   rx  r   r¼   )0r$   r%   r…  r   r†  r   r‡  r   rb  rZ   r   r„   r…   r   rÅ  rä   rÄ  r   r�   Ú	enumeraterÐ  rd   r#   ro  rÉ  rA  ÚlistrB  rC  rk  r×   rb   rû   r†   rX   r   r°   r˜   r   rv   r   Úvalues_listr~  rÏ  rÇ   rð   rc   ræ   )re   rf   rX   r$   r%   r   r   r   r³  r«  Úquotelogr‰  rÝ  r(  r¥   rÜ  rÙ  r°  Úlogrf  rv   rž   r  ÚticketsÚticketrÒ  rg   rh   rh   ri   rZ   …  s²    

ÿ
þô

ý

ý

ýù

ý

ýzQuotelogAPIView.get)Nr‡  rh   rh   rh   ri   r¨  €  s   r¨  c                   @   s   e Zd ZefZddd„ZdS )ÚAuctionlogAPIViewNc                 C   sx  |d k	rÔzšddl m }m} ddlm} ddlm} ddlm} |j 	d¡}g }	t
jj||d�}
t|
ƒD ]"\}}|	 |d |j|jd	œ¡ qf||jd
dœd |	dœƒW S  |k
rÎ   ||jddœdddœƒ Y S X �n ddl m }m} ddlm} ddlm} ddlm} �z$g }|jj}ztjj	|d�}W n2 tjk
�r\   ||jddœdddœƒ Y W S X |jdk�r”tjj|jd�}tjj|jddd�d�}ntjj|d�}|D ]n}ztjj	|jd�}W n tjk
�rÜ   Y �q¦Y nX | |j|j ¡ dt |j!ƒ |j"|j#|j|jdœ¡ �q¦||jd
dœd |dœƒW S  t$k
�rr } z$||j%ddœdt |ƒdœƒ W Y ¢S d }~X Y nX d S )Nr   r~  r   r   r   Úvendor_name)rÌ  r•   r	   )rX   rS   Ú
percentager|   r}   rª  rÜ   Trø   r€   ru   r¬  rÒ   rv   r­  r¯  rö   rÀ  r°  r¼   )&r$   r%   r…  r   r†  r   r‡  r   rb  rZ   r   r„   r…   r±  rä   rW   rº  rb   rû   r†   rX   r   r°   r˜   r   rv   r   r³  r   r~  rÐ  r#   rd   rÏ  rÇ   rð   rc   ræ   )re   rf   rX   r$   r%   r   r   r   r¹  r«  r´  r°  rµ  rf  rv   rž   r  r¶  r·  rÒ  rg   rh   rh   ri   rZ     sŒ    ü

ý

ý

ýù

ý

ýzAuctionlogAPIView.get)Nr‡  rh   rh   rh   ri   r¸     s   r¸  c                   @   s,   e Zd ZefZddd„Zdd„ Zdd„ ZdS )	ÚTicketAPIViewNc                 C   sÞ  |d k	�r:züddl m }m} ddlm} ddlm} ddlm} |j 	d¡}|dkrÆg }	t
jj	|d�}
tjj|
jd	�}|D ]0}tjj	|jd
�}|	 |j|j ¡ |jdœ¡ qz||jddœd |	dœƒW S t
jj	|d�}|j|j|j|jdœ}||jddœd |dœƒW S W n. |k
�r4   ||jddœdddœƒ Y S X �n ddl m }m} ddlm} ddlm} ddlm} �z$g }|jj}ztjj	|d
�}W n2 tjk
�rÂ   ||jddœdddœƒ Y W S X |jdk�rútjj|jd�}t
jj|jddd�d�}nt
jj|d�}|D ]n}
zt jj	|
jd�}W n t jk
�rB   Y �qY nX | |
j|
j ¡ dt!|j"ƒ |
j|
j|
j|
jdœ¡ �q||jddœd |dœƒW S  t#k
�rØ } z$||j$ddœdt!|ƒdœƒ W Y ¢S d }~X Y nX d S )Nr   r~  r   r   r   rV  rW  rö   )Úticket_id_idru   )Úsenderr#   rð   r|   r}   rª  )rX   rp  rð   rÇ   r¼   rÜ   Trø   r€   r¬  rÒ   rv   r­  r¯  rÀ  r°  )%r$   r%   r…  r   r†  r   r‡  r   r5  rZ   r   r„   r   r…   rX   r   ry   rä   r�   rÐ  r#   rð   rb   r~  rÇ   rû   r†   r°   r˜   r   rv   r³  r   rd   rÏ  rc   ræ   )re   rf   rX   r$   r%   r   r   r   rV  r«  r·  Zticket_logsrµ  rž   rþ   rY   rf  rv   r  r¶  rÒ  rg   rh   rh   ri   rZ   o  s¨    
ý

ý

ü
ý
ý	
ýù

ý

ýzTicketAPIView.getc           	   
   C   sÀ   |j }zp| d¡}| d¡}| d¡}t|j|||d�}| ¡  |j}t|j||d�}| ¡  ttj	ddœd dd	œƒW S  t
k
rº } z&ttjd
dœdd|› �d	œƒ W Y ¢S d }~X Y nX d S )NrÇ   rð   rp  )rò   rÇ   rð   r~  ©rò   rð   r¼  r|   r}   zTicket created successfullyr€   rÜ   Trô   )rY   rZ   r   r†   r‰   rX   r   r   r   rç   rå   r\   )	re   rf   rY   rÇ   rð   rp  Zticket_instanceÚdatawrg   rh   rh   ri   rj   ä  s8    


  ÿ ÿ
ý

ýzTicketAPIView.postc              
   C   s$  |j }| d¡}| d¡}| d¡}|dkrxtjj|d�}||_| ¡  t|j||d�}| ¡  ttj	ddœd d	d
œƒS z`| d¡}	| d¡}| d¡}
tjj|d�}||_
|	|_|
|_| ¡  ttj	ddœd dd
œƒW S  tk
�r } z&ttjddœdd|› �d
œƒ W Y ¢S d }~X Y nX d S )Nr   rW   Úvaluer   rö   r¾  r|   r}   zReply successfullyr€   rÇ   rð   rp  zTicket updated successfullyrÜ   Trô   )rY   rZ   r   r„   r   r‰   r   r†   r   rç   rð   rÇ   r~  rå   r\   )re   rf   rX   rY   r=  rð   rV  Úrtr¿  rÇ   rp  rg   rh   rh   ri   rÿ     sN    


ý
ý



ý

ýzTicketAPIView.put)NrO  rh   rh   rh   ri   r»  j  s   
u6r»  c                   @   s,   e Zd ZefZddd„Zdd„ Zdd„ ZdS )	ÚAuctionAPIViewNc                  C   sD  |d k	r°zvddl m }m} ddlm} ddlm} ddlm} tj	j
|d�}|j|j|j|j|jdœ}	||jdd	œd |	d
œƒW S  |k
rª   ||jdd	œdddœƒ Y S X �n�ddl m }m} ddlm} ddlm} ddlm} |jj}
�ztj	j
|
d�}|jdk�s"|jdk�s"|jdk�rpt|j|ƒ�r<|j ¡ }n|j}||dd� }| ¡  ¡ }||k�rjdnd}nx|jdk�s”|jdk�s”|jdk�rât|j|ƒ�r®|j ¡ }n|j}||dd� }| ¡  ¡ }||k�rÜdnd}n|j}td|ƒ W n |k
�r   d}Y nX �z¼g }| ¡ }|j 
d¡}|�rBtj	j|d�}ntj	j|jjd�}|D �]X}t|jtƒ�r~| |jd¡ ¡ n|j}t|jtƒ�r¤| |jd ¡ ¡ n|j}|  ||¡}t!|j "d!¡d ƒ}|}|||d"� }||k �rìd#}n||k �rüd$}nd%}t#j	j
|jd�}g }|j$�rp|j$D ]L}z&t%j	j
|d�}| &|j|j'd&œ¡ W n t%j(k
�rj   Y �q"Y nX �q"| &|j||j|j)|jd't|j*ƒ | +¡ | +¡ |j) ¡ |d(œ
¡ �qX||jdd	œd ||d)œƒW S  |k
�rü   ||jdd	œdddœƒ Y S  t,k
�r> } z$||j-dd	œdt|ƒdœƒ W Y ¢S d }~X Y nX d S )*Nr   r~  r   r   r   rö   )rX   r�  r.  r/  rÁ  r|   r}   r¼   rÜ   Trø   r€   ru   r2  r3  r4  r5  r”  r6  r7  r8  r�  r9  r:  r;  r<  rv   rÒ   r·  r¸  r  r€  r�  r‚  rƒ  r¹  rÀ  )
rX   r   Úflagr#   ÚidsrÏ  r9  rÚ  r„  rÄ  )r   rV   rY   rÚ   ).r$   r%   r…  r   r†  r   r‡  r   r   r„   rZ   rX   r�  r„  rƒ  r~  rb   rû   r†   r   rw   rÉ  rx   r#   rˆ   rÄ   r%  r5  r…   rd   rÍ  r,   rÎ  ra   r¡   r   rÄ  r   rä   r�   r°   rÐ  rÏ  rˆ  rc   ræ   ) re   rf   rX   r$   r%   r   r   r   rþ   rY   rI  ré  rx   rK  rˆ   rÚ   rf  r×  rv   Zerpor„  rƒ  rÚ  r…  rŽ  r�  r�  Zeryr¥   rÜ  rÙ  rg   rh   rh   ri   rZ   U  sÜ    û
ý

ý	$$

&&


þö
ü

ý
ýzAuctionAPIView.getc              
   C   s&  |j }�zÒ| d¡}| d¡}| d¡}| d¡}| d¡}t|j||||d�}| ¡  tjj|d�}	|	D ]Ì}
|
jdkrzqj|
jd	kr¼|
j	d k	ržt
t|
j	ƒƒ}qØ|
jd k	rjt
t|
jƒƒ}qØqjn|
jd k	rjt
t|
jƒƒ}nqjt|d
ƒ ztjj|
jd�}|j}W n tjk
�r   d}Y nX t||
j|||d�}| ¡  qjtjj|d�}|jD ]t}|jj}tjj|d�}tjjt
|ƒd�}d|j› d|j› d|j› d�}d}|jg}tjt|||fd�}| ¡  �qLttjddœd ddœƒW S  t k
�r  } z&ttj!ddœdd|› �dœƒ W Y ¢S d }~X Y nX d S )NrX   rN  rO  rp  r�  )rò   r„  rƒ  r~  r�  ©r´  rµ  r©   z <<< Converted amount for messagerö   rÿ  )rW   ry   rÌ  r•   rk  ru   rX  re  aÑ  


                You are invited to participate in an online auction. Kindly log in to the vendor portal to review the auction details and submit your quotation.

                Access the auction portal here:
                https://procure4less.com/signin/

                We encourage you to respond promptly to ensure your participation.

                If you have any questions, feel free to contact our team.

                Thank you,
                ru  z+Online Auction Invitation - Action Requiredr  r|   r}   zAuction created successfullyr€   rÜ   Trô   )"rY   rZ   r   r†   r‰   r   r„   r…   r   rn  ra   rƒ   ro  rÄ   r!   r³  r•   r°   r   r   rÓ   rX   r   r�   r�   r´   r  r  r"  r  r   rç   rå   r\   )re   rf   rY   r´  r„  rƒ  rp  r�  rÕ  Zvendor_quotesrt  rS   rV  r•   rW   Zbookr°  rè   ra  rb  rc  rÇ   r!  rd  rg   rh   rh   ri   rj   ý  sŒ    




û







û


þñþ
ý

ýzAuctionAPIView.postc           
   
   C   sÀ   |j }zp| d¡}| d¡}| d¡}| d¡}tjj|d�}||_||_||_||_| ¡  t	t
jddœd dd	œƒW S  tk
rº }	 z&t	t
jd
dœdd|	› �d	œƒ W Y ¢S d }	~	X Y nX d S )Nr'  rN  rO  r�  rö   r|   r}   úAuction updated successfullyr€   rÜ   Trô   )rY   rZ   r   r„   r�  r„  rƒ  r~  r‰   r   r   rç   rå   r\   )
re   rf   rX   rY   Zenqidr„  rƒ  r�  rÁ  rg   rh   rh   ri   rÿ   l  s.    




ý

ýzAuctionAPIView.put)NrO  rh   rh   rh   ri   rÂ  P  s
   
 )orÂ  c                   @   s   e Zd ZefZdd„ ZdS )ÚRequoteexpireAPIViewc              
   C   s’   |j }zBtjj|jj|d�}d|_d|_| ¡  t	tj
ddœd ddœƒW S  tk
rŒ } z&t	tjddœd	d
|› �dœƒ W Y ¢S d }~X Y nX d S )Nr²  r	   r©   r|   r}   rÆ  r€   rÜ   Trô   )rY   r   r„   rZ   r†   rX   rs  r   r‰   r   rç   rå   r\   )re   rf   rX   rY   rÁ  rg   rh   rh   ri   rÿ   �  s"    
ý

ýzRequoteexpireAPIView.putNr‰  rh   rh   rh   ri   rÇ  Œ  s   rÇ  c                   @   s   e Zd ZefZddd„ZdS )ÚVendorreportsAPIViewNc                 C   sÈ  |d k	rªzpt jj|d�}|j|j|j|j|j|j|j	|j
|j|j|j|j|j|j|j||jdœ}ttjddœd |dœƒW S  tk
r¤   ttjddœddd	œƒ Y S X �n�zèd
}g }|jj}tjj|d�}	|	j}
|	j}|	j}|	j}|	j}|	jj}|
|||||dœ}|j d¡}|j dd¡ ¡ }|j dd¡ ¡ }|j dd¡ ¡ }|j dd¡ ¡ }|�rnt jj|d�}nt jj|jjd�}|�r’|j|d�}|�r¤|j|d�}|�r¶|j|d�}|�röz"t|ƒ}|dk�rÜ|j|d�}W n t k
�rô   Y nX |D ]~}t!jj|j"d� #¡ }t!jj|j"dd� #¡ }t!jj|j"dd� #¡ }|d7 }| $||j|j|j|j|j|j|j"|||dœ¡ �qúttjddœd ||dœƒW S  tk
�rÂ   ttjddœddd	œƒ Y S X d S )Nrö   )rX   rÑ   r™   r�   rÖ   r×   r  rÙ   rÚ   r  r  r	  rÛ   r
  r   r³  rØ   r|   r}   r¼   rÜ   Trø   r€   r   ru   ©r­   ÚcomapnyaddressÚcompanyphoneÚcompanypincodeÚcompanyemailrŸ   rv   rÑ   r—   r�   r™   r   rÒ   r  rZ  r[  r]  r   r©   r^  r	   )rì   rX   r�   r�   r™   rÖ   r   rv   ra  ÚauctionsuccesscountÚauctionfailcount©r   rV   rY   Úcompanydata)%r   r„   rZ   rX   rÑ   r™   r�   rÖ   r×   r«   rÙ   rÚ   r  r  r	  rÛ   r
  r   rØ   r   rb   r   rû   r†   r   r´   rŸ   r³   r5  rã   r…   ra   rc  r   rv   rd  rä   )re   rf   rX   rþ   rv   rY   rë   rf  rª  r¦   r­   rÊ  rË  rÌ  rÍ  rŸ   rÑ   r�   r™   re  r  rg  ZauccountrÎ  rÏ  rh   rh   ri   rZ   ²  sÊ    ì
ý

ýú
õ
ü

ýzVendorreportsAPIView.get)Nr‡  rh   rh   rh   ri   rÈ  ¯  s   rÈ  c                   @   s   e Zd ZefZddd„ZdS )ÚEnquiryreportsAPIViewNc           !      C   sö  �zªd}g }|j j}tjj|d�}|j}|j}|j}	|j}
|j	}|j
rN|j
jnd }|||	|
||dœ}|j d¡}|j dd¡ ¡ }|j dd¡ ¡ }|r¨tjj|d�}ntjj|j jd�}|rÊ|j|d	�}|rÚ|j|d
�}|D �]°}|d7 }g }|j�rH|jD ]H}z&tjj|d�}| |j|jdœ¡ W qþ tjk
�rD   Y qþY qþX qþg }|j�r¨|jD ]L}z&tjj|d�}| |j|jdœ¡ W n tjk
�r¢   Y �qZY nX �qZtjj|jd� ¡ }g }g }|D ]Œ}|d }z^tjj|j|d�}|j�r|jD ]}| d|i¡ �qö|j�r0|jD ]}| d|i¡ �qW n tjk
�rP   Y �qÈY nX �qÈ| ||jdt|jƒ |j ¡ t|ƒ|j |||||dœ¡ qÞt!t"j#ddœd ||dœƒW S  t$k
�rð }  z$t!t"j%ddœdt| ƒdœƒ W Y ¢S d } ~ X Y nX d S )Nr   ru   rÉ  rv   Úsetenidr—   ÚsetdaterÒ   )Zcreated_at__icontains)Zauto_id__icontainsr	   rö   r¹  rÅ  rX   r)  r*  rk  rÀ  )rì   rX   rÏ  r#   Zinvitedvendorrð   ÚresponsecountrÓ   rÄ  r©  rk  r|   r}   rÐ  rÜ   Tr€   )&r†   rX   r   r„   rZ   r´   rÖ   r™   rØ   r�   rŸ   r³   r5  rã   r   r…   rÄ  r   rä   r�   r°   rÓ   rv   r   rd  rA  rk  rd   rÏ  rÐ  r#   r  rð   r   r   rb   rc   ræ   )!re   rf   rX   rë   rf  rª  r¦   r­   rÊ  rË  rÌ  rÍ  rŸ   rY   rv   rÓ  rÔ  r  rþ   r¥   rÜ  rÙ  r  r³  rÕ  rF  rk  Zvendor_dictZv_idrE  rÛ  Útrg   rh   rh   ri   rZ   N  s¸    ú

þ
þ

õ

ü

ýzEnquiryreportsAPIView.get)Nr‡  rh   rh   rh   ri   rÒ  K  s   rÒ  c                   @   s   e Zd ZefZddd„ZdS )ÚVendortotalreportsAPIViewNc                 C   sF  |d k	rrz8t jj|d�}|j|j|dœ}ttjddœd |dœƒW S  tk
rl   ttj	ddœddd	œƒ Y S X �nÐ�zžd
}g }|j
j}tjj|d�}	|	j}
|	j}|	j}|	j}|	j}|	jj}|
|||||dœ}g }|j d¡}|j dd¡ ¡ }|�r¶tjj|d�}|D ]¬}tjj|jd�}tjj|jd�}|j}|j}|j}g }g }|jD ](}tjj|d�}| |j|jdœ¡ �qJ|j D ]}| d|i¡ �qz| ||j!|j|||||dœ¡ �qn@t jj|j
jd�}|D ](}|d7 }| ||j|j|j"dœ¡ �qÌttjddœd |||dœƒW S  tk
�r@   ttj	ddœddd	œƒ Y S X d S )Nrö   )rX   rÑ   r³  r|   r}   r¼   rÜ   Trø   r€   r   ru   rÉ  rv   r³  r—   rÒ   r}  r¹  rÅ  )rì   r#   Z
auction_idrÄ  rÅ  ÚautualamountÚquoteamountr   r	   )rì   rX   r�   r³  )r   rV   rY   rõ   rÑ  )#r   r„   rZ   rX   rÑ   r   r   rb   r   rû   r†   r   r´   rÖ   r™   rØ   r�   rŸ   r³   r5  rã   r   r…   r   rÌ  r   rW   rk  rÄ  r   rä   r�   rÅ  rÐ  rv   )re   rf   rX   rþ   rv   rY   rë   rf  rª  r¦   r­   rÊ  rË  rÌ  rÍ  rŸ   rõ   r³  rÕ  ÚpÚroÚenrØ  rÙ  r=  r¥   rÝ  rÜ  rÙ  r¾  r  rh   rh   ri   rZ   Ï  s¸    û
ý

ýú

þ
 ÿ
øü
û

ýzVendortotalreportsAPIView.get)Nr‡  rh   rh   rh   ri   r×  Ì  s   r×  c                   @   s$   e Zd ZefZddd„Zdd„ ZdS )ÚPolicyAPIViewNc                 C   sì  |d k	r®ztt jj|d�}z|jr(|jjnd }W n tk
rF   d }Y nX |j|j|j|j	||j
dœ}tt
jddœd |dœƒW S  tk
r¨   tt
jddœddd	œƒ Y S X �n:�z|jj}|j d
d¡ ¡ }zt|ƒ}W n tk
rð   d }Y nX tjj|d�}|jdk�r8tjj|jd�}	|	j}
tjj|
d�}|j}nh|jdk�rŒ|dk�rftjj|jd�}|j}n$tjjdd�}tjj|jd�}|j}ntjj|d�}|j}tt
jddœd |dœƒW S  tk
�ræ   tt
jddœddd	œƒ Y S X d S )Nrö   )rX   r�   rð   rñ   rú   r   r|   r}   r¼   rÜ   Trø   r€   r   r—   ru   r©   rÒ   r   r	   rá  )r   r„   rZ   rú   r³   rc  rX   r�   rð   rñ   r   r   rb   r   rû   r†   r5  rã   ra   r   r˜   r   rv   ry   r
   Úcontent)re   rf   rX   rþ   r÷  rY   r§  re  rÛ  rª  ÚfgrÙ  rÞ  ZMPrh   rh   ri   rZ   X  st    
ú

ý

ý


ý

ýzPolicyAPIView.getc              
   C   sø   |j }z¨tjj|jjd� ¡ sb| dd¡ ¡ }tjj	||jd�}| 
¡  ttjddœd ddœƒW S | dd¡ ¡ }tjj|jjd�}||_| 
¡  ttjddœd d	dœƒW S W nD tk
rò } z&ttjd
dœdd|› �dœƒ W Y ¢S d }~X Y nX d S )NrÒ   rÞ  r—   )rÞ  rò   r|   r}   z Policy data created successfullyr€   z! Policy data updated successfullyrÜ   Trô   )rY   r
   r„   r…   r†   rX   r‡   rZ   rã   r`   r‰   r   r   rç   rÞ  rå   r\   )re   rf   rY   rÞ  rþ   Úcomprg   rh   rh   ri   rj   §  s:    ý
ý

ý
ýzPolicyAPIView.post)N)rk   rl   rm   r+   r�   rZ   rj   rh   rh   rh   ri   rÝ  U  s   
OrÝ  )ˆÚdjango.confr   Zdjango.shortcutsr   Zrest_framework.viewsr   r†  r   r‡  r   Úmodelsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r…  r   Zrest_framework.exceptionsr   Údjango.contrib.authr   r   Zrest_framework_simplejwt.tokensr   Údjango.contrib.auth.hashersr    Údjango.contrib.auth.modelsr!   Údjango.utilsr"   Zdjtzr$   r#   r%   ÚrequestsZpandasrà   Údjango.httpr&   ZpyodbcÚbase64rç  r'   rŠ   Zrest_framework.genericsr(   r)   Úserializersr*   Zrest_framework.permissionsr+   r,   rÊ  Údjango.core.mailr-   Zschool.settingsr.   Zpdfkitr®   r  r/   Údjango.utils.cryptor0   ÚClientÚRAZORPAY_API_KEYÚRAZORPAY_API_SECRETr^   r]   rR   ro   rŽ   r¨   rº   rÈ   rÉ   rÊ   rî   r   r  r  r  r(  r*  r;  r=  rP  rj  r|  rˆ  rŠ  r±  rÞ  rì  rñ  rõ  rö  rû  rý  r  r  r  r  r  r"  r#  rf  rg  rh  ri  rw  r|  r}  r’  r”  r•  r¨  r¸  r»  rÂ  rÇ  rÈ  rÒ  r×  rÝ  rh   rh   rh   ri   Ú<module>   s|  H                                            û	( mJ !tzH0R($&w    R$! 5uU.* M)   5M=I@     	   ' 	  6.'    j g  >#   
