
    Li
                     |   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 d dlmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z- d dl.m/Z/ d d	l0m1Z1m2Z2 d d
l+m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z:m;Z; d dl<m=Z= d dl>Z>d dl?Z?d dl@Z@d dlAZAd ZB e*d          d             ZCd ZDd ZEd ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd  ZPd! ZQd" ZRd# ZSd$ ZTd% ZUd& ZVd' ZWd( ZXd) ZYd* ZZd+ Z[d, Z\d- Z]d. Z^d/ Z_d0 Z`d1 Zad2 Zbd3 Zcd4 Zdd5 Zed6 Zfd7 Zgd8 Zhd9 Zid: Zjd; Zkd< ZldS )=    )generate_receipt_pdfwhatsapp_send_approveemail_send_approvesms_send_approveemail_send_rejectsms_send_rejectwhatsapp_send_rejectemail_send_unverifysms_send_unverifywhatsapp_send_unverifysms_send_responseemail_send_responsewhatsapp_send_responsegenerate_report_pdfgenerate_80mm_receipt_pdf)	BankDetails
BeneficialProjectInstitutionProjectImage
CustomUserReportsNotificationPreferenceProjectUpdates)TransactionReceipt
ScreenshotContactMessageMessageReplyReceipt80mm)renderredirectget_object_or_404)logoutauthenticatelogin)login_requiredtransaction)ContentFile)DecimalInvalidOperation)IntegrityError)messages)timezone)FQCount)BytesIONc                    | j         dk    r| j                            d          }| j                            d          }t          | ||          }|Qt	          | |           |j        s|j        rt          d          S t          j	        | d           t          d          S t          j	        | d           t          d          S t          | d	          S )
NPOSTusernamepasswordr6   r7   z/administrator/admin-dash/z*You do not have administrative privileges./administrator/z/Invalid username or password. Please try again.zadmin-login.html)methodr5   getr%   r&   is_staffis_superuserr"   r.   errorr!   )requestr6   r7   users       >C:\Users\anoop\OneDrive\Desktop\AspireAid\adminModule\views.py
adminLoginrB      s    ~<##J//<##J//GhJJJ'4   } 3 1 3 <===w(TUUU 1222N7$UVVV-...'-...    r9   )	login_urlc           
      <
   | j         j        rt          j                                                                        }t          j                            t          j                                                              }t          j                            t          d                                                    }t          j                            t          j                    t          d                                                    }t          j                                                                        }t          j                            d                                          }t          j                            d                                          }t          j                            d                                          }t          j                            t          d	
          d	                              d          d d         }	n| j         j        r| j         j        r| j         j        j        s$t!          j        | d           t%          d          S t          j                            | j         j                                                  }t          j                            | j         j        t          j                                                              }t          j                            | j         j        t          d                                                    }t          j                            | j         j        t          j                    t          d                                                    }t          j                            | j         j                                                  }t          j                            | j         j        d                                          }t          j                            | j         j        d                                          }t          j                            | j         j        d                                          }t          j                            t          d	
          | j         j        d	                              d          d d         }	nt%          d          S |||	||||||d	}
t'          | d| j         |
d          S )N)closed_by__ltefunding_goalcurrent_amount__gte)rF   current_amount__ltVerifiedstatus
UnverifiedRejectedTclosed_by__isnulltable_status-started_at   BYour account or institution has been deactivated by the superuser./administrator/logout/
created_by)rY   rF   )rY   rI   )rY   rF   rJ   project__created_by)r[   rM   )rY   rS   r9   )	all_prjcls_prjlst_prjcmp_prjfail_prjall_traver_tra	unver_trarej_trazadmin-dashboard.html)admincontext)r@   r=   r   objectsallcountfilterr/   nowr0   r   r1   order_byr<   rS   institutionr.   r>   r"   r!   )r?   r\   
closed_prjcompleted_prj
failed_prjra   rb   rc   rd   latest_projectsrf   s              rA   adminDashboardrr   .   sW   |  +/%%''--//_++8<>>+JJPPRR
..1^CTCT.UU[[]]_++8<>>^_`n^o^o+ppvvxx
%))++1133%,,J,??EEGG'..l.CCIIKK	%,,J,??EEGG!/00T1J1J1JY]0^^gghuvvwyxywyz		 +|( 	60H0U 	6N7$hiii4555/((GL4L(MMSSUU_++w|7O`h`l`n`n+oouuww
..',:Rhijxhyhy.zz  A  A  C  C_++w|7O`h`l`n`n  CD  ES  CT  CT+  U  U  [  [  ]  ]
%,,AY,ZZ``bb%,,AYbl,mmssuu'..7<C[dp.qqwwyy	%,,AYbl,mmssuu!/00T1J1J1JV]VbVn  ~B0  C  C  L  L  MZ  [  [  \^  ]^  \^  _ )*** zoZguwYSZ] ]G '1W\U\3]3]^^^rC   c                 h    t          |            t          j        | d           t          d          S )Nz&You have been logged out successfully.r9   )r$   r.   warningr"   r?   s    rA   adminLogOutrv   X   s0    
7OOOWFGGG%&&&rC   c                 2    t          | dd| j        i          S )Nzadmin-credit.htmlre   )r!   r@   ru   s    rA   adminCreditrx   ^   s    './EFFFrC   c                    | j         j        r3| j         j        s$t          j        | d           t          d          S d }n| j         j        rl| j         j        r| j         j        j        s$t          j        | d           t          d          S t          j	        
                    | j         j                  }n$t          j        | d           t          d          S | j        dk    r	| j        
                    d          }| j        
                    d	          }| j        
                    d
          }| j        
                    d          }	 t          j                    5  || j         _        || j         _        || j         _        || j         _        | j                                          | j         j        r| j         j        r| j        
                    d          }| j        
                    d          }| j        
                    d          }| j         j        }	||	_        ||	_        ||	_        |	                                 d d d            n# 1 swxY w Y   t          j        | d           t          d          S # t0          $ r' t          j        | d           t          d          cY S t2          $ r1}
t          j        | d|
            t          d          cY d }
~
S d }
~
ww xY wt5          | d| j         |d          S )N7Your account has been deactivated by another superuser.rW   @Your account or institution has been deactivated by a superuser.rm   /Your Don't have permission to access this page.r9   r5   
first_name	last_nameemailphn_noinstitution_nameinstitution_phninstitution_addresszProfile updated successfully!/administrator/profile/zEFailed to update profile. The provided email might already be in use.An unexpected error occurred: zadmin-profile.html)re   
preference)r@   r=   rS   r.   r>   r"   r<   rm   r   rg   r;   r:   r5   db_transactionatomicr~   r   r   r   saver   phnaddresssuccessr-   	Exceptionr!   )r?   r   r~   r   r   r   r   r   r   instes              rA   adminProfiler   c   s9   |  +|( 	6N7$]^^^4555

		 +|( 	60H0U 	6N7$fggg4555+377W\E]7^^

w QRRR)***~\%%l33
L$$[11	  ))!!(++	7&((    *4')2&%*"&,#!!###<( 	 W\-E 	 '.|'7'78J'K'K$&-l&6&67H&I&IO*1,*:*:;P*Q*Q'"<3D,<D).DH#6DLIIKKK!                             $ W&EFFF5666 	7 	7 	7N7$klll566666 	7 	7 	7N7$HQ$H$HIII566666666	7 '/7<V`1a1abbbsI   J $C%I	J IJ I&J .K.4	K.=&K)#K.)K.c                    | j         j        s| j         j        st          d          S | j         j        r| j         j        r5| j         j        j        s$t          j        | d           t          d          S | j        dk    rt          d          S | j	        
                    d          }| j	        
                    d          }| j	        
                    d          }| j                             |          s$t          j        | d	           t          d          S 	 t          j                    5  d
}| j	        
                    d          }|r|| j         j        k    rpt          j                            |                                          r0t          j        | d           t          d          cd d d            S || j         _        d}|rT|rR||k    r0t          j        | d           t          d          cd d d            S | j                             |           d}| j         j        r	| j         j        r| j	        
                    d          }| j	        
                    d          }| j         j        }|r||j        k    rt*          j                            |                              |j                                                  r0t          j        | d           t          d          cd d d            S ||_        d}|r||j        k    r	||_        d}|r|                                 | j                                          |rwt          j        | d           |r_t7          | | j         j        |          }	|	t9          | |	           nFt          j        | d           t          d          cd d d            S nt          j        | d           t          d          cd d d            S # 1 swxY w Y   d S # t<          $ r.}
