
    h7P                     *   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mZ ddlmZ d d	lmZ d d
lmZ d dlmZmZ d dlmZ d dlmZmZ ddlmZmZmZmZmZm Z m!Z! d dl"m#Z# d dl$m%Z%m&Z& d dl'm(Z( d dl)m*Z*  G d de      Z+ G d de      Z, G d de#e      Z- G d de#e      Z. G d de#e      Z/ G d de#e      Z0 G d d e#e      Z1 G d! d"e#e      Z2 G d# d$e#e      Z3 G d% d&e#e      Z4 G d' d(e      Z5e(d)        Z6e(d*        Z7e(d+        Z8y),    N)JsonResponse)renderredirect)View)settings   )	LoginFormPasswordEmailForm)EmailBackEnd)render_to_string)
strip_tags)	send_mailEmailMultiAlternatives)messages)loginlogout)Csr_PartnersPartner_OrganizationsPermissionsUser_Departments
User_TypesUsersLetter_Boxes)LoginRequiredMixin)Program_TypesProjects)csrf_exempt)method_decoratorc                       e Zd Zd Zd Zy)AuthenticationViewsc                 (    t        |ddt        i      S )N
login.htmlform)r   r	   selfrequests     D/mnt/ACDE16A4DE16673C/PROJECTS/MIS_PORTALS/MIS_PORTAL/users/views.pygetzAuthenticationViews.get   s    g|fy-ABB    c                 l   t        |j                        }|j                         rt        j                  ||j
                  d   |j
                  d         }|=|j                  dk(  rt        ||       t        d      S t        ||       t        d      S t        |d|dd      S t        |dd	|i      S )
Nemailpassword)usernamer,   r   adminDashboardr"   zInvalid email id or password)r#   errorr#   )
r	   POSTis_validr   authenticatecleaned_datauser_type_idr   r   r   )r%   r&   r#   users       r'   postzAuthenticationViews.post   s    &==?,,WARARSZA[fjfwfw  yC  gD  ED$$)'4(#$455'4(#$455g|tOm5noo'<&4AAr)   N__name__
__module____qualname__r(   r6    r)   r'   r    r       s    CBr)   r    c                       e Zd Zd Zy)
LogoutViewc                 .    t        |       t        d      S )Nr   )r   r   r$   s     r'   r(   zLogoutView.get0   s    w  r)   Nr8   r9   r:   r(   r;   r)   r'   r=   r=   .   s    !r)   r=   c                       e Zd Zd Zy)UserDepartmentViewc                    t         j                  j                         }t        j                  j                         }t        j                  j                         }t
        j                  j                         }t        j                  j                         }t        j                  j                         }t        |d||||||d      S )Nz
users.html)
user_typesuser_departmentsprogram_typesprojectscsr_partnerspartner_organizations)	r   objectsallr   r   r   r   r   r   )r%   r&   rC   rD   rE   rF   rG   rH   s           r'   r(   zUserDepartmentView.get8   s    ''++-
+33779%--113##'')#++//1 5 = = A A Cg|Z^n  CP  _g  zF  bw  .x  y  	yr)   Nr?   r;   r)   r'   rA   rA   6   s    yr)   rA   c                       e Zd Zd Zd Zy)UserTypeViewc                     t               }|j                  d   |_        |j                          |j                  r7t               }||_        |j                          t        j                  |d       t        d      S )N	user_typezUser type added successfully.userDepartmentView)	r   r0   rN   saveidr   r   successr   )r%   r&   rN   permissionss       r'   r6   zUserTypeView.postE   sc    L	%ll;7	<<%-K$-K!W&EF,--r)   c                 4   	 t         j                  j                  |j                  d         }|j	                          t        j                  |d       t        d      S # t         j                  $ r$ t        j                  |d       t        d      cY S w xY w)NrQ   rQ   zUser type deleted successfully.rO   zUser type doesn't exists.)
r   rI   r(   GETdeleter   rR   r   DoesNotExistr/   )r%   r&   rN   s      r'   r(   zUserTypeView.getQ   s    	2"**..'++d2C.DIW&GH011&& 	2NN7$?@011	2   AA   4BBNr8   r9   r:   r6   r(   r;   r)   r'   rL   rL   C   s    	.2r)   rL   c                       e Zd Zd Zd Zy)DepartmentViewc                 t    t               }|j                  d   |_        |j                          t	        d      S )N
departmentrO   )r   r0   user_departmentrP   r   r%   r&   r_   s      r'   r6   zDepartmentView.post`   s3    *,*1,,|*D',--r)   c                 4   	 t         j                  j                  |j                  d         }|j	                          t        j                  |d       t        d      S # t        j                  $ r$ t        j                  |d       t        d      cY S w xY w)NrQ   rU   z%User department deleted successfully.rO   zUser department doesn't exists.)r   rI   r(   rV   rW   r   rR   r   r   rX   r/   r`   s      r'   r(   zDepartmentView.getg   s    	2.66::gkk$>O:PO""$W&MN011&& 	2NN7$EF011	2rY   NrZ   r;   r)   r'   r\   r\   ^   s    .2r)   r\   c                       e Zd Zd Zd Zy)CsrPartnerViewc                 d   t               }|j                  d   |_        |j                  |j                  d          |j                  d   |_        dj                  d t        d      D              }d|z   |_        d|_        d	|_	        d
|_
        d	|_        |j                          |j                  rst               }||_        |j                  d   |_        |j                  d   |_        |j                  d   |_        |j                          t'        j(                  |d       t+        d      S )Nr+   r,   mobile c              3   F   K   | ]  }t        j                  d         yw$1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZNrandomchoice.0is     r'   	<genexpr>z&CsrPartnerView.post.<locals>.<genexpr>{        dVWFMM*PQd   !   user-r   r      company_nameauthorised_person_namedesignationzCSR Partner added successfully.rO   )r   r0   r+   set_passwordre   joinranger-   	is_activeis_superuserr4   is_staffrP   rQ   r   r5   rv   rw   rx   r   rR   r   )r%   r&   r5   r-   csr_partners        r'   r6   zCsrPartnerView.postv   s   w\\'*
