
    h7P                     *   S SK r S SKJr  S SKJrJr  S SKJr  S SKJ	r	  SSK
JrJr  SSKJr  S S	KJr  S S
KJr  S SKJrJr  S SKJr  S SKJrJr  SSKJrJrJrJrJrJ r J!r!  S SK"J#r#  S SK$J%r%J&r&  S SK'J(r(  S SK)J*r*   " S S\5      r+ " S S\5      r, " S S\#\5      r- " S S\#\5      r. " S S\#\5      r/ " S S\#\5      r0 " S S \#\5      r1 " S! S"\#\5      r2 " S# S$\#\5      r3 " S% S&\#\5      r4 " S' S(\5      r5\(S) 5       r6\(S* 5       r7\(S+ 5       r8g),    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                        \ rS rSrS rS rSrg)AuthenticationViews   c                 (    [        USS[        05      $ )N
login.htmlform)r   r	   selfrequests     !/var/www/html/DEMO/users/views.pygetAuthenticationViews.get   s    g|fy-ABB    c                 p   [        UR                  5      nUR                  5       (       a~  [        R                  " XR
                  S   UR
                  S   S9nUb<  UR                  S:X  a  [        X5        [        S5      $ [        X5        [        S5      $ [        USUSS.5      $ [        USS	U05      $ )
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(   postAuthenticationViews.post   s    &==??,,WARARSZA[fjfwfw  yC  gD  ED$$)'(#$455'(#$455g|tOm5noo'<&4AAr+    N__name__
__module____qualname____firstlineno__r)   r8   __static_attributes__r:   r+   r(   r    r       s    CBr+   r    c                       \ rS rSrS rSrg)
LogoutView.   c                 .    [        U5        [        S5      $ )Nr   )r   r   r%   s     r(   r)   LogoutView.get0   s    w  r+   r:   Nr<   r=   r>   r?   r)   r@   r:   r+   r(   rB   rB   .   s    !r+   rB   c                       \ rS rSrS rSrg)UserDepartmentView6   c                    [         R                  R                  5       n[        R                  R                  5       n[        R                  R                  5       n[
        R                  R                  5       n[        R                  R                  5       n[        R                  R                  5       n[        USX#XEXgS.5      $ )Nz
users.html)
user_typesuser_departmentsprogram_typesprojectscsr_partnerspartner_organizations)	r   objectsallr   r   r   r   r   r   )r&   r'   rK   rL   rM   rN   rO   rP   s           r(   r)   UserDepartmentView.get8   s    ''++-
+33779%--113##'')#++//1 5 = = A A Cg|Z  CP  zF  .x  y  	yr+   r:   NrF   r:   r+   r(   rH   rH   6   s    yr+   rH   c                        \ rS rSrS rS rSrg)UserTypeViewC   c                    [        5       nUR                  S   Ul        UR                  5         UR                  (       a7  [        5       nX#l        UR                  5         [        R                  " US5        [        S5      $ )N	user_typezUser type added successfully.userDepartmentView)	r   r2   rX   saveidr   r   successr   )r&   r'   rX   permissionss       r(   r8   UserTypeView.postE   sa    L	%ll;7	<<%-K$-!W&EF,--r+   c                 4    [         R                  R                  UR                  S   S9nUR	                  5         [
        R                  " US5        [        S5      $ ! [         R                   a%    [
        R                  " US5        [        S5      s $ f = f)Nr[   r[   zUser type deleted successfully.rY   zUser type doesn't exists.)
r   rQ   r)   GETdeleter   r\   r   DoesNotExistr1   )r&   r'   rX   s      r(   r)   UserTypeView.getQ   s    	2"**..'++d2C.DIW&GH011&& 	2NN7$?@011	2   AA 6BBr:   Nr<   r=   r>   r?   r8   r)   r@   r:   r+   r(   rU   rU   C   s    	.2r+   rU   c                        \ rS rSrS rS rSrg)DepartmentView^   c                 t    [        5       nUR                  S   Ul        UR                  5         [	        S5      $ )N
departmentrY   )r   r2   user_departmentrZ   r   r&   r'   rl   s      r(   r8   DepartmentView.post`   s3    *,*1,,|*D',--r+   c                 4    [         R                  R                  UR                  S   S9nUR	                  5         [
        R                  " US5        [        S5      $ ! [        R                   a%    [
        R                  " US5        [        S5      s $ f = f)Nr[   r`   z%User department deleted successfully.rY   zUser department doesn't exists.)r   rQ   r)   ra   rb   r   r\   r   r   rc   r1   rm   s      r(   r)   DepartmentView.getg   s    	2.66::gkk$>O:PO""$W&MN011&& 	2NN7$EF011	2re   r:   Nrf   r:   r+   r(   rh   rh   ^   s    .2r+   rh   c                        \ rS rSrS rS rSrg)CsrPartnerViewt   c                 n   [        5       nUR                  S   Ul        UR                  UR                  S   5        UR                  S   Ul        SR                  S [        S5       5       5      nSU-   Ul        SUl        S	Ul	        S
Ul
        S	Ul        UR                  5         UR                  (       as  [        5       nX$l        UR                  S   Ul        UR                  S   Ul        UR                  S   Ul        UR                  5         [&        R(                  " US5        [+        S5      $ )Nr-   r.   mobile c              3   N   #    U  H  n[         R                  " S 5      v   M     g7f$1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZNrandomchoice.0is     r(   	<genexpr>&CsrPartnerView.post.<locals>.<genexpr>{         d[cVWFMM*PQQ[c   #%   user-r   r      company_nameauthorised_person_namedesignationzCSR Partner added successfully.rY   )r   r2   r-   set_passwordru   joinranger/   	is_activeis_superuserr6   is_staffrZ   r[   r   r7   r   r   r   r   r\   r   )r&   r'   r7   r/   csr_partners        r(   r8   CsrPartnerView.postv   s    w\\'*
',,z23ll8,77d[`ab[cde(*		77&.K#'.||N'CK$18>V1WK.&-ll=&AK#W&GH,--r+   c                 4    [         R                  R                  UR                  S   S9nUR	                  5         [
        R                  " US5        [        S5      $ ! [         R                   a%    [
        R                  " US5        [        S5      s $ f = f)Nr[   r`   z!CSR partner deleted successfully.rY   zCSR partner doesn't exists.
r   rQ   r)   ra   rb   r   r\   r   rc   r1   r&   r'   r7   s      r(   r)   CsrPartnerView.get   s}    	2==$$D(9$:DKKMW&IJ011!! 	2NN7$AB011	2re   r:   Nrf   r:   r+   r(   rr   rr   t   s    ..2r+   rr   c                        \ rS rSrS rS rSrg)PartnerOrganizationView   c                    [        5       nUR                  S   Ul        UR                  UR                  S   5        UR                  S   Ul        SR                  S [        S5       5       5      nSU-   Ul        SUl        S	Ul	        S
Ul
        S	Ul        UR                  5         UR                  (       at  [        5       nX$l        UR                  S   Ul        UR                  S   Ul        UR                  S   Ul        UR                  5         [&        R(                  " US5        O[&        R*                  " US5        [-        S5      $ )Nr-   r.   ru   rv   c              3   N   #    U  H  n[         R                  " S 5      v   M     g7frx   rz   r}   s     r(   r   /PartnerOrganizationView.post.<locals>.<genexpr>   r   r   r   r   r   r      r   r   r   z(Partner Organization added successfully.z5Failed to add Partner Organization. Please try again.rY   )r   r2   r-   r   ru   r   r   r/   r   r   r6   r   rZ   r[   r   r7   r   r   r   r   r\   r1   r   )r&   r'   r7   r/   partner_organizations        r(   r8   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    [         R                  R                  UR                  S   S9nUR	                  5         [
        R                  " US5        [        S5      $ ! [         R                   a%    [
        R                  " US5        [        S5      s $ f = f)Nr[   r`   z*Partner organization deleted successfully.rY   z$Partner organization doesn't exists.r   r   s      r(   r)   PartnerOrganizationView.get   s}    	2==$$D(9$:DKKMW&RS011!! 	2NN7$JK011	2re   r:   Nrf   r:   r+   r(   r   r      s    .22r+   r   c                   $    \ rS rSrSS jrS rSrg)UserPermissionsView   c                     [         R                  R                  [        U5      S9n[        R                  R                  5       n[        USX2US.5      $ )Nr6   zpermissions.html)
permissionr[   rK   )r   rQ   r)   intr   rR   r   )r&   r'   r[   r   rK   s        r(   r)   UserPermissionsView.get   sI     ((,,CG,D
''++-
g1:is3tuur+   c                     [        UR                  5        [        R                  R	                  US9nUR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl	        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl
        UR                  R	                  S	5      (       a  UR                  R	                  S	5      OSUl        UR                  R	                  S
5      (       a  UR                  R	                  S
5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl        UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl         UR                  R	                  S5      (       a  UR                  R	                  S5      OSUl!        UR                  R	                  S 5      (       a  UR                  R	                  S 5      OSUl"        UR                  R	                  S!5      (       a  UR                  R	                  S!5      OSUl#        UR                  R	                  S"5      (       a  UR                  R	                  S"5      OSUl$        UR                  R	                  S#5      (       a  UR                  R	                  S#5      OSUl%        UR                  R	                  S$5      (       a  UR                  R	                  S$5      OSUl&        UR                  R	                  S%5      (       a  UR                  R	                  S%5      OSUl'        UR                  R	                  S&5      (       a  UR                  R	                  S&5      OSUl(        UR                  R	                  S'5      (       a  UR                  R	                  S'5      OSUl)        UR                  R	                  S(5      (       a  UR                  R	                  S(5      OSUl*        UR                  R	                  S)5      (       a  UR                  R	                  S)5      OSUl+        UR                  R	                  S*5      (       a  UR                  R	                  S*5      OSUl,        UR                  R	                  S+5      (       a  UR                  R	                  S+5      OSUl-        UR                  R	                  S,5      (       a  UR                  R	                  S,5      OSUl.        UR                  R	                  S-5      (       a  UR                  R	                  S-5      OSUl/        UR                  R	                  S.5      (       a  UR                  R	                  S.5      OSUl0        URc                  5         [d        Rf                  " US/5        [i        S0US19$ ! [        Rj                   a$    [d        Rl                  " US25        [i        S0US19s $ f = f)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.userPermissionsr`   z,Permissions for this user type do not exist.)7printr2   r   rQ   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   rZ   r   r\   r   rc   r1   )r&   r'   r[   r]   s       r(   r8   UserPermissionsView.post   s   9	6',,%--11r1BKqxq}q}  rB  rB  Cd  re  re',,:J:JKl:m  klK7ovo{o{oo  Aa  pb  pb9I9IJj9k  hiK6u|  vB  vB  vF  vF  Gj  vk  vkGLL<L<LMp<q  qrK9 ~E  ~J  ~J  ~N  ~N  Ov  ~w  ~w@P@PQx@y  }~K= |C  |H  |H  |L  |L  Ms  |t  |tw||?O?OPv?w  z{K< BI  BN  BN  BR  BR  S|  B}  B}',,BRBRS|B}  CDK?mtmymym}m}  ^  n_  n_8H8HIh8i  efK5mtmymym}m}  ^  n_  n_8H8HIh8i  efK5krkwkwk{k{  }[  l\  l\w||7G7GHf7g  bcK4qxq}q}  rB  rB  Cd  re  re',,:J:JKl:m  klK7szss  tD  tD  Eg  th  th7<<;K;KLn;o  noK8qxq}q}  rB  rB  Cd  re  re',,:J:JKl:m  klK7szss  tD  tD  Eg  th  th7<<;K;KLn;o  noK8w~  xD  xD  xH  xH  Im  xn  xnW\\=M=MNr=s  tuK:qxq}q}  rB  rB  Cd  re  re',,:J:JKl:m  klK7ovo{o{oo  Aa  pb  pb9I9IJj9k  hiK6qxq}q}  rB  rB  Cd  re  re',,:J:JKl:m  klK7u|  vB  vB  vF  vF  Gj  vk  vkGLL<L<LMp<q  qrK9u|  vB  vB  vF  vF  Gj  vk  vkGLL<L<LMp<q  qrK9u|  vB  vB  vF  vF  Gj  vk  vkGLL<L<LMp<q  qrK9 |C  |H  |H  |L  |L  Ms  |t  |tw||?O?OPv?w  z{K< @G  @L  @L  @P  @P  Qy  @z  @zAQAQRzA{  @AK> @G  @L  @L  @P  @P  Qy  @z  @zAQAQRzA{  @AK> |C  |H  |H  |L  |L  Ms  |t  |tw||?O?OPv?w  z{K< zA  zF  zF  zJ  zJ  Kp  zq  zqgll>N>NOt>u  wxK; |C  |H  |H  |L  |L  Ms  |t  |tw||?O?OPv?w  z{K< @G  @L  @L  @P  @P  Qy  @z  @zAQAQRzA{  @AK>mtmymym}m}  ^  n_  n_8H8HIh8i  efK5krkwkwk{k{  }[  l\  l\w||7G7GHf7g  bcK4qxq}q}  rB  rB  Cd  re  re',,:J:JKl:m  klK7 @G  @L  @L  @P  @P  Qy  @z  @zAQAQRzA{  @AK> ~E  ~J  ~J  ~N  ~N  Ov  ~w  ~w@P@PQx@y  }~K= @G  @L  @L  @P  @P  Qy  @z  @zAQAQRzA{  @AK> DK  DP  DP  DT  DT  U  D@  D@7<<CSCST~C  FGK@ovo{o{oo  Aa  pb  pb9I9IJj9k  hiK6mtmymym}m}  ^  n_  n_8H8HIh8i  efK5ovo{o{oo  Aa  pb  pb9I9IJj9k  hiK6szss  tD  tD  Eg  th  th7<<;K;KLn;o  noK8szss  tD  tD  Eg  th  th7<<;K;KLn;o  noK8 zA  zF  zF  zJ  zJ  Kp  zq  zqgll>N>NOt>u  wxK;w~  xD  xD  xH  xH  Im  xn  xnW\\=M=MNr=s  tuK: zA  zF  zF  zJ  zJ  Kp  zq  zqgll>N>NOt>u  wxK; ~E  ~J  ~J  ~N  ~N  Ov  ~w  ~w@P@PQx@y  }~K= ~E  ~J  ~J  ~N  ~N  Ov  ~w  ~w@P@PQx@y  }~K=W&IJ-"55'' 	6NN7$RS-"55	6s   n:n= =5o54o5r:   N)r   r;   r:   r+   r(   r   r      s    v:6r+   r   c                        \ rS rSrS rS rSrg)LetterBoxViewi  c                     [         R                  R                  5       n[        R                  R                  5       n[	        USX#S.5      $ )Nzletter-box.html)rL   
letter_box)r   rQ   rR   r   r   )r&   r'   rL   r   s       r(   r)   LetterBoxView.get	  s?    +33779!))--/
g0HX2tuur+   c                    [        5       nUR                  S   Ul        UR                  S   Ul        UR                  R	                  S5      Ul        UR                  R	                  S5      Ul        UR                  R	                  S5      Ul        UR                  R	                  S5      Ul        UR                  R	                  S5      Ul	        UR                  R	                  S5      Ul
        UR                  R	                  S	5      Ul        UR                  R	                  S
5      Ul        UR                  5         [        R                   " US5        [#        S5      $ )Nreceipt_typedater   namerk   reference_noletter_typesubjectdescriptionpdf$Letter Box entry added successfully.	letterBox)r   r2   r   r   r)   r   r   department_idr   r   r   r   FILESr   rZ   r   r\   r   )r&   r'   r   s      r(   r8   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+   r:   Nr;   r:   r+   r(   r   r     s    v
%r+   r   c                        \ rS rSrS rS rSrg)
LetterViewi   c                     [         R                  R                  US9nUR                  5         [        R
                  " US5        [        S5      $ ! [         R                   a%    [        R                  " US5        [        S5      s $ f = f)Nr`   z&Letter Box entry deleted successfully.r    Letter Box entry does not exist.)	r   rQ   r)   rb   r   r\   r   rc   r1   r&   r'   r[   letters       r(   r)   LetterView.get"  st    	)!))--2-6FMMOW&NOK(((( 	)NN7$FGK((	)s   AA 6B
	B
c                     [         R                  R                  US9nUR                  S   Ul        UR                  S   Ul        UR                  R                  S5      Ul        UR                  R                  S5      Ul        UR                  R                  S5      Ul        UR                  R                  S5      Ul	        UR                  R                  S5      Ul
        UR                  R                  S	5      Ul        UR                  R                  S
5      Ul        SUR                  ;   a   UR                  R                  S5      Ul        UR                  5         [         R"                  " US5        [%        S5      $ ! [         R&                   a%    [         R(                  " US5        [%        S5      s $ f = f)Nr`   r   r   r   r   rk   r   r   r   r   r   r   r   r   )r   rQ   r)   r2   r   r   r   r   r   r   r   r   r   r   r   rZ   r   r\   r   rc   r1   r   s       r(   r8   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	 	6GGr:   Nr;   r:   r+   r(   r   r      s    ))r+   r   c                       \ rS rSrS rSrg)ForgotPasswordiD  c                 (    [        USS[        05      $ )Nzforgot-password.htmlr$   )r   r
   r%   s     r(   r)   ForgotPassword.getF  s    g5AR7STTr+   r:   NrF   r:   r+   r(   r   r   D  s    Ur+   r   c                     [         R                  R                  U R                  R                  S5      S9nSR	                  S [        S5       5       5      nX R                  S'   UR                  U R                  S'   SnUR                  /n[        S	[        R                  UR                  US
.5      n[        U5      n[        X6[        R                  U5      nUR!                  US5        UR#                  5         [%        SSS.SS9$ ! [         R&                   a    [%        SSS.SS9s $ [(         a  n[%        SSS.SS9s S nA$ S nAff = f)Nr-   )r-   rv   c              3   N   #    U  H  n[         R                  " S 5      v   M     g7f)
1234567890Nrz   r}   s     r(   r   sendOtp.<locals>.<genexpr>N  s     EHqv}}\22Hr      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   rQ   r)   r2   r   r   sessionr[   r-   r   r   LOGO_URLr   r   r   EMAIL_HOST_USERattach_alternativesendr   rc   	Exception)	r'   r7   r   r   to_emailhtml_templatetext_contentr-   es	            r(   sendOtpr  J  s-   u}}  )9)9')B CggEE!HEF!$%)WW	"*JJ<()<HYHYdhdmdmx{>|}!-0&wh>V>VX`a  <

)GRUV]bcc Y)<sKRWXX u)Xcfgnsttus$   D	D !E/	E8E
E
Ec                     U R                   R                  S5      nXR                  S   :X  a  [        SSS.SS9$ [        SSS.SS9$ )	Nr   zOTP Matchedr  r  Fr  zOTP Not Matchedr  )r2   r)   r	  r   )r'   r   s     r(   	verifyOtpr  _  sK    
,,

5
!C
ooe$$EERR):SIPUVVr+   c                 x    U R                   R                  S5      n[        R                  R                  U R                  S   S9nUR                  U5        UR                  5         [        SSS.SS9$ ! [        R                   a    [        S	S
S.SS9s $ [         a  n[        SS
S.SS
S9s S nA$ S nAff = f)Nr.   r   r`   zpassword changed succesfullyr  r  Fr  zUser does't existr  r  )r  r  )
r2   r)   r   rQ   r	  r   rZ   r   rc   r  )r'   r.   r7   r  s       r(   changePasswordr  h  s    	<<##J/}}  gooi&@ A(#		'EPST[`aa W':SIPUVV 'Vadelqz}~~s$   A2A5 5!B9	B9!B4.B94B9)9r{   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    rB   rH   rU   rh   rr   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+   