t          j        | d           t          d          cY d }
~
S d }
~
wt>          $ r1}
t          j        | d|
            t          d          cY d }
~
S d }
~
ww xY w)Nr9   rV   rW   r5   r   old_passwordnew_passwordconfirm_passwordz1Invalid current password. Changes were not saved.Fnew_username)r6   z>This username is already taken. Please choose a different one.Tz/New password and confirm password do not match.institution_emailinstitution_app_password)r   idz@This institution email is already in use by another institution.z%Account details updated successfully!r8   zKYour password has been updated. Please log in again with your new password.z8No changes were detected. Your profile remains the same.zmAn integrity error occurred. This is likely because the username or email is already taken. Please try again.z0An unexpected error occurred during the update: ) r@   r=   r<   r"   rS   rm   r.   r>   r:   r5   r;   check_passwordr   r   r6   r   rg   rj   existsset_passwordr   r   excluder   email_app_passwordr   r   r%   r&   infor-   r   )r?   r   r   r   updated_somethingr   r   r   r   r@   r   s              rA   update_account_detailsr      sz   L% +)> +)***<$ 2)> 2w|G_Gl 2w deee0111~1222<##N33L<##N33L|''(:;;<&&|44 3w STTT1222=3"$$ 5	7 5	7 %"<++N;;L )0E E E%,,l,CCJJLL ?N7,lmmm#$=>>5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 )5%$(! ) 0 )#333N7,]^^^#$=>>5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7  )),777$(! |$  )A  $+L$4$45H$I$I!+2<+;+;<V+W+W(|/$ -):dj)H)H"*118I1JJRRVZV]R^^eegg C w0rsss'(ABB;5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7< "3DJ(,%+ -0HDLc0c0c.FD+(,%$  IIKKKL  
c *QRRR B'',:OZfgggD'gt,,,, g.{|||'(@AAe5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7XB g'abbb566k5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7 5	7n  3 3 3w   P  	Q  	Q  	Q122222222 3 3 3w VST V VWWW1222222223s   P	 /BO<3P	  ;O<;P	 C0O<8P	 B9O<>P	 $O</P	 <P  P	 P P	 	
Q:#P<6Q:<Q:	&Q5/Q:5Q:c                 \   | j         j        s| j         j        r| j        dk    rl| j                            d          }|r;|| j         _        | j                                          t          j	        | d           nt          j
        | d           t          d          S t          d          S )Nr5   	admin_imgz3Your profile picture has been updated successfully!,No image was uploaded. Please select a file.r   r9   )r@   r=   r<   r:   FILESr;   profile_picr   r.   r   r>   r"   r?   uploaded_imgs     rA   adminProfilePicturer      s    |  +GL$9 +>V##"=,,[99L X+7(!!### *_````w(VWWW1222)***rC   c                 p   | j         j        s| j         j        r| j        dk    rv| j                            d          }|rE|| j         j        _        | j         j                                         t          j
        | d           nt          j        | d           t          d          S t          d          S )Nr5   inst_imgz:Institution profile picture has been updated successfully!r   r   r9   )r@   r=   r<   r:   r   r;   rm   institution_imgr   r.   r   r>   r"   r   s     rA   adminInstitutionPicturer      s    |  +GL$9 +>V##"=,,Z88L X;G(8(--/// *fggggw(VWWW1222)***rC   c                 *   | j         j        r| j         j        r| j         j        r| j         j        j        s$t	          j        | d           t          d          S t          j        	                    | j         j                  }| j
        dk    rSd| j        v |_        d| j        v |_        d| j        v |_        |                                 t	          j        | d           t          d	          S t	          j        | d
           t          d	          S )N1Your account or institution has been deactivated.rW   r|   r5   email_enabledwhatsapp_enabledsms_enabledz+Notification preferences have been updated.r   9You do not have the required permissions for this action.)r@   r<   rm   rS   r.   r>   r"   r   rg   r;   r:   r5   r   r   r   r   r   )r?   prefss     rA   adminUpdateNotificationr     s   | 3!9 3|( 	60H0U 	6N7$WXXX4555%-11gl>V1WW>V##"1W\"AE%77<%GE" - =EJJLLLW&STTT1222N7WXXX-...rC   c                    | j         j        r| j         j        r| j         j        r| j         j        j        s$t	          j        | d           t          d          S t          j        	                    | j         j        dddd          \  }}|s)d|_
        d|_        d|_        |                                 t	          j        | d           t          d          S t	          j        | d           t          d          S )	Nr   rW   T)r   r   r   )rm   defaultszKNotification preferences have been reset to default (all services enabled).r   r   )r@   r<   rm   rS   r.   r>   r"   r   rg   get_or_creater   r   r   r   r   )r?   r   createds      rA   adminDefaultNotificationr     s   | 3!9 3|( 	60H0U 	6N7$WXXX4555/7EERYR^Rj_cy}  QU  PV  PV F W Ww 	 $E%)E""&EJJLLL"oppp1222N7WXXX-...rC   c                 ^   | j         j        s$t          j        | d           t	          d          S | j         j        s$t          j        | d           t	          d          S t          j                                        }| j	        
                    d          }| j	        
                    d          }| j	        
                    d          }| j	        
                    d          }| j	        
                    d	          }t                      }|r|t          |
          z  }|r|t          |          z  }|r|t          |          z  }|r3|dk    r|t          d          z  }n|dk    r|t          d          z  }|r|                    |          }|r7|dk    r|                    d          }n|dk    r|                    d          }| j        dk    r| j        
                    d          }| j        
                    d          }	| j        
                    d          }
| j        
                    d          }| j        
                    d          }	 t!          j                    5  t          ||||	|
          }|                                 t'          |          }|                                 d d d            n# 1 swxY w Y   t          j        | d| d           n# t*          $ r\}dt-          |                                          v rt          j        | d            nt          j        | d!| d"           Y d }~n3d }~wt0          $ r#}t          j        | d#| d$           Y d }~nd }~ww xY wt	          d%          S t3          | d&| j         |d'          S )(N2You do not have permission to perform this action.r9   rz   rW   r   email_filterphone_filterstatus_filter
name_order)institution_name__icontainsemail__icontains)phn__icontainsactiveTrR   inactiveFascdescz-institution_namer5   	inst_name
inst_emailinst_app_pwdinst_phninst_address)r   r   r   r   r   r|   zRegistered z Successfully.r   zCRegistration failed: An institution with this email already exists.z6Registration failed due to a database integrity error z. Please check your inputs.z;Failed to register new institution due to an unknown error ./administrator/all-institution/zadmin-all-institution.html)re   institutions)r@   r=   r.   r>   r"   rS   r   rg   rh   GETr;   r1   rj   rl   r:   r5   r   r   r   r   r   r-   strlowerr   r!   )r?   r   r   r   r   r   r   filter_conditionsr   r   r   r   r   new_instinst_noti_prefr   s                   rA   adminAllInstitutionr   1  s0   <$ +w TUUU)***<$ 2w YZZZ0111""$$D{'9::;??>22L;??>22LKOOO44M..J MQ;KLLLL >Q==== <Ql;;;; 7H$$!5!5!55j((!6!6!66 .{{,-- 6==!344DD6!!==!455D~L$$[11	\%%l33
|''77<##J//|''77	h&(( & &&	<]emw:FH H H!7H!M!M!M##%%%& & & & & & & & & & & & & & & W&MI&M&M&MNNNN 	A 	A 	A#a&&,,..((w(mnnnnw(ab(((  A  A  A 	h 	h 	hN7$fbc$f$f$fgggggggg	h9:::'77<ae9f9fgggsJ   "K3 5AKK3 KK3 KK3 3
N=AMN!M??Nc                 L   | j         j        s$t          j        | d           t	          d          S t          t          |          }| j        dk    rD	 t          j	                    5  | j
                            d          }| j
                            d          }| j
                            d          }| j
                            d          }| j
                            d	          }||_        ||_        ||_        ||_        |r||_        |                                 d d d            n# 1 swxY w Y   t          j        | d