',,z23ll8,77d[`ab[cde(*		77&.K#K'.||N'CK$18>V1WK.&-ll=&AK#W&GH,--r)   c                 4   	 t         j                  j                  |j                  d         }|j	                          t        j                  |d       t        d      S # t         j                  $ r$ t        j                  |d       t        d      cY S w xY w)NrQ   rU   z!CSR partner deleted successfully.rO   zCSR partner doesn't exists.
r   rI   r(   rV   rW   r   rR   r   rX   r/   r%   r&   r5   s      r'   r(   zCsrPartnerView.get   s}    	2==$$D(9$:DKKMW&IJ011!! 	2NN7$AB011	2rY   NrZ   r;   r)   r'   rc   rc   t   s    ..2r)   rc   c                       e Zd Zd Zd Zy)PartnerOrganizationViewc                    t               }|j                  d   |_        |j                  |j                  d          |j                  d   |_        dj                  d t        d      D              }d|z   |_        d|_        d	|_	        d
|_
        d	|_        |j                          |j                  r~t               }||_        |j                  d   |_        |j                  d   |_        |j                  d   |_        |j                          t'        j(                  |d       t-        d      S t'        j*                  |d       t-        d      S )Nr+   r,   re   rf   c              3   F   K   | ]  }t        j                  d         ywrh   rj   rm   s     r'   rp   z/PartnerOrganizationView.post.<locals>.<genexpr>   rq   rr   rs   rt   r   r      rv   rw   rx   z(Partner Organization added successfully.z5Failed to add Partner Organization. Please try again.rO   )r   r0   r+   ry   re   rz   r{   r-   r|   r}   r4   r~   rP   rQ   r   r5   rv   rw   rx   r   rR   r/   r   )r%   r&   r5   r-   partner_organizations        r'   r6   zPartnerOrganizationView.post   s&   w\\'*
