
    Hf=                     P   d dl mZmZ ddl 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 d dlZd dlZd dl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 d dlmZ d dlm Z  ed        Z!d Z" G d de	      Z# G d de	      Z$ G d de	      Z%ed        Z&ed        Z' G d de	      Z( G d de	      Z)ed        Z* G d d e	      Z+d!e,d"e-d#e-fd$Z.d% Z/ G d& d'e	      Z0 G d( d)e	      Z1 G d* d+e	      Z2ed,        Z3ed-        Z4ed.        Z5ed/        Z6 G d0 d1e	      Z7y)2    )renderredirect   )*)messages)Q)View)authenticateloginupdate_session_auth_hashlogoutN)ContentFile)JsonResponseHttpResponse)login_required)datetime)settings)Image)	send_mailc                     t        | d      S )Nzmyapp/home.htmlr   requests    <C:\Users\admin\Desktop\projects\Document-sign\myapp\views.pyhomer      s    ',--    c                    | j                   dk(  r:| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }t        j                  j                  t        |            }|j                         r#t        j                  | dd	
       t        d      S ||k(  r/t        j                  j                  |||||      }t        d      S t        j                  | dd	
       t        d      S t        | d      S )NPOSTemail
first_name	last_name	password1	password2)r   zEmail Already Exists !*alert alert-warning alert-dismissible show
extra_tagsregister)r   usernamer    r!   passwordr   z)Password and Confirm Password not matchedzmyapp/register.html)methodr   getUser_Profileobjectsfilterr   existsr   errorr   create_userr   )r   r   r    r!   r"   r#   queryusers           r   r'   r'      s"   ~~  )\\%%l3
LL$$[1	LL$$[1	LL$$[1	$$++AEN;<<>NN7$<IuvJ''	!''33%Zdox  CL3  MDG$$NN7$O  ]I  JJ'''011r   c                       e Zd Zd Zd Zy)	LoginViewc                     t        |d      S )Nzmyapp/login.htmlr   )selfr   s     r   r+   zLoginView.get/   s    g122r   c                 ,   |j                   j                  d      }t        |       |j                   j                  d      }t        ||      }t        |       |t	        ||       t        d      S t        j                  |dd       t        d      S )	Nr   r"   )r   r)   r   zEmail or password is incorrectr$   r%   r   )r   r+   printr
   r   r   r   r0   )r7   r   r   r)   r3   s        r   postzLoginView.post3   s|      )e<<##K0%:d'$F##NN7$DQ}~G$$r   N__name__
__module____qualname__r+   r:    r   r   r5   r5   .   s    3%r   r5   c                       e Zd Zd Zy)Profileviewc                     d}t         j                  j                  |j                  j                        }||d}t        |d|      S )Nz
My Profileid)titler3   zmyapp/profile.htmlcontext)r,   r-   r+   r3   rD   r   )r7   r   rE   r3   rG   s        r   r+   zProfileview.getC   sB    ##''7<<??'; -g3GDDr   Nr<   r=   r>   r+   r?   r   r   rA   rA   B   s    Er   rA   c                       e Zd Zd Zd Zy)ProfileUpdateviewc                     d}t         j                  j                  |j                  j                        }t        |      }||d}t        |d|      S )NUpdate ProfilerC   instancerE   formmyapp/update_profile.htmlrF   )r,   r-   r+   r3   rD   Update_Profile_Formr   )r7   r   rE   rN   rP   rG   s         r   r+   zProfileUpdateview.getJ   sL     ''++w||+?"H5 -g:7KKr   c                 ^   t         j                  j                  |j                  j                        }t        |j                  |j                  |      }|j                  j                  d      }|j                         rL|j                          |r||_
        |j                          t        j                  |dd       t        d      S t        j                  |dd	       d
}t         j                  j                  |j                  j                        }||d}t        |d|      S )NrC   rM   imagezProfile Updated Successfully !!*alert alert-success alert-dismissible showr%   profilez(Something went wrong, Please check belowr$   rL   rO   rQ   rF   )r,   r-   r+   r3   rD   rR   r   FILESis_validsaveprofile_picr   successr   warningr   )r7   r   rN   rP   rT   rE   rG   s          r   r:   zProfileUpdateview.postQ   s    ''++w||+?"7<<Q!!'*==?IIK',$W%FR~I&&W%O  \H  I$E#++//7<<??/CH$D1G'#>wOOr   Nr;   r?   r   r   rJ   rJ   I   s    LPr   rJ   c                    | j                   dk(  rt        | j                  | j                        }|j	                         rA|j                  d      }t        | |       t        j                  | dd       t        d      S t        j                  | dd	       d
}||d}t        | d|      S t        | j                        }d
}||d}t        | d|      S )Nr   T)commitzPassword changed successfullyrU   r%   change_passwordz6New password & confirm new password are not matched !!r$   zChange Password)rP   rE   zmyapp/change_password.htmlrF   )r*   ChangePasswordFormr3   r   rX   rY   r   r   r[   r   r0   r   )r   rP   r3   rE   rG   s        r   changepasswordra   c   s    ~~!',,===?99D9)D$Wd3W&ER~-..NN7$\  jV  W%E"E2G'#?QQ!',,/!.g;WMMr   c                 .    t        |        t        d      S )Nr   )r   r   r   s    r   user_logoutrc   y   s    
7OGr   c                       e Zd Zd Zy)Signatureiewc                     d}t         j                  j                  |j                        }||d}t	        |d|      S )N
Signaturesr3   )rE   
signatureszmyapp/signature.htmlrF   )	Signaturer-   r.   r3   r   )r7   r   rE   ri   rG   s        r   r+   zSignatureiew.get   s>    &&--7<<-@
 j9g5gFFr   NrH   r?   r   r   re   re      s    Gr   re   c                       e Zd Zd Zd Zy)AddSignatureiewc                 *    d}d|i}t        |d|      S )NzAdd SignaturerE   zmyapp/add_signature.htmlrF   r   r7   r   rE   rG   s       r   r+   zAddSignatureiew.get   s     5/g9'JJr   c                    t        d       t        j                  |j                        }t        |       |d   }|d   }|j	                  d      \  }}|j	                  d      d   }t        t        j                  |      d|z         }|j	                  d      \  }	}
|	j	                  d      d   }t        t        j                  |
      d	|z         }t        |j                  ||
      }|j                          t        ddi      S )NcallrT   initialz;base64,/z
signature.)namezinitial.)r3   	signaturerq   r[   T)r9   jsonloadsbodysplitr   base64	b64decoderj   r3   rY   r   )r7   r   data
image_datainitial_dataformatimgstrextfileinitial_formatinitial_imgstrinitial_fileobjs                r   r:   zAddSignatureiew.post   s    fzz',,'d']
I#))*5ll3#6++F3,:LM)5););J)G&""3'+"6#3#3N#C*WZJZ[W\\DN
Yt,--r   Nr;   r?   r   r   rl   rl      s    K
.r   rl   c                    d}| j                   dk(  rL| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }t	        | j                         g }g }| j                  D ]b  }|j                  d      r|j                  | j                  |          3|j                  d      sE|j                  | j                  |          d t	        |       t	        |       g }	|r;|j                  j                  d	      s|j                  j                  d
      rPt        || j                        }
|
j                          t        j                  |
j                  j                        }|j!                  d      }d}t"        j                  j%                  ||j                  j'                  d      d   dz         }t#        j(                  |
j                  j                         |j                  |       d|j                  j'                  d      d    d|
_        |
j                          |r0|	j                  ||||d       |	| j*                  d<   t-        d      S t-        d      S |j                  j                  d      rnt        ||j                  | j                        }
|
j                          |rd| j*                  d<   t-        d      S |	j                  ||||d       t	        |	       |	| j*                  d<   d| j*                  d<   t-        d      S d|i}t/        | d|      S )NzAdd documentr   r   checksubjectmessageemail_name_z.jpgz.png)documentr3   RGBz=C:\Users\admin\Desktop\projects\Document-sign\media\documents.r   .pdfz
documents/)rt   r   r   r   
recipientsmake_envelopesign_documentz.txt)r   rt   r3   F)rt   emailsr   r   TrE   zmyapp/add_document.htmlrF   )r*   rW   r+   r   r9   
startswithappendrt   endswith	Documentsr3   rY   r   openr   pathconvertosjoinry   removesessionr   r   )r   rE   r   r   r   r   namesr   keyr   r   rT   imlfolderr   rG   s                   r   add_documentr      s   E~~}}  (  ),,""9-,,""9-gll<< 	0C~~h'gll3/0(W\\#./	0 	fe
		""6*		0B0B60J7<<@


3<<#4#45mmE*Yww||FDIIOOC,@,Cf,LM		#,,++,!+DIIOOC,@,C+DDI
%%eFW_f&gh4>GOOL1#O4400##F+499',,O
/4GOOG,#O44%%eVg`g&hi*%4>GOOL1/3GOOG,#O44uoG'4WEEr   c                       e Zd Zd Zd Zy)r   c                     d}t         j                  j                  |j                        }|r|j	                         }t        |       ||d}t        |d|      S )NzPrepare Documentrh   rE   r   zmyapp/make_envelope.htmlrF   )r   r-   r.   r3   lastr9   r   r7   r   rE   r   rG   s        r   r+   zmake_envelope.get   sS    "$$+++>}}H(O H5g9'JJr   c                    t        d       t        j                  j                  |j                  j
                        }|j                   d|j                   }d|j                  vrt        dddd	      S |j                  d   }|j                  j                  d
      }t        |       t        j                  j                  |      }|j                  }d|j
                   dt        j                         j                  d       d}t        j                   j#                  t$        j&                  d|      }t)        |d      5 }	|j+                         D ]  }
|	j-                  |
        	 d d d        t.        j                  j1                  ||d|       }|j2                  d   }t        |j2                  j5                                |rj|j2                  d   }|d   d   D ]$  }t6        j                  j1                  |||       & t9        |||j                  j
                  |j
                         t        d|j:                  j<                  d      S # 1 sw Y   xY w)Nrp   rC    pdfr0   No PDF file uploaded.statusr     r   doc_idzprepare document__%Y%m%d%H%M%Sr   zprepare documentswbzprepare documents/)main_documentr3   r   r   r   r   r   )r   r3   	recipientr[   r   pdf_path)r9   r,   r-   r+   r3   rD   r    r!   rW   r   r   r   r   nowstrftimer   r   r   r   
MEDIA_ROOTr   chunkswriteprepare_documentscreater   itemsRecipients_sign_documents
send_emailr   url)r7   r   r3   rt   pdf_filer   r   pdf_namer   fchunk
signed_docr   r   r   s                  r   r:   zmake_envelope.post   s   f##''7<<??';//"!DNN#34%#wCZ$[dghh=='!!(+f$$((F(3|| 'twwiq1H1H1X0YY]^77<< 3 35H(S(D! 	Q!* 	
 '..55HRVcuv~u  bA5  B
(goo##%& 6J#Ax0 m)1188zW[fk8lmz$w||z}}Eyj>Q>Q>U>UVWW	 	s   	'II'Nr;   r?   r   r   r   r      s    KXr   r   r   user_idr   c                     | d   d   D ]I  }t        |       d| d| d| d}| d   d   }| d| }t        j                  }|g}	t        ||||	       K y )Nr   r   z$http://127.0.0.1:8000/sign-document/rr   r   z; send you a document to review and sign, you can sign here )r9   r   EMAIL_HOST_USERr   )
r   rt   r   r   r   linkr   r   
from_emailrecipient_lists
             r   r   r     s~    Ax( @e5gYawaxqQQ-	*FUVZU[\--
'7J?@r   c                    t         j                  j                  |      }d}t        j                  j                  |      }||d}| j                  dk(  rPt        d       d| j                  vrt        ddd	d
      S | j                  d   }d|j                   dt        j                         j                  d       d}	t        j                  j                  t        j                   d|	      }
t#        |
d      5 }|j%                         D ]  }|j'                  |        	 d d d        t(        j                  j+                  ||      j-                         }d|	 |_        |	|_        d|_        |j5                          t        d|j.                  j6                  d      S t9        | d|      S # 1 sw Y   xY w)NrC   zRecipient Signaturer   r   rp   r   r0   r   r   r   r   signed_r   r   r   zrecipient sign documentsr   )main_document__idr   zrecipient sign documents/Tr[   r   zmyapp/recipient_sign.htmlrF   )r,   r-   r+   r   r*   r9   rW   r   rD   r   r   r   r   r   r   r   r   r   r   r   r   r.   firstr   rt   is_signrY   r   r   )r   r   r   r   r3   rE   r   rG   r   r   r   r   r   r   s                 r   recipient_signr     s   ##w#/D!E ((,,,7H1G~~f%#wCZ$[dghh==' TWWIQx||~'>'>~'N&OtT77<< 3 35OQYZ(D! 	Q!* 	
 /66==PVaf=gmmo
 9(D
"
!
yj>Q>Q>U>UVWW'6HH	 	s   ?'F66F?c                       e Zd Zd Zy)sent_agreementsc                 *    d}d|i}t        |d|      S )NzAgreements SentrE   zmyapp/sent_agreements.htmlrF   r   rn   s       r   r+   zsent_agreements.get-  s     !5/g;GLLr   NrH   r?   r   r   r   r   ,  s    Mr   r   c                       e Zd Zd Zy)
Agreementsc                     d}t         j                  j                  |j                        }||d}t	        |d|      S )NzSent Agreementsrh   rE   r|   myapp/agreements.htmlrF   )r   r-   r.   r3   r   r7   r   rE   r|   rG   s        r   r+   zAgreements.get3  s>    !(0077W\\7J -g6wGGr   NrH   r?   r   r   r   r   2      Hr   r   c                       e Zd Zd Zy)complete_agreementsc                     d}t         j                  j                  t        |j                        t        d      z        }||d}t        |d|      S )NzCompleted Agreementsrh   T)r   r   r   rF   )r   r-   r.   r   r3   r   r   s        r   r+   zcomplete_agreements.get;  sJ    &(0077w||8LqY]8^_ -g6wGGr   NrH   r?   r   r   r   r   :  r   r   r   c                    t         j                  j                  |      }t        |j                  j
                  d      5 }t        |j                         d      }d|j                  z   |d<   |cd d d        S # 1 sw Y   y xY w)NrC   rbzapplication/pdf)content_typezinline; filename=zContent-Disposition)	r   r-   r+   r   r   r   r   readrt   )r   rD   	agreementr   responses        r   download_pdfr   B  sr    )11555<I	i  %%t	, #AFFH;LMH.AINN.RH*+  s   /A::Bc                     t         j                  j                  |      }|j                          t	        j
                  | d|j                   dd       t        d      S )NrC   zAgreement of z Deleted Successfullyr$   r%   r   )r   r-   r+   deleter   r[   r   r   r   rD   r   s      r   delete_agreementr   J  s^    )11555<IWi.A.A-BBWX  fR  S%&&r   c                 d    t         j                  j                  |      }t        | d|d|d      S )NrC   zmyapp/delete_confirmation.htmlzDelete agreement confirmation)r   rE   rD   )r   r-   r+   r   r   s      r   delete_agreement_confirmationr   R  sA    )11555<I';)\{  BD  >E  F  Fr   c                     t        d      S )Nr   )r   r   s    r   delete_cancelr   W  s    %&&r   c                       e Zd Zd Zd Zy)SignvDocumentiewc                     d}t         j                  j                  |j                        }|r|j	                         }||d}t        |d|      S )NzSign Documentsrh   r   zmyapp/sign_document.htmlrF   )r   r-   r.   r3   r   r   r   s        r   r+   zSignvDocumentiew.get]  sL     $$+++>]]_H H5g9'JJr   c                 l   t        d       d|j                  vrt        dddd      S |j                  d   }|j                  }d|j                   d	t        j                         j                  d
       d}t        j                  j                  t        j                  d|      }t        |d      5 }|j                         D ]  }|j                  |        	 d d d        t         j"                  j%                  |d|       }t        d|j&                  j(                  d      S # 1 sw Y   OxY w)Nrp   r   r0   r   r   r   r   r   r   r   r   signed_documentsr   zsigned_documents/)r3   r   r[   r   )r9   rW   r   r3   rD   r   r   r   r   r   r   r   r   r   r   r   sign_documentsr-   r   r   r   )	r7   r   r   r3   r   r   r   r   r   s	            r   r:   zSignvDocumentiew.postf  s   f%#wCZ$[dghh=='|| TWWIQx||~'>'>~'N&OtT77<< 3 35GR(D! 	Q!* 	
 $++22IZ[cZdGe2f
yj>Q>Q>U>UVWW	 	s   4'D**D3Nr;   r?   r   r   r   r   \  s    KXr   r   )8django.shortcutsr   r   modelsdjango.contribr   django.db.modelsr   django.viewsr	   django.contrib.authr
   r   r   r   rv   rz   r   django.core.files.baser   django.httpr   r   django.contrib.auth.decoratorsr   r   django.confr   formsPILr   django.core.mailr   r   r'   r5   rA   rJ   ra   rc   re   rl   r   r   listintr   r   r   r   r   r   r   r   r   r   r?   r   r   <module>r     s   ,  #   S S   . 1 9      & . .20% %(E$ EP P4 N N*  
G4 G.d .. 7F 7Fr)XD )XX	@$ 	@C 	@s 	@I:Md MH HH$ H   ' ' F F ' 'Xt Xr   