|j         d           n/# t&          $ r"}t          j        | d|            Y d }~nd }~ww xY wt	          d          S t	          d          S )Nr   r9   r   r5   r   r   r   r   r   zInstitution " " has been updated successfully.zFailed to update institution: r   )r@   r=   r.   r>   r"   r#   r   r:   r   r   r5   r;   r   r   r   r   r   r   r   r   )	r?   iidrm   r   r   r   r   r   r   s	            rA   adminUpdateInstitutionr   w  s   <$ +w TUUU)***#KC888K~	J&(( # ##*<#3#3K#@#@ $+L$4$4\$B$B!"),"2"2:">">&-l&6&6~&F&F#+2<+;+;N+K+K(/?,$5!"1&9#+ N5MK2  """# # # # # # # # # # # # # # #  W&tk6R&t&t&tuuuu 	J 	J 	JN7$HQ$H$HIIIIIIII	J9:::9:::s=   E 'B<D/#E /D33E 6D37!E 
F#F  Fc                 2   | j         j        s$t          j        | d           t	          d          S t          t          |          }	 t          j                    5  |j	        r&d|_	        t          j
        | d|j         d           n%d|_	        t          j        | d|j         d           |                                 d d d            n# 1 swxY w Y   n0# t          $ r#}t          j        | d	| d
           Y d }~nd }~ww xY wt	          d          S )Nr   r9   r   FInstitution  has been deactivated.T! has been activated successfully.z4Failed to change institution status due to an error r   r   )r@   r=   r.   r>   r"   r#   r   r   r   rS   rt   r   r   r   r   )r?   r   rm   r   s       rA   AdminChangeInstitutionStatusr     s   <$ +w TUUU)***#KC888K
]"$$ 	 	' y+0( *m9U*m*m*mnnnn+/( )w8T)w)w)wxxx	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  ] ] ]w [WX [ [ [\\\\\\\\]5666s=   C A'CC CC CC 
D$DDc                    | j         j        s$t          j        | d           t	          d          S t          t          |          }|                                 t          j        | d|j	         d           t	          d          S )Nr   r9   r   r    has been permanently deleted.r   )
r@   r=   r.   r>   r"   r#   r   deletert   r   )r?   r   rm   s      rA   adminDeleteInstitutionPermanentr     s    <$ +w TUUU)***#KC888KWi[-Iiiijjj5666rC   c           
           j         j        st          d          S  j         j        s$t	          j         d           t          d          S t          j                            d          }t          j        
                                } j        dk    rt           fddD                       r  j                            d	          } j                            d
          } j                            d          } j                            d          } j                            d          } j                            d          } j                            d          }	 j                            d          }
t                      }|r$|t          |          t          |          z  z  }|r|t          |          z  }|r|t          |          z  }|r|t          |          z  }|r|t          |          z  }|r3|dk    r|t          d          z  }n|dk    r|t          d          z  }|                    |          }|	r |                    |	dk    rdnd d          }|
r |                    |
dk    rdnd d          }t#           d  j         ||d!          S  j        d"k    r j                            d          } j                            d#          } j                            d$          } j                            d%          } j                            d&          } j                            d'          } j                            d(          }	 t          j                            |)          }t          j                            |||||d||*           t	          j         d+| d,| d-|j         d.           t          d/          S # t,          $ r' t	          j         d0           t          d/          cY S t.          $ r1}t	          j         d1|            t          d/          cY d }~S d }~ww xY wt#           d  j         ||d!          S )2Nr9   rz   rW   T)r<   r   c              3   *   K   | ]}|j         v V  d S N)r   ).0paramr?   s     rA   	<genexpr>z%adminAllInstiAdmin.<locals>.<genexpr>  sB       'l 'lu'; 'l 'l 'l 'l 'l 'lrC   )
admin_nameinstitution_filteradmin_usernameadmin_emailadmin_phoner   r   institution_orderr   r   r   r   r   r   r   r   first_name__icontainslast_name__icontains)(institution__institution_name__icontains)username__icontainsr   )phn_no__icontainsr   rR   r   Fr   - r~   institution__institution_namezadmin-all-insti-admin.html)re   r   administratorsr5   r   r   r   r   r6   r7   r   )r~   r   r   rm   r6   r<   r   r7   zRegistered new admin  z for r   /administrator/all-insti-admin/zUFailed to register new admin. A user with this username or email might already exist.r   )r@   r=   r"   rS   r.   r>   r   rg   rj   r   rh   r:   anyr   r;   r1   rl   r!   r5   create_userr   r   r-   r   )r?   r   r   r   r   r   r   r   r   r   r   r   	firstnamelastnameemr   usrpwdinsr   s   `                   rA   adminAllInstiAdminr    s   <$ +)***<$ 2w YZZZ0111  '...==N""$$D ~3 'l 'l 'l 'l(k'l 'l 'l $l $l [__\22
$[__-ABB )9::koom44koom4488[__\22
#KOO,?@@CC 	j!D!D!Dq^hGiGiGi!ii 	`L^!_!_!__ 	G~!F!F!FF 	AK!@!@!@@ 	B[!A!A!AA 	;((!QD%9%9%99!!*,,!QE%:%:%::!'../@AA 	i+44zV?S?SY[5g5g5ghhN 	^+44+v55332\\\^ ^N g; 'dn]]_ _ 	_ ~L$$\22	<##K00\g&&lx((|,,lz**lz**	?%))T)22C**i(Y[7:CQU]`jm + o o oW&pi&p&p(&p&pY\Ym&p&p&pqqq=>>> 	? 	? 	?N7rt t t=>>>>> 	? 	? 	?N7$HQ$H$HIII=>>>>>>>>	?
 '7',X\p~88  A  A  As%   6A9O0 0.Q 	Q)&QQQc                     | j         j        s$t          j        | d           t	          d          S t          t          |          }| j        dk    r	 t          j	                    5  | j
                            d          }| j
                            d          }|                    |          s0t          j        | d           t	          d          cd d d            S |r|                    |           | j
                            d	          |_        | j
                            d
          |_        | j
                            d          |_        | j
                            d          |_        | j
                            d          |_        | j
                            d          }t          t&          |          |_        |                                 d d d            n# 1 swxY w Y   t          j        | d|j         d           nP# t.          $ r t          j        | d           Y n/t0          $ r#}t          j        | d| d           Y d }~nd }~ww xY wt	          d          S t	          d          S )Nr   r9   r   r5   r7   r   z)Incorrect old password. Please try again.r   r~   r   r   r   r6   r   zAdmin "r   zMA user with this username or email already exists. Please use a unique value.z2Failed to update admin due to an unexpected error r   )r@   r=   r.   r>   r"   r#   r   r:   r   r   r5   r;   r   r   r~   r   r   r   r6   r   rm   r   r   r-   r   )r?   aidadmin_to_updater   r   inst_idr   s          rA   adminUpdateInstitutionAdminr  	  s   <$ +w TUUU)***'
s;;;O~	_&(( ' '&|//
;;&|//0BCC&55lCC GN7,WXXX#$EFF' ' ' ' ' ' ' '   ?#00>>>-4\-=-=l-K-K*,3L,<,<[,I,I)(/(8(8(A(A%)0)9)9()C)C&+2<+;+;J+G+G(!,**;77.?PW.X.X.X+$$&&&'' ' ' ' ' ' ' ' ' ' ' ' ' ' '* W&j0H&j&j&jkkkk 	u 	u 	uN7$sttttt 	_ 	_ 	_N7$]YZ$]$]$]^^^^^^^^	_9:::9:::sP   H 'A-G(H !C;G(H (G,,H /G,0!H I3	I<IIc           	         | j         j        s$t          j        | d           t	          d          S t          t          |          }|j        | j         j        k    r$t          j        | d           t	          d          S 	 t          j	                    5  |j
        r.d|_
        t          j        | d|j         d|j         d	           n-d
|_
        t          j        | d|j         d|j         d           |                                 d d d            n# 1 swxY w Y   n0# t           $ r#}t          j        | d| d           Y d }~nd }~ww xY wt	          d          S )Nr   r9   r   z'You cannot deactivate your own account.r   FAdmin  of r   Tr   z.Failed to change admin status due to an error r   )r@   r=   r.   r>   r"   r#   r   r   r   r   rS   rt   r6   rm   r   r   r   )r?   r	  institutionadminr   s       rA   !AdminChangeInstitutionAdminStatusr  1  s   <$ +w TUUU)***(<<<glo--w IJJJ9:::
W"$$ 	$ 	$, R05 -   +G3C3L  +G  +GRbRn  +G  +G  +G  H  H  H  H04 -   *Q2B2K  *Q  *QQaQm  *Q  *Q  *Q  R  R  R!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$  W W Ww UQR U U UVVVVVVVVW5666s=   D# A7DD# DD# DD# #
E-EEc                 T   | j         j        s$t          j        | d           t	          d          S t          t          |          }|j        | j         j        k    r$t          j        | d           t	          d          S |j        }|j	        }	 t          j                    5  |                                 d d d            n# 1 swxY w Y   t          j        | d| d| d           n0# t          $ r#}t          j        | d	| d
           Y d }~nd }~ww xY wt	          d          S )Nr   r9   r   z#You cannot delete your own account.r   r  r  r   z'Failed to delete admin due to an error r   )r@   r=   r.   r>   r"   r#   r   r   r6   rm   r   r   r   rt   r   )r?   r	  admin_to_deleter   admin_institutionr   s         rA   adminDeletePermanentr  H  s   <$ +w TUUU)***'