',,z23ll8,77d[`ab[cde(*		77#8#: (, %07^0L -:A,,G_:` 7/6||M/J , %%'W&PQ ,-- NN7$[\,--r)   c                 4   	 t         j                  j                  |j                  d         }|j	                          t        j                  |d       t        d      S # t         j                  $ r$ t        j                  |d       t        d      cY S w xY w)NrQ   rU   z*Partner organization deleted successfully.rO   z$Partner organization doesn't exists.r   r   s      r'   r(   zPartnerOrganizationView.get   s}    	2==$$D(9$:DKKMW&RS011!! 	2NN7$JK011	2rY   NrZ   r;   r)   r'   r   r      s    .22r)   r   c                       e Zd ZddZd Zy)UserPermissionsViewc                     t         j                  j                  t        |            }t        j                  j                         }t        |d|||d      S )Nr4   zpermissions.html)
permissionrQ   rC   )r   rI   r(   intr   rJ   r   )r%   r&   rQ   r   rC   s        r'   r(   zUserPermissionsView.get   sL     ((,,CG,D
''++-
g1:VXis3tuur)   c                 D   	 t        |j                         t        j                  j	                  |      }|j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_	        |j                  j	                  d      r|j                  j	                  d      nd|_
        |j                  j	                  d	      r|j                  j	                  d	      nd|_        |j                  j	                  d
      r|j                  j	                  d
      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_        |j                  j	                  d      r|j                  j	                  d      nd|_         |j                  j	                  d      r|j                  j	                  d      nd|_!        |j                  j	                  d       r|j                  j	                  d       nd|_"        |j                  j	                  d!      r|j                  j	                  d!      nd|_#        |j                  j	                  d"      r|j                  j	                  d"      nd|_$        |j                  j	                  d#      r|j                  j	                  d#      nd|_%        |j                  j	                  d$      r|j                  j	                  d$      nd|_&        |j                  j	                  d%      r|j                  j	                  d%      nd|_'        |j                  j	                  d&      r|j                  j	                  d&      nd|_(        |j                  j	                  d'      r|j                  j	                  d'      nd|_)        |j                  j	                  d(      r|j                  j	                  d(      nd|_*        |j                  j	                  d)      r|j                  j	                  d)      nd|_+        |j                  j	                  d*      r|j                  j	                  d*      nd|_,        |j                  j	                  d+      r|j                  j	                  d+      nd|_-        |j                  j	                  d,      r|j                  j	                  d,      nd|_.        |j                  j	                  d-      r|j                  j	                  d-      nd|_/        |j                  j	                  d.      r|j                  j	                  d.      nd|_0        |jc                          te        jf                  |d/       ti        d0|1      S # t        jj                  $ r& te        jl                  |d2       ti        d0|1      cY S w xY w)3Nr   admin_department_user_type_viewr   admin_department_user_type_add!admin_department_user_type_delete%admin_department_user_department_view$admin_department_user_department_add'admin_department_user_department_deleteadmin_department_program_viewadmin_department_project_viewadmin_department_project_addadmin_department_project_delete admin_department_letter_box_viewadmin_department_letter_box_add admin_department_letter_box_edit"admin_department_letter_box_deleteprogram_department_program_viewprogram_department_program_addprogram_department_program_edit!program_department_program_delete!program_department_program_import!program_department_program_export$program_department_deliverables_view&program_department_deliverables_import&program_department_deliverables_export$hr_department_team_registration_view#hr_department_team_registration_add$hr_department_team_registration_edit&hr_department_team_registration_deletehr_department_attendance_viewhr_department_attendance_addhr_department_attendance_delete&hr_department_vendor_registration_view%hr_department_vendor_registration_add&hr_department_vendor_registration_edit(hr_department_vendor_registration_deletefinance_department_income_viewfinance_department_income_addfinance_department_income_edit finance_department_income_delete finance_department_income_export#finance_department_expenditure_view"finance_department_expenditure_add#finance_department_expenditure_edit%finance_department_expenditure_delete%finance_department_expenditure_exportz!Permissions updated successfully.userPermissionsrU   z,Permissions for this user type do not exist.)7printr0   r   rI   r(   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP   r   rR   r   rX   r/   )r%   r&   rQ   rS   s       r'   r6   zUserPermissionsView.post   s   9	6',,%--11r1BKqxq}q}  rB  rB  Cd  re',,:J:JKl:m  klK7ovo{o{oo  Aa  pb9I9IJj9k  hiK6u|  vB  vB  vF  vF  Gj  vkGLL<L<LMp<q  qrK9 ~E  ~J  ~J  ~N  ~N  Ov  ~w@P@PQx@y  }~K= |C  |H  |H  |L  |L  Ms  |tw||?O?OPv?w  z{K< BI  BN  BN  BR  BR  S|  B}',,BRBRS|B}  CDK?mtmymym}m}  ^  n_8H8HIh8i  efK5mtmymym}m}  ^  n_8H8HIh8i  efK5krkwkwk{k{  }[  l\w||7G7GHf7g  bcK4qxq}q}  rB  rB  Cd  re',,:J:JKl:m  klK7szss  tD  tD  Eg  th7<<;K;KLn;o  noK8qxq}q}  rB  rB  Cd  re',,:J:JKl:m  klK7szss  tD  tD  Eg  th7<<;K;KLn;o  noK8w~  xD  xD  xH  xH  Im  xnW\\=M=MNr=s  tuK:qxq}q}  rB  rB  Cd  re',,:J:JKl:m  klK7ovo{o{oo  Aa  pb9I9IJj9k  hiK6qxq}q}  rB  rB  Cd  re',,:J:JKl:m  klK7u|  vB  vB  vF  vF  Gj  vkGLL<L<LMp<q  qrK9u|  vB  vB  vF  vF  Gj  vkGLL<L<LMp<q  qrK9u|  vB  vB  vF  vF  Gj  vkGLL<L<LMp<q  qrK9 |C  |H  |H  |L  |L  Ms  |tw||?O?OPv?w  z{K< @G  @L  @L  @P  @P  Qy  @zAQAQRzA{  @AK> @G  @L  @L  @P  @P  Qy  @zAQAQRzA{  @AK> |C  |H  |H  |L  |L  Ms  |tw||?O?OPv?w  z{K< zA  zF  zF  zJ  zJ  Kp  zqgll>N>NOt>u  wxK; |C  |H  |H  |L  |L  Ms  |tw||?O?OPv?w  z{K< @G  @L  @L  @P  @P  Qy  @zAQAQRzA{  @AK>mtmymym}m}  ^  n_8H8HIh8i  efK5krkwkwk{k{  }[  l\w||7G7GHf7g  bcK4qxq}q}  rB  rB  Cd  re',,:J:JKl:m  klK7 @G  @L  @L  @P  @P  Qy  @zAQAQRzA{  @AK> ~E  ~J  ~J  ~N  ~N  Ov  ~w@P@PQx@y  }~K= @G  @L  @L  @P  @P  Qy  @zAQAQRzA{  @AK> DK  DP  DP  DT  DT  U  D@7<<CSCST~C  FGK@ovo{o{oo  Aa  pb9I9IJj9k  hiK6mtmymym}m}  ^  n_8H8HIh8i  efK5ovo{o{oo  Aa  pb9I9IJj9k  hiK6szss  tD  tD  Eg  th7<<;K;KLn;o  noK8szss  tD  tD  Eg  th7<<;K;KLn;o  noK8 zA  zF  zF  zJ  zJ  Kp  zqgll>N>NOt>u  wxK;w~  xD  xD  xH  xH  Im  xnW\\=M=MNr=s  tuK: zA  zF  zF  zJ  zJ  Kp  zqgll>N>NOt>u  wxK; ~E  ~J  ~J  ~N  ~N  Ov  ~w@P@PQx@y  }~K= ~E  ~J  ~J  ~N  ~N  Ov  ~w@P@PQx@y  }~K=W&IJ-"55'' 	6NN7$RS-"55	6s   k#k& &6llN)r   r7   r;   r)   r'   r   r      s    v:6r)   r   c                       e Zd Zd Zd Zy)LetterBoxViewc                     t         j                  j                         }t        j                  j                         }t	        |d||d      S )Nzletter-box.html)rD   