s;;;OW\_,,w EFFF9:::$-N'3P"$$ 	% 	%""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%"p>"p"p?P"p"p"pqqqq P P Pw N! N N NOOOOOOOOP5666s<   C+ "C7C+ CC+ 
CC+ +
D5DDc                    | j         j        rO| j         j        s$t          j        | d           t          d          S t          j                                        }n| j         j	        rl| j         j        r| j         j
        j        s$t          j        | d           t          d          S t          j                            | j         j
                  }n$t          j        | d           t          d          S | j                            d          }| j                            d          }| j                            d	          }| j                            d
          }| j                            d          }| j                            d          }| j                            d          }|r|                    |          }|rc|dk    r|                    d          }nF|dk    r|                    d          }n)|dk    r#|                    t          d                    }|rYt          j                            |d                              t          j        j                  }	|                    |	          }|rYt          j                            |d                              t          j        j                  }
|                    |
          }|dk    r|                    d          }n|dk    r|                    d          }n|dk    r|                    d          }ni|dk    r|                    d          }nM|dk    r|                    d           }n1|dk    r|                    d!          }n|                    d"          }|D ]}|j        |j        k    rd#|_        t1          | d$|| j         d%          S )&Nrz   rW   r{   rX   z.Your Don't have permission to acces this page.r9   project_titleproject_status
start_dateend_dateamount_order
date_ordertarget_ordertitle__icontainsr   TrR   closedFr   rG   rH   %Y-%m-%dtzinfo)started_at__gte)started_at__lter   current_amountr   z-current_amount-funding_goal	closed_by
-closed_byrT   	Completedzadmin-all-projects.html)prjre   )r@   r=   rS   r.   r>   r"   r   rg   rh   r<   rm   rj   r   r;   r0   datetimestrptimereplacer/   utcrl   r&  rG   validityr!   )r?   projectsr  r  r  r  r  r  r  start_datetimeend_datetimeps               rA   adminAllProjectr5  _  s   |  +|( 	6N7$]^^^4555?&&((		 +|( 	60H0U 	6N7$fggg4555?))W\5M)NNw PQQQ)***KOOO44M[__%566N..J{z**H;??>22L..J;??>22L C??M?BB NX%%D99HHx''E::HHy((1^;L;LMMH C!*33J
KKSS[c[l[pSqq??>?BB A(11(JGGOOW_WhWlOmm??<?@@u$$%566			$$%677			$$^44			$$_55	u		$$[11	v		$$\22$$]33 % %q~--$AJ'4hQXQ]6^6^___rC   c           	      0   | j         dk    rt          d          S | j                            d          }| j                            d          }| j                            d          }| j                            d          }| j                            d          }| j                            d          }| j                            d	          }| j                            d
          }| j                            d          }		 |rt	          |          nt	          d          }
|rt	          |          nt	          d          }| j        j        j        }t          j	                    5  t          j                            ||||	|d          \  }}t          |||| j        j        |
|          }|                                 |r|j        r|j         d|j         }t$          j                            |          }d|j         d| }t+          j        |          }t/                      }|                    |d           d|j         d}|j                            |t5          |                                          d           d d d            n# 1 swxY w Y   t9          j        | d           nO# t<          $ r t9          j        | d           Y n.t@          $ r"}t9          j        | d|            Y d }~nd }~ww xY wt          d          S )Nr5   /administrator/all-project/titlegoaltvaluer   fnamelnamer   ageaddrr   )r   r=  )r~   r   phone_numberr   )r8  descriptionbeneficiaryrY   rG   
tile_valuer   zupi://pay?pa=z&pn=PNG)formatproject_z_qr.pngT)r   z,A new project has been created successfully.z5Invalid number format for funding goal or tile value.r   )!r:   r"   r5   r;   r+   r@   rm   default_bankr   r   r   rg   r   r   r   upi_idaccount_holder_first_nameaccount_holder_last_nameurllibparsequoteqrcodemaker3   r   qr_coder*   getvaluer.   r   r,   r>   r   )r?   r8  r9  tvalr   	ben_fname	ben_lnameben_phnben_ageben_addrrG   rB  bank_details
beneficiarr   new_project
payee_nameencoded_payee_namegoogle_pay_urlqr_imgbuffer	file_namer   s                          rA   adminAddProjectr`    s   ~5666LW%%E<F##D<H%%D<F##D  ))I  ))Ilu%%Glu%%G|''HF(,<wt}}}'!**&*:WT]]]


|/<"$$ 	_ 	_","4"B"Bicl  |CX`ipLsLs #C #u #uJ "4Zdkdpd|/;
T T TK _ 3 _ , FppInpp
%+\%7%7
%C%C"!^1D!^!^J\!^!^^44 F5111>{~>>>	#((K@Q@Q4R4RY](^^^!	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_$ 	"PQQQQ Y Y Yw WXXXXX F F Fw D D DEEEEEEEEF1222sD   A$J: *D#JJ: JJ:  J!J: :L	L$LLc           
         | j         j        s0| j         j        s$t          j        | d           t          d          S | j         j        s$t          j        | d           t          d          S t          t          |          }|j	        
                                                    d          }|j        dk    r t          |j        |j        z  dz  d	          nd|_        |j        dk    rt#          |j        |j        z            nd}t$          j                            |
                              dd                              d          }t-                      }t-                      }|D ]}d|_        |j        r|j        j        r~d |j        j                            d          D             }	t7          |	          |_        |j        dk    r|                    |	           z|j        dk    r|                    |	           t7          |          t7          |          z   }
||
z
  }d |D             }| j         ||||||||d	}t=          | d|          S )N.You don't have permission to access this page.r9   1Your account has been deactivated by a superuser.rW   r   z-update_dater   d      projecttiles_boughtsender-transaction_timec                 T    g | ]%}|                                 t          |          &S  )isdigitint)r   ns     rA   
<listcomp>z&adminSingleProject.<locals>.<listcomp>  s+    [[[qqyy{{[CFF[[[rC   r   rK   rN   c                 (    g | ]}|j         d k    |S )rK   rL   )r   ts     rA   rp  z&adminSingleProject.<locals>.<listcomp>  s$    OOO1J8N8NQ8N8N8NrC   )	re   rg  updatestransactionstotal_tiles_countavailable_tiles_countsold_tiles_setprocessing_tiles_setverified_transactionszadmin-single-projects.html)r@   r=   r<   r.   r>   r"   rS   r#   r   rs  rh   rl   rG   roundr&  progressrB  rn  r   rg   rj   select_relatedset	num_tilesrh  tilessplitlenrM   updater!   )r?   pidrg  rs  ru  rt  rw  rx  rr  tile_numbersunavailable_tiles_countrv  ry  rf   s                 rA   adminSingleProjectr    sz   <$ +W\-B +w PQQQ)***<$ 2w STTT0111C000Go!!##,,^<<GY`YmpqYqYqug4w7KKsRSTUUUwxGKRK]`aKaKaG0G4FFGGGgh&--g->>MMn^fggpp  rE  F  FLUUN55 : :> 	:an2 	:[[AN,@,F,Fs,K,K[[[Ll++AKx:%%%%l3333\))$++L999!.11C8L4M4MM-0GGOOOOO7\h.H]p~';Ujm mG '7AAArC   c                    | j         dk    rt          t          |          }	 | j                            d          |_        | j                            d          |_        | j                            d          |_        | j                            d          |_        |j	        }| j                            d          |_
        | j                            d          |_        | j                            d	          |_        | j                            d
          |_        | j                            d          |_        |                                 |                                 t!          j        | d           t%          d| d          S # t&          $ r5}t!          j        | d|            t%          d| d          cY d }~S d }~ww xY wt%          d| d          S )Nr5   r   r8  r9  r:  r   r;  r<  r   r=  r>  zProject updated successfully./administrator/single-project//z.An error occurred while updating the project: )r:   r#   r   r5   r;   r8  rG   rB  r@  rA  r~   r   r?  r=  r   r   r.   r   r"   r   r>   )r?   r  rg  beneficiary_instancer   s        rA   adminUpdateProjectr    s   ~#G444	E#L,,W55GM#*<#3#3F#;#;G !(!1!1(!;!;G"),"2"26":":G#*#6 .5l.>.>w.G.G +-4\-=-=g-F-F *070@0@0G0G -'.|'7'7'>'> $+2<+;+;F+C+C ( %%'''LLNNNW&EFFFCSCCCDDD 	E 	E 	EN7$XUV$X$XYYYCSCCCDDDDDDDD	E ;S;;;<<<s   E-F 
G*GGGc                 f   | j         j        s| j         j        rt          t          |          }|j         }||_        |                                 |rt          j        | d|j	         d           nt          j
        | d|j	         d           t          d| d          S t          d          S )Nr   zThe project z has been enabled.z has been disabled.r  r  r9   )r@   r=   r<   r#   r   rS   r   r.   r   r8  rt   r"   )r?   r  project_instance
new_statuss       rA   adminChangeProjectStatusr    s    |  +GL$9 +,W===)66
(2% 	bW&_5E5K&_&_&_````W&`5E5K&`&`&`aaa????@@@)***rC   c                     | j         j        s| j         j        rNt          t          |          }|                                 t          j        | d           t          d          S t          d          S )Nr   zA project has been deleted.r7  r9   )	r@   r=   r<   r#   r   r   r.   rt   r"   )r?   r  r  s      rA   adminDeleteProjectr    sr    |  +GL$9 +,W===!!!"?@@@5666)***rC   c                 r   | j         j        s0| j         j        s$t          j        | d           t          d          S | j        dk    rt          t          |          }| j	        
                    d          }| j	        
                    d          }|r|s(t          j        | d           t          d| d	          S 	 t          j                            |||
           t          j        | d           n/# t          $ r"}t          j        | d|            Y d }~nd }~ww xY wt          d| d	          S )N+You do not have permission for this action.r9   r5   r   update_nameupdate_content)Update title and content cannot be empty.r  r  )rg  update_titler  z,Project update has been posted successfully!z,An error occurred while posting the update: )r@   r=   r<   r.   r>   r"   r:   r#   r   r5   r;   r   rg   creater   r   )r?   r  r  r  r  r   s         rA   upload_project_updater  &  sl   L% +)> +w MNNN)***~,W===|''66 ))*:;; 	E> 	EN7$OPPPCSCCCDDD	X"))2BP\dr)sssW&TUUUU 	X 	X 	XN7$VST$V$VWWWWWWWW	X;S;;;<<<s   ?7C7 7
D#DD#c                    | j         j        s0| j         j        s$t          j        | d           t          d          S t          t          |          }|j        j	        }| j
        dk    r| j                            d          }| j                            d          }|r|s(t          j        | d           t          d| d	          S 	 ||_        ||_        |                                 t          j        | d
| d           n/# t"          $ r"}t          j        | d|            Y d }~nd }~ww xY wt          d| d	          S )Nr  r9   r   r5   r  r  r  r  r  zUpdate 'z' has been saved successfully!z+An error occurred while saving the update: )r@   r=   r<   r.   r>   r"   r#   r   rg  r   r:   r5   r;   r  r  r   r   r   )r?   uidupdate_instancer  r  r  r   s          rA   edit_project_updater  ;  s   L% +)> +w MNNN)***'3???O

!
$C~|''66 ))*:;; 	E> 	EN7$OPPPCSCCCDDD	W+7O(%3O"  """W&]&]&]&]^^^^ 	W 	W 	WN7$URS$U$UVVVVVVVV	W;S;;;<<<s   ;D 
D3D..D3c                    | j         j        s0| j         j        s$t          j        | d           t          d          S 	 t          t          |          }|j        j	        }|j
        pd| }|                                 t          j        | d| d           n># t          $ r1}t          j        | d|            t          d          cY d }~S d }~ww xY wt          d| d	          S )
Nr  r9   pkzUpdate #zProject update 'z' was deleted successfully.z#An error occurred during deletion: r  r  )r@   r=   r<   r.   r>   r"   r#   r   rg  r   r  r   r   r   )r?   r  update_to_deleter  r  r   s         rA   delete_project_updater  T  s   L% +)> +w MNNN)***+,^DDD&)'4H8H38H8H!!!"^\"^"^"^____ + + +w Ia I IJJJ)********+ ;S;;;<<<s   AB 
C$&C
CCc                 .   | j         j        s| j         j        ro| j        dk    rQt	          t
          |          }d| j        v r2| j        d         }t          ||          }|                                 t          d| d          S t          d          S )Nr5   r   img)rg  project_imgr  r  r9   )
r@   r=   r<   r:   r#   r   r   r   r   r"   )r?   
project_idr  uploaded_file	new_images        rA   upload_project_imager  e  s    |  +GL$9 +>V##0ZHHH%% 'e 4(, -  	    FFFFGGG)***rC   c                     | j         j        s| j         j        rSt          j                            |          }|j        j        }|                                 t          d| d          S t          d          S )Nr   r  r  r9   )
r@   r=   r<   r   rg   r;   rg  r   r   r"   )r?   img_idr  prj_ids       rA   delete_project_imager  u  ss    |  +GL$9 +"&&&&11

BBBBCCC)***rC   c                 .   | j         j        s| j         j        ro| j        dk    rQt	          t
          |          }d| j        v r2| j        d         }||j        _        |j        	                                 t          d| d          S t          d          S )Nr5   r   bene_imgr  r  r9   )r@   r=   r<   r:   r#   r   r   rA  r   r   r"   )r?   r  r  r   s       rA   upload_beneficiary_imager    s    |  	+GL$9 	+>V##0VDDDW]**&}Z8;G ,8 ,11333BBBBCCC)***rC   c                    | j         j        rr| j        dk    rd| j                            d          }| j                            d          }| j                            d          }| j                            d          }| j                            d          }| j                            d          }| j                            d          }| j                            d	          }| j                            d
          }	| j         j        j        r|| j         j        j        _        || j         j        j        _        || j         j        j        _	        || j         j        j        _
        || j         j        j        _        || j         j        j        _        || j         j        j        _        || j         j        j        _        |	| j         j        j        _        | j         j        j                                         nWt"          j                            |||||||||		  	        }
|
| j         j        _        | j         j                                         t)          | j                            dd                    S d S t)          d          S )Nr5   rH  rI  account_holder_phn_noaccount_holder_address	bank_namebranch_name	ifsc_code
account_norG  )	rH  rI  r  r  r  r  r  r  rG  HTTP_REFERERr  r9   )r@   r<   r:   r5   r;   rm   rF  rH  rI  r  r  r  r  r  r  rG  r   r   rg   r  r"   META)r?   r;  r<  r   r>  bnamebrnameifcsaccnoupirW  s              rA   adminUpdateBankDetailsr    s7   | +>V##L$$%@AAEL$$%?@@E,""#:;;C<##$<==DL$$[11E\%%m44F<##K00DL$$\22E,""8,,C|'4 0RW(5OQV(5NOS(5LNQ(5KBG(5?DJ(5ABF(5?CH(5@?B(5<(5::<<<<*299TYty  SW*-F^bot  ~A  :  C  C8D(5(--///GL,,^SAABBB5 $#8 )***rC   c                    | j         j        rO| j         j        s$t          j        | d           t          d          S t          j                                        }n| j         j	        rl| j         j        r| j         j
        j        s$t          j        | d           t          d          S t          j                            | j         j
                  }n$t          j        | d           t          d          S | j                            d          }| j                            d          }| j                            d	          }| j                            d
          }| j                            d          }| j                            d          }| j                            d          }| j                            d          }	|r|                    |          }|r|                    |          }|r|                    |          }|r|                    |          }|rYt          j                            |d                              t          j        j                  }