letter_box)r   rI   rJ   r   r   )r%   r&   rD   r   s       r'   r(   zLetterBoxView.get	  sB    +33779!))--/
g0HXis2tuur)   c                    t               }|j                  d   |_        |j                  d   |_        |j                  j	                  d      |_        |j                  j	                  d      |_        |j                  j	                  d      |_        |j                  j	                  d      |_        |j                  j	                  d      |_	        |j                  j	                  d      |_
        |j                  j	                  d	      |_        |j                  j	                  d
      |_        |j                          t        j                   |d       t#        d      S )Nreceipt_typedater   namer^   reference_noletter_typesubjectdescriptionpdf$Letter Box entry added successfully.	letterBox)r   r0   r   r   r(   r   r   department_idr   r   r   r   FILESr   rP   r   rR   r   )r%   r&   r   s      r'   r6   zLetterBoxView.post  s   !^
"),,~">
!,,v.
 ' 0 0 >
!,,**62
#*<<#3#3L#A
 "),,"2"2>"B
!(!1!1-!@
$\\--i8
!(!1!1-!@
 **51
"HI$$r)   Nr7   r;   r)   r'   r   r     s    v
%r)   r   c                       e Zd Zd Zd Zy)
LetterViewc                    	 t         j                  j                  |      }|j                          t	        j
                  |d       t        d      S # t         j                  $ r$ t	        j                  |d       t        d      cY S w xY w)NrU   z&Letter Box entry deleted successfully.r    Letter Box entry does not exist.)	r   rI   r(   rW   r   rR   r   rX   r/   r%   r&   rQ   letters       r'   r(   zLetterView.get"  st    	)!))--2-6FMMOW&NOK(((( 	)NN7$FGK((	)s   AA 4B
	B