|                    |
          }|rYt          j                            |d                              t          j        j                  }|                    |          }|                    d          }|dk    rt)          |d           }n|dk    rt)          |d d          }|	dk    rd|D ]N}|j        r>|j        j        r2t/          |j        j                            d                    |_        Gd |_        Ot)          |d!           }nj|	dk    rd|D ]N}|j        r>|j        j        r2t/          |j        j                            d                    |_        Gd |_        Ot)          |d" d          }|D ]^}t5          |d#          sL|j        r>|j        j        r2t/          |j        j                            d                    |_        Wd |_        _t7          | d$| j         |d%          S )&Nrz   rW   r{   rZ   r}   r9   tracking_idr  sender_namerM   r  r  r  tiles_order)tracking_id__icontains)project__title__icontains)sender__full_name__icontainsrL   r!  r"  )transaction_time__gte)transaction_time__lterj  r   c                     | j         S r   amountrr  s    rA   <lambda>z&adminAllTransactions.<locals>.<lambda>      !( rC   keyr   c                     | j         S r   r  r  s    rA   r  z&adminAllTransactions.<locals>.<lambda>  r  rC   Tr  reverser   r   c                     | j         S r   r~  r  s    rA   r  z&adminAllTransactions.<locals>.<lambda>      !+ rC   c                     | j         S r   r  r  s    rA   r  z&adminAllTransactions.<locals>.<lambda>  r  rC   r~  zadmin-all-transactions.html)re   r)   )r@   r=   rS   r.   r>   r"   r   rg   rh   r<   rm   rj   r   r;   r,  r-  r.  r/   r/  rl   sortedrh  r  r  r  r~  hasattrr!   )r?   rt  r  r  r  rM   r  r  r  r  r2  r3  rr  s                rA   adminAllTransactionsr    sY   |  +|( 	6N7$]^^^4555"*..00		 +|( 	60H0U 	6N7$fggg4555"*11glF^1__w QRRR)***+//-00KKOOO44M+//-00K[__X&&F..J{z**H;??>22L+//-00K O#**+*NN T#**]*SS U#***TT :#**&*99 Q!*33J
KKSS[c[l[pSqq#***PP O(11(JGGOOW_WhWlOmm#***NN(()<==Lul0B0BCCC			l0B0BDQQQ e 	  	 A~  !."6  !!."6"<"<S"A"ABBl0E0EFFF			 	  	 A~  !."6  !!."6"<"<S"A"ABBl0E0EtTTT    q+&& 	 ~  !."6  !!."6"<"<S"A"ABB'8GLam:n:nooorC   c                 .   | j         j        s| j         j        r| j         j        s$t	          j        | d           t          d          S t          j        	                    |          }|j
        r2t          |j
        j                            d                    |_        nd|_        t          j                            |                              d                                          }t'          | d| j         ||d	          S t          d
          S )Nrc  rW   r   r   r   r(   z-idzadmin-verify-transaction.html)re   r)   
screenshotr9   )r@   r=   r<   rS   r.   r>   r"   r   rg   r;   rh  r  r  r  r~  r   rj   rl   firstr!   )r?   tidr)   r  s       rA   adminVerifyTransactionr    s   |  +GL$9 +|( 	6N7$WXXX4555!)---55# 	&$'(@(F(L(LS(Q(Q$R$RK!!$%K!'..;.GGPPQVWW]]__
g>',gr  CM  AN  AN  O  O  	O)***rC   c                    | j         j        s| j         j        st          d          S t	          t
          |          }|j        dk    r$t          j        | d           t          d          S 	 t          j
                    5  t          |          }t          j                            |d|i          \  }}d|_        d|_        d|j        _        |j        }|xj        |j        z  c_        |j        |j        k    r*t*          j                                        |_        d	|_        |                                 |j                                         |                                 d d d            n# 1 swxY w Y   d}g }t2          j                            | j         j        
          }	|	j        r;t;          |          }
|
d         dk    r d	}|                    d|
d                     |	j        r;tA          |          }|d         dk    r d	}|                    d|d                     |	j!        r.tE          |          \  }}|sd	}|                    d|            |rt          j#        | d|j$         d           n1d}d%                    |          }t          j&        | | d|            n/# tN          $ r"}t          j(        | d|            Y d }~nd }~ww xY wt          d          S )Nr9   r   rK   z+This transaction has already been verified. /administrator/all-transactions/receipt_pdfr)   r   TFr|   rM   r>   SMS sending failed: message!WhatsApp message failed to send: Email sending failed: The transaction: z4 has been approved and a receipt has been generated.zQThe transaction has been approved, but there were issues with some notifications.r   
 Details: zFailed to approve transaction: ))r@   r=   r<   r"   r#   r   rM   r.   r   r   r   r   r   rg   update_or_createrS   rh  rg  r&  r  rG   r,  rk   r(  r   r   r;   rm   r   r   appendr   r   r   r   r   r  joinrt   r   r>   )r?   r  r)   new_pdf_datareceiptr   r  all_notifications_sentnotification_errors	noti_pref
sms_resultwhatsapp_resultemail_successemail_messagebase_msgdetails_msgr   s                    rA   adminApproveTransactionr    s   L% +)> +)***#KC888KZ''gLMMM:;;;1G"$$ 	$ 	$/<<L&??Kboq}a~?GW!+K'+K$48K$1*2++{/AA++,0@0OOO-5->-B-B-D-D *05 -$))+++!!###!	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$$ "& *2667<C[6\\	  	[)+66J(#w..).&#**+Y*YBW+Y+YZZZ% 	m3K@@Ox(G33).&#**+k_hOi+k+klll" 	U+=k+J+J(M=  U).&#**+SM+S+STTT! 	LW  &G9P  &G  &G  &G  H  H  H  HjH((#677KW&J&J[&J&JKKK G G Gw E! E EFFFFFFFFG6777s>   .J9 C'E4(J9 4E88J9 ;E8<D<J9 9
K%K  K%c                    | j         j        s| j         j        st          d          S t	          t
          |          }|j        dk    r-t          j        | d|j	         d           t          d          S 	 t          j                    5  |j        dk    r&|j        xj        |j        z  c_        d |j        _        d|_        d|_        d|j        _        d	|j        _        	 t$          j                            |
          }|                                 n# t$          j        $ r Y nw xY w|j                                         |j                                         |                                 d d d            n# 1 swxY w Y   d	}g }t0          j                            | j         j                  }|j        r;t7          |          }|d         dk    r d}|                    d|d                     |j        r;t=          |          }|d         dk    r d}|                    d|d                     |j        r.tA          |          \  }	}
|	sd}|                    d|
            |rt          j!        | d|j	         d           n1d}d"                    |          }t          j#        | | d|            n/# tH          $ r"}t          j%        | d|            Y d }~nd }~ww xY wt          d          S )Nr9   r   rO   r  z is already rejected.r  rK   FTr(   r|   rM   r>   r  r  r  r  z@ has been rejected and a notification has been sent to the user.zQThe transaction has been rejected, but there were issues with some notifications.r   r  zFailed to reject transaction: )&r@   r=   r<   r"   r#   r   rM   r.   r   r  r   r   rg  r&  r  r(  rS   rh  r   rg   r;   r   DoesNotExistr   r   rm   r   r   r  r   r	   r   r   r   r  rt   r   r>   r?   r  transaction_instancereceipt_to_deleter  r  r  r  r  r  r  r  r  r   s                 rA   adminRejectTransactionr  D  s   L% +)> +)***,[SAAA"j00gj3G3Sjjjkkk:;;;2F"$$ 	( 	(#*j88$,;;?S?ZZ;;9=$,6*4 '05 -=B -:8< (5$+O$7$7DX$7$Y$Y!!((****'    !(--/// -22444 %%'''%	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( "& *2667<C[6\\	  	[()=>>J(#w..).&#**+Y*YBW+Y+YZZZ% 	m23GHHOx(G33).&#**+k_hOi+k+klll" 	U+<=Q+R+R(M=  U).&#**+SM+S+STTT! 	LW  ']:N:Z  ']  ']  ']  ^  ^  ^  ^jH((#677KW&J&J[&J&JKKK F F Fw D D DEEEEEEEEF6777sc   7K 
AE?#4DE?D*'E?)D**A	E?3K ?FK FD<K 
K0K++K0c                    | j         j        s| j         j        st          d          S t	          t
          |          }|j        dk    r-t          j        | d|j	         d           t          d          S 	 t          j                    5  |j        dk    r|j        xj        |j        z  c_        d|_        d|_        d|j        _        d|j        _        	 t"          j                            |	          }|                                 n# t"          j        $ r Y nw xY w|j                                         |j                                         |                                 d d d            n# 1 swxY w Y   d}g }t.          j                            | j         j        
          }|j        r;t5          |          }|d         dk    r d}|                    d|d                     |j        r;t;          |          }|d         dk    r d}|                    d|d                     |j        r.t=          |          \  }	}
|	sd}|                    d|
            |rt          j        | d|j	         d           n1d}d                     |          }t          j!        | | d|            n/# tD          $ r"}t          j#        | d|            Y d }~nd }~ww xY wt          d          S )Nr9   r   rN   r  z is already unverified.r  rK   Tr(   r|   rM   r>   Fr  r  r  r  zB has been unverified and a notification has been sent to the user.zSThe transaction has been unverified, but there were issues with some notifications.r   r  z Failed to unverify transaction: )$r@   r=   r<   r"   r#   r   rM   r.   r   r  r   r   rg  r&  r  rS   rh  r   rg   r;   r   r  r   r   rm   r   r   r  r   r   r
   r   r  rt   r   r>   r  s                 rA   adminUnverifyTransactionr     s   L% +)> +)***,[SAAA"l22gl3G3Slllmmm:;;;1H"$$ 	( 	(#*j88$,;;?S?ZZ;;*6 '04 -=A -:8< (5$+O$7$7DX$7$Y$Y!!((****'    !(--/// -22444 %%'''#	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(& "& *2667<C[6\\	  	[*+?@@J(#w..).&#**+Y*YBW+Y+YZZZ% 	m45IJJOx(G33).&#**+k_hOi+k+klll% 	U+>?S+T+T(M=  U).&#**+SM+S+STTT! 	LW  '_:N:Z  '_  '_  '_  `  `  `  `lH((#677KW&J&J[&J&JKKK H H Hw F1 F FGGGGGGGGH6777sc   7J8 
AE34DE3DE3DA	E3'J8 3E77J8 :E7;D<J8 8
K$KK$c                    | j         j        s0| j         j        s$t          j        | d           t          d          S t          t          |          }|dk    rt          }t          }d}d}nA|dk    rt          }t          }d}d	}n(t          j        | d
| d           t          d          S 	 t          j                    5  d }	 |j                            |          }n# |j        $ r Y nw xY w ||          }	||	i}
|j                            ||
          \  }}|sO|rMt%          ||d           }|r:|j        }t(          j                            |          rt)          j        |           d d d            n# 1 swxY w Y   t          j        | | d|j         d           n2# t2          $ r%}t          j        | d| d|            Y d }~nd }~ww xY wt          d          S )Nz/You do not have permission to access this page.r9   r   regularzRegular PDF Receiptr  80mmz80mm Thermal Receiptreceipt_80mm_pdfz Invalid receipt type specified: r   r  r(   r  z for transaction z" successfully generated and saved.zFailed to generate z: /administrator/all-receipts/)r@   r=   r<   r.   r>   r"   r#   r   r   r   r    r   r   r   rg   r;   r  r  getattrpathosr   remover   r  r   )r?   t_idreceipt_typer  ReceiptModelgenerate_funcreceipt_namepdf_field_nameold_receiptr  defaults_datar  r   old_fileold_file_pathr   s                   rA   adminGenerateReceiptsr    s   L% +)> +w QRRR)***,[TBBBy  ,,&			"1-+w R< R R RSSS:;;;K"$$ 	1 	1K*266CW6XX,   (=)=>>L+\:M+3DDQeo|D~~GW 1{ 1";EE 1$,MMw~~m44 1	-000!	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1" 	L  "H  "HCWCc  "H  "H  "H  	I  	I  	I  	I K K Kw Il I Ia I IJJJJJJJJK2333sa   .F( E<C! E<!
C.+E<-C..BE<0F( <F  F( F #F( (
G2GGc                 r	   | j         j        rm| j         j        s$t          j        | d           t          d          S t          j                                        }t          j                                        }n| j         j
        r| j         j        r| j         j        j        s$t          j        | d           t          d          S t          j                            | j         j                  }t          j                            | j         j                  }n$t          j        | d           t          d          S | j                            d          }| j                            d          }| j                            d	          }| j                            d
          }| j                            d          }| j                            d          }| j                            d          }	|r|                    |          }|r|                    |          }|r|                    |          }|rYt          j                            |d                              t          j        j                  }
|                    |
          }|rYt          j                            |d                              t          j        j                  }|                    |          }|s|	r|	r|D ]]}|j        j        rH|j        j        j        r7t/          |j        j        j                            d                    |_        Vd|_        ^|	dk    rt5          |d           }ng|	dk    rt5          |d d          }nM|dk    r|                    d          }n1|dk    r|                    d          }n|                    d           }|                    d!d"          }d# |                    |$          D             }|D ]}|                    |j                  |_        t?          |d%          s[|j        j        rH|j        j        j        r7t/          |j        j        j                            d                    |_        d|_        tA          | d&| j         |d'          S )(Nrz   rW   r{   ) transaction__project__created_byr}   r9   r  r  r  r  r  r  r  )#transaction__tracking_id__icontains)&transaction__project__title__icontains))transaction__sender__full_name__icontainsr!  r"  )"transaction__transaction_time__gte)"transaction__transaction_time__lter   r   r   c                     | j         S r   
tile_countrs    rA   r  z"adminAllReceipts.<locals>.<lambda>      !, rC   r  r   c                     | j         S r   r  r  s    rA   r  z"adminAllReceipts.<locals>.<lambda>  r!  rC   Tr  transaction__amountz-transaction__amountz-transaction__transaction_timetransaction_id)flatc                     i | ]
}|j         |S rl  )r$  )r   r80s     rA   
<dictcomp>z$adminAllReceipts.<locals>.<dictcomp>%  s-        	C  rC   )transaction_id__inr  zadmin-all-receipts.html)re   rec)!r@   r=   rS   r.   r>   r"   r   rg   rh   r    r<   rm   rj   r   r;   r,  r-  r.  r/   r/  r)   rh  r  r  r  r  r  rl   values_listr$  receipt_80mm_instancer  r!   )r?   receiptsreceipts80mmr  r  r  r  r  r  r  r2  r3  r   transaction_ids
rec80_dicts                  rA   adminAllReceiptsr1    s   |  +|( 	6N7$]^^^4555?&&(("*..00		 +|( 	60H0U 	6N7$fggg4555?))7<Kc)dd"*11SZS_Sk1llw QRRR)***+//-00KKOOO44M+//-00K..J{z**H;??>22L+//-00K T??{?SS Y??-?XX Z??[?YY V!*33J
KKSS[c[l[pSqq??n?UU T(11(JGGOOW_WhWlOmm??l?SS G{ G 	A % %=- %!-2L2R %#&q}'A'G'M'Mc'R'R#S#SALL#$ALLe##!(0F0FGGG&&!(0F0FPTUUUU""(()>??HHV##(()?@@H$$%EFF**+;$*GGO &&/&JJ  J
  ! !",..1A"B"Bq,'' 	!}) !am.H.N !"1=#=#C#I#I##N#NOO '4T\6^6^___rC   c                 z   	 t          t          |          }d}g }t          j                            | j        j                  }|j        r@t          |j	                  }|d         dk    r d}|
                    d|d                     |j        r@t          |j	                  }|d         dk    r d}|
                    d	|d                     |j        r3t          |j	                  \  }}	|sd}|
                    d
|	            |r)t          j        | d|j	        j        j         d           nDd|j	        j        j         d}
d                    |          }t          j        | |
 d|            n0# t*          $ r#}t          j        | d| d           Y d }~nd }~ww xY wt/          d          S )Nr   Tr|   rM   r>   Fr  r  r  r  z(A receipt has been successfully sent to r   z<Failed to send all confirmation messages for the receipt to r   r  z8An unexpected error occurred while sending the receipt: r  )r#   r   r   rg   r;   r@   rm   r   r   r)   r  r   r   r   r   r.   r   ri  	full_namer  rt   r   r>   r"   )r?   r_idr  r  r  r  r  r  r  r  r  r  r   s                rA   adminSendRecieptr5  4  s    a#G555!% *2667<C[6\\	  	[)'*=>>J(#w..).&#**+Y*YBW+Y+YZZZ% 	m3G4GHHOx(G33).&#**+k_hOi+k+klll" 	U+=g>Q+R+R(M=  U).&#**+SM+S+STTT! 	LW%wPWPcPjPt%w%w%wxxxx}V]ViVpVz}}}H((#677KW&J&J[&J&JKKK a a aw _[\ _ _ _````````a2333s   E;E> >