c                    	 t         j                  j                  |      }|j                  d   |_        |j                  d   |_        |j                  j                  d      |_        |j                  j                  d      |_        |j                  j                  d      |_        |j                  j                  d      |_	        |j                  j                  d      |_
        |j                  j                  d	      |_        |j                  j                  d
      |_        d|j                  v r |j                  j                  d      |_        |j                          t!        j"                  |d       t%        d      S # t         j&                  $ r$ t!        j(                  |d       t%        d      cY S w xY w)NrU   r   r   r   r   r^   r   r   r   r   r   r   r   r   )r   rI   r(   r0   r   r   r   r   r   r   r   r   r   r   r   rP   r   rR   r   rX   r/   r   s       r'   r6   zLetterView.post-  sV   	)!))--2-6F"),,~">F!,,v.FK ' 0 0 >F!,,**62FK#*<<#3#3L#AF "),,"2"2>"BF!(!1!1-!@F$\\--i8FN!(!1!1-!@F%$]]..u5
KKMW&LMK(((( 	)NN7$FGK((	)s   FF	 	4G ?G Nr7   r;   r)   r'   r   r      s    ))r)   r   c                       e Zd Zd Zy)ForgotPasswordc                 (    t        |ddt        i      S )Nzforgot-password.htmlr#   )r   r
   r$   s     r'   r(   zForgotPassword.getF  s    g5AR7STTr)   Nr?   r;   r)   r'   r   r   D  s    Ur)   r   c                    	 t         j                  j                  | j                  j                  d            }dj	                  d t        d      D              }|| j                  d<   |j                  | j                  d<   d}|j                  g}t        d	t        j                  |j                  |d
      }t        |      }t        ||t        j                  |      }|j!                  |d       |j#                          t%        dddd      S # t         j&                  $ r t%        dddd      cY S t(        $ r}t%        dddd      cY d }~S d }~ww xY w)Nr+   )r+   rf   c              3   F   K   | ]  }t        j                  d         yw)
1234567890Nrj   rm   s     r'   rp   zsendOtp.<locals>.<genexpr>N  s     Eqv}}\2Err      otpuser_idzMIS Portal OTP requestzotp-template.html)logor   r   z	text/htmlzOTP sent to registered Email   messagestatusFsafezInvalid email id.  -Something went wrong. Please try again later.)r   rI   r(   r0   rz   r{   sessionrQ   r+   r   r   LOGO_URLr   r   r   EMAIL_HOST_USERattach_alternativesendr   rX   	Exception)	r&   r5   r   r   to_emailhtml_templatetext_contentr+   es	            r'   sendOtpr   J  s1   u}}  )9)9')B CggEE!HEF!$%)WW	"*JJ<()<HYHYdhdmdmx{>|}!-0&wh>V>VX`a  <

)GRUV]bcc Y)<sKRWXX u)Xcfgnsttus$   DD #E9EEEEc                     | j                   j                  d      }|| j                  d   k(  rt        dddd      S t        dddd      S )	Nr   zOTP Matchedr   r   Fr   zOTP Not Matchedr   )r0   r(   r   r   )r&   r   s     r'   	verifyOtpr   _  sM    
,,

5
!C
gooe$$EERR):SIPUVVr)   c                    	 | j                   j                  d      }t        j                  j                  | j                  d         }|j                  |       |j                          t        dddd      S # t        j                  $ r t        d	d
dd      cY S t        $ r}t        dd
ddd
      cY d }~S d }~ww xY w)Nr,   r   rU   zpassword changed succesfullyr   r   Fr   zUser does't existr   r   )r   r   )
r0   r(   r   rI   r   ry   rP   r   rX   r   )r&   r,   r5   r   s       r'   changePasswordr   h  s    	<<##J/}}  gooi&@ A(#		'EPST[`aa W':SIPUVV 'Vadelqz}~~s$   A8A; ;#C C(B>8C>C)9rk   django.httpr   django.shortcutsr   r   django.viewsr   configr   formsr	   r
   r   django.template.loaderr   django.utils.htmlr   django.core.mailr   r   django.contribr   django.contrib.authr   r   modelsr   r   r   r   r   r   r   django.contrib.auth.mixinsr   program_department.modelsr   r   django.views.decorators.csrfr   django.utils.decoratorsr   r    r=   rA   rL   r\   rc   r   r   r   r   r   r   r   r   r;   r)   r'   <module>r     s(    $ -   / & 3 ( > # - w w w 9 = 4 4B$ B0! !	y+T 	y2%t 262' 2,!2' !2J#20$ #2PB6,d B6L%& %2 )#T  )HUT U u u( W W 
 
r)   