F+F&&F+c                 r   t          d          t          t          d                    z  }| j        j        r| j        j        s$t          j        | d           t          d          S t          j	        
                    |          }t          j	                                                            d          }n| j        j        r| j        j        r| j        j        j        s$t          j        | d           t          d          S t          j	        
                    || j        j        	          }t          j	        
                    | j        j        
                              d          }n$t          j        | d           t          d          S | j                            d          }| j                            d          }| j                            d          }t                      }|r|t          |          z  }|r$|t          |          t          |          z  z  }|r|
                    |          }|r8|dk    r|                    d          }n1|dk    r|                    d          }n|                    d          }|                    t)          dd                    }|D ]d}|j        r'|j        dk    rt-          |j        |j        z            nd|_        |
                    |                                          |_        et7          | d| j        ||d          S )NFrP   rG   rH   rz   rW   rg  r{   rX   rZ   rb  r9   r  beneficiary_name
goal_orderr  )"beneficiary__first_name__icontains)!beneficiary__last_name__icontainsr   r   r'  r)  r)   T)distinct)trar   rf  zadmin-all-reports.html)re   rg  reports)r1   r0   r@   r=   rS   r.   r>   r"   r   rg   rj   r   rh   r|  r<   rm   r   r;   rl   annotater2   rB  rn  rG   r  r   
has_reportr!   )	r?   completion_conditionsproject_querysetreports_querysetr  r7  r8  r   r4  s	            rA   adminAllReportsrC  Y  sP   666qQ_O`O`9a9a9aa|  +|( 	6N7$]^^^4555"?112GHH"?..00??	JJ		 	+|( 	60H0U 	6N7$fggg4555"?112GSZS_Sk1mm"?11glF^1__nnoxyy 	w PQQQ)***KOOO44M{'9::..J ?Q>>>> NaCSTTTWX  |L  XM  XM  XM  M  	N F+223DEE C/88HH6!!/88II+44\BB'00U=SW5X5X5X0YY C C89`XYIYIY#anq|3444_`'..q.99@@BB'3w|Wg  tD  6E  6E  F  F  FrC   c                     | j         j        s| j         j        st          d          S t	          t
          |          }	 t          j                    5  d }	 t          j	        
                    |          }n# t          j        $ r Y nw xY wt          ||           }t          j	                            |d|i          \  }}|sH|rF|j        r?|j        j        }t           j                            |          rt!          j        |           d d d            n# 1 swxY w Y   t'          j        | d|j         d           n/# t,          $ r"}t'          j        | d|            Y d }~nd }~ww xY wt          d	          S )
Nr9   r   rf  
report_pdf)rg  r   zA report for the project: z has been created.zFailed to generate report: z/administrator/all-reports/)r@   r=   r<   r"   r#   r   r   r   r   rg   r;   r  r   r  rE  r  r  r   r	  r.   r   r8  r   r>   )	r?   p_idr  
old_reportr  reportr   r  r   s	            rA   adminGenerateReportsrI    s   L% +)> +)***(T:::C"$$ 	- 	-J$_009I0JJ

'    //?IIL%o>>GWbnp|a}>~~OFG -z -j.C - * 5 :7>>-00 -Im,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	!h>N>T!h!h!hiiii C C Cw Aa A ABBBBBBBBC1222s`   E D A76D7B	DB		BDE DE D !E 
E.E))E.c                 H   | j         j        rO| j         j        s$t          j        | d           t          d          S t          j                                        }n| j         j	        rl| j         j        r| j         j
        j        s$t          j        | d           t          d          S t          j                            | j         j
                  }n$t          j        | d           t          d          S | j                            d          }| j                            d          }| j                            d	          }| j                            d
          }| j                            d          }|r4|                    t          |          t          |          z            }|r|                    |          }|r|                    |          }|rk	 t          j                            |d                              t          j        j                  }|                    |          }n# t(          $ r Y nw xY w|rk	 t          j                            |d                              t          j        j                  }|                    |          }n# t(          $ r Y nw xY w|                    d          }|D ]9}	t,          j                            |	                                          |	_        :t3          | d| j         |d          S )Nrz   rW   r{   )r  r}   r9   r  sender_emailsender_phoner  r  r   r   r   )phone__icontainsr!  r"  )sent_time__gte)sent_time__ltez
-sent_time)r  zadmin-all-contact-message.html)re   contact_messages)r@   r=   rS   r.   r>   r"   r   rg   rh   r<   rm   rj   r   r;   r1   r,  r-  r.  r/   r/  
ValueErrorrl   r   r   has_repliedr!   )
r?   msgr  rK  rL  r  r  r2  r3  ms
             rA   adminContactMessagerU    s    |  +|( 	6N7$]^^^4555$((**		 +|( 	60H0U 	6N7$fggg4555$++0H+IIw QRRR)***+//-00K;??>22L;??>22L..J{z**H 
jjK0001+3V3V3VV
 
  8jj,j77 8jj,j77 	%.77
JOOWW_g_p_tWuuN**N*;;CC 	 	 	D	  	#,55h
KKSS[c[l[pSqqL**L*99CC 	 	 	D	
,,|
$
$C H H$,33A3>>EEGG';w|hk=m=mnnns&   #AH= =
I
	I
AJ* *
J76J7c           	         | j         dk    rS| j                            d          }	 t          j                    5  t
          j                            |          }t          j                            ||          }d}g }t          j                            | j
        j                  }|j        r;t          |          }|d         dk    r d	}|                    d
|d                     |j        r;t          |          }	|	d         dk    r d	}|                    d|	d                     t!          |          \  }
}|
sd	}|                    d|            |r't#          j        | d|j         d|j         d           nBd|j         d|j         d}d                    |          }t#          j        | | d|            d d d            n# 1 swxY w Y   n# t
          j        $ r t#          j        | d           Y nZt2          $ r#}t#          j        | d| d           Y d }~n3d }~wt4          $ r#}t#          j        | d| d           Y d }~nd }~ww xY wt7          d          S )Nr5   reply_messager  )r  replyTr|   rM   r>   Fr  r  r  r  zReply successfully sent to r   r   z9Reply was saved, but failed to send all notifications to r  z(The original message could not be found.zA database error occurred: z6An unexpected error occurred while sending the reply: z/administrator/contact-message/)r:   r5   r;   r   r   r   rg   r   r  r   r@   rm   r   r   r  r   r   r.   r   r~   r   r  rt   r  r>   r-   r   r"   )r?   msg_idrX  original_message	new_replyr  r  r  r  r  r  r  r  r  r   s                  rA   adminMessageReplyr\    s   ~  11%	c&(( T T#1#9#=#=#=#H#H (077@PX]7^^	)-&&(#2:>>7<Kc>dd	( c!29!=!=J!(+w6616.+223a*U^J_3a3abbb( u&<Y&G&GO&x0G;;16.+223sWfgpWq3s3sttt/B9/M/M,}$ Y-2*'../W/W/WXXX) T$W  .GK[Kf  .G  .Giy  jD  .G  .G  .G  H  H  H  H  W[k[v   W   W  zJ  zT   W   W   WH"%((+>"?"?K$W.R.R[.R.RSSS=T T T T T T T T T T T T T T T> * 	P 	P 	PN7$NOOOOO 	H 	H 	HN7$F!$F$F$FGGGGGGGG 	c 	c 	cN7$a]^$a$a$abbbbbbbb	c5666sM   G  FGG  GG  GG   $I	IH--I:II)madminModule.utilsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   adminModule.modelsr   r   r   r   r   r   r   r   r   userModule.modelsr   r   r   r   r   r    django.shortcutsr!   r"   r#   django.contrib.authr$   r%   r&   django.contrib.auth.decoratorsr'   	django.dbr)   r   django.core.files.baser*   decimalr+   r,   r-   django.contribr.   django.utilsr/   django.db.modelsr0   r1   r2   ior3   r,  rM  rJ  r  rB   rr   rv   rx   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r5  r`  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r1  r5  rC  rI  rU  r\  rl  rC   rA   <module>rj     sO                                   + + + + + + + + + + + + + + + + + + + + + + i i i i i i i i i i i i i i i i @ @ @ @ @ @ @ @ @ @ ; ; ; ; ; ; ; ; ; ; 9 9 9 9 9 9 3 3 3 3 3 3 . . . . . . - - - - - - - - $ $ $ $ $ $ # # # # # # ! ! ! ! ! ! ( ( ( ( ( ( ( ( ( (          				/ / /( +,,,&_ &_ -,&_R' ' 'G G G
0c 0c 0cfO3 O3 O3f+ + + + + +/ / /(/ / /*Bh Bh BhL; ; ;@7 7 7(7 7 7OA OA OAf%; %; %;P7 7 7.7 7 7.;` ;` ;`|*3 *3 *3Z$B $B $BN= = =6+ + + + + += = =*= = =2= = ="+ + + + + +
+ 
+ 
++ + +BDp Dp DpN+ + +"<8 <8 <8~:8 :8 :8z98 98 98x)4 )4 )4XH` H` H`V"4 "4 "4J0F 0F 0Ff3 3 34.o .o .ob)7 )7 )7 )7 )7rC   