Ë
    \\±joù  ã                   ód  — d dl 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mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ ddlmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6Z6d dl7Z7d dl8Z8d dl9Z9d dl:m;Z; d dl<m=Z= d dl<m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZF d dlGmHZH d dlImIZImJZJ d dl
mKZKmLZLmMZMmNZNmOZOmZmZmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW d dlXmYZY d dlZm[Z[m\Z\m]Z]m^Z^m_Z_ d dl`maZa d dlmbZb d dlcmdZd d d l<meZe d d!lfmgZg d"„ Zhd#„ Zid$„ Zjd%„ Zkd&„ Zld'„ Zmd(„ Znd)„ Zod*„ Zpd+„ Zqd,„ Zrd-„ Zsd.„ Ztd/„ Zud0„ Zvd1„ Zwd2„ Zxd3„ Zyd4„ Zzd5„ Z{ G d6„ d7e[«      Z| G d8„ d9e[«      Z} G d:„ d;e\«      Z~ G d<„ d=e]«      Z G d>„ d?eae]«      Z€ G d@„ dAeae^«      Z�dB„ Z‚dC„ ZƒdD„ Z„dE„ Z…dF„ Z†dG„ Z‡edH„ «       ZˆedI„ «       Z‰edJ„ «       ZŠedK„ «       Z‹edL„ «       ZŒdM„ Z� G dN„ dOe\«      ZŽ G dP„ dQe\«      Z� G dR„ dSe\«      Z� G dT„ dUeae_«      Z‘ G dV„ dWeae_«      Z’dX„ Z“ehdY„ «       Z”ehdZ„ «       Z•ehd[„ «       Z–ehd\„ «       Z—ehd]„ «       Z˜ehd^„ «       Z™ehd_„ «       Zšehd`„ «       Z›ehda„ «       Zœehdb„ «       Z�ehdc„ «       Zžehdd„ «       ZŸehde„ «       Z ehdf„ «       Z¡ehdg„ «       Z¢ehdh„ «       Z£ehdi„ «       Z¤dj„ Z¥dk„ Z¦dl„ Z§y)mé    )ÚSMTPException)ÚrenderÚget_object_or_404Úredirect)Úcsrf_exempt)Ústaff_member_required)ÚSumÚCount)Úlogin_required)Úreverse)Úsettings)ÚDjangoJSONEncoder)ÚValidationError)ÚJsonResponse)ÚHttpResponseé   )ÚProjectÚ
NewsletterÚUserAccountÚtb_teamsÚtb_eventcateÚDonationÚ	UserLoginÚUserProfileÚProjectTypeÚContactMessageÚtb_actualitenewsÚdashboardpictureÚtb_eventpostupdateÚtodolist)ÚContactFormÚcreateadFormÚeditadminFormÚ
teamupFormÚProjectFormÚDonationFormÚActualiteNewsFormÚDashImageFormÚEventspostFormÚ	LoginFormÚeventcateFormÚtodoFormN)Úlogger)Ú	send_mail)Úmail_admins)Úfigure)Ú
components)ÚCDN)ÚDecimal)ÚPayPalPaymentsForm)ÚdatetimeÚdate)ÚPrefetchÚProtectedErrorÚMaxÚMinÚQr	   r
   ÚFÚOuterRefÚSubqueryÚExistsÚIntegerFieldÚValueÚWhenÚCase)Úmessages)ÚListViewÚ
DetailViewÚ
CreateViewÚ
UpdateViewÚTemplateView)ÚLoginRequiredMixin)Úreverse_lazy)Ú	Paginator)ÚEmailMultiAlternatives)Útimezonec                 ó   ‡ — ˆ fd„}|S )Nc                 ó  •— | j                   j                  d«      }|st        d«      S 	 t        j                  j                  |¬«      | _         ‰| g|¢­i |¤ŽS # t        j                  $ r | j                   d= t        d«      cY S w xY w)NÚlogged_in_useridÚ
staff_dash©Úuserid)ÚsessionÚgetr   r   ÚobjectsÚuser_objÚDoesNotExist)ÚrequestÚargsÚkwargsrT   Ú	view_funcs       €ú/var/www/html/fnps/src/views.pyÚwrapperz%staff_login_required.<locals>.wrapper)   s�   ø€ Ø—‘×$Ñ$Ð%7Ó8ˆÙÜ˜LÓ)Ð)ð	*Ü(×0Ñ0×4Ñ4¸FÐ4ÓCˆGÔñ
 ˜Ð2 4Ò2¨6Ñ2Ð2øô	 ×%Ñ%ò 	*Ø—‘Ð 2Ð3Ü˜LÓ)Ò)ð	*ús   «%A Á+B
Â	B
© )r]   r_   s   ` r^   Ústaff_login_requiredra   (   s   ø€ ô3ð €Nó    c                 ó  — t         j                  j                  d¬«      j                  t	        d¬«      t	        d¬«      z  «      j                  d«      d d }t        j                  j                  d¬	«      j                  d
«      d d }t        j                  j                  «       j                  d«      d d }t        j                  j                  «       j                  d«      d d }t        j                  j                  d¬«      j                  d«      d d }t        j                  j                  «       d d }t        j                  j                  dd¬«      }g }g }	g }
|D ]e  }|j                  |j                  «       |	j                  t        |j                  «      «       |
j                  t        |j                  «      «       Œg |dd|	dœdd|
dœgdœ}t!        | d||||||t#        j$                  |t&        ¬«      dœ«      S )NF)Útitle__isnullTÚ )Útitle__exactz-regdateé   r   ©Úf_activeÚranké   ú-dateé   ©Ú	is_activeú-created_atr   ©Úcurrent_amount__gtro   úCurrent Amountú#3b82f6©ÚlabelÚbackgroundColorÚdataúTarget Amountú#38bdf8©ÚlabelsÚdatasetszsrc/index.html©Úcls)Ú
newsupdateÚ	dashdatasÚevent_updateÚfeatured_projectsÚproject_typesÚevent_footerÚ
chart_data)r   rW   ÚfilterÚexcluder;   Úorder_byr   r   Úallr   r   ÚappendÚtitleÚfloatÚcurrent_amountÚtarget_amountr   ÚjsonÚdumpsr   )rZ   r€   r�   r‚   r…   rƒ   r„   Úprojectsr|   Úcurrent_dataÚtarget_dataÚprojectr†   s                r^   Úhomepager–   7   s  € Ü!×)Ñ)×0Ñ0¸uÐ0ÓE×MÑMÌaÐ^bÔNcÔfgÐuwÔfxÑNxÓy÷  Cñ  Cð  DNó  Oð  PRð  QRð  S€JÜ ×(Ñ(×/Ñ/¸Ð/Ó;×DÑDÀVÓLÈRÈaÐP€IÜ%×-Ñ-×1Ñ1Ó3×<Ñ<¸WÓEÀbÀqÐI€LÜ%×-Ñ-×1Ñ1Ó3×<Ñ<¸WÓEÀbÀqÐI€LÜŸ™×.Ñ.¸Ð.Ó>×GÑGÈÓVÐWYÐXYÐZÐÜ×'Ñ'×+Ñ+Ó-¨b¨qÐ1€Mä�‰×%Ñ%¸ÀdÐ%ÓK€Hà€FØ€LØ€Kàò 9ˆØ�‰�g—m‘mÔ$Ø×ÑœE '×"8Ñ"8Ó9Ô:Ø×Ñœ5 ×!6Ñ!6Ó7Õ8ð9ð ð *Ø#,Ø$ñð )Ø#,Ø#ñð
ñ€Jô �'Ð+¸JÐT]Ðnzð  RcØ&°lÔRV×R\ÑR\Ð]gÔm~ÔRñ.Aó Bð Brb   c                 ó²  — | j                   dk(  r¾| j                  j                  d«      }|r¡t        j                  j                  |¬«      j                  «       rt        j                  | d«       n7t        j                  j                  ||¬«       t        j                  | d«       t        | j                  j                  dd«      «      S t        d«      S )	NÚPOSTzsubscribe-email)Úemailu/   Vous Ãªtes dÃ©jÃ  inscrit Ã  notre newsletter !)Únamer™   u:   Vous vous Ãªtes inscrit avec succÃ¨s Ã  notre newsletter !ÚHTTP_REFERERú/)Úmethodr˜   rV   r   rW   r‡   ÚexistsrD   ÚwarningÚcreateÚsuccessr   ÚMETA)rZ   r™   s     r^   Úsubscribe_newsletterr£   ]   s§   € Ø‡~�~˜ÒØ—‘× Ñ Ð!2Ó3ˆáä×!Ñ!×(Ñ(¨uÐ(Ó5×<Ñ<Ô>Ü× Ñ  Ð*[Õ\ä×"Ñ"×)Ñ)¨u¸EÐ)ÔBÜ× Ñ  Ð*fÔgä˜GŸL™L×,Ñ,¨^¸SÓAÓBÐBÜ�C‹=Ðrb   c                 óF  — t         j                  j                  d«      d d }| j                  dk(  rb| j                  j                  d«      }| j                  j                  d«      }| j                  j                  d«      }t        ||d|gd¬	«       t        | d
d|i«      S )Nrl   rm   r˜   rš   r™   Úmessageúsettings.EMAIL_HOST_USERF©Úfail_silentlyúsrc/contactus.htmlr…   )r   rW   r‰   r�   r˜   rV   r.   r   )rZ   r…   rš   r™   r¥   s        r^   Ú	contactUsrª   n   s”   € ä%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€Là‡~�~˜ÒØ�|‰|×Ñ Ó'ˆØ—‘× Ñ  Ó)ˆØ—,‘,×"Ñ" 9Ó-ˆä�$˜Ð!;Ø�'¨õ	0ô �'Ð/°.ÀÐ1NÓOÐOrb   c                 ó¨  — t         j                  j                  d«      d d }t         j                  j                  «       j                  d«      d d }| j                  dk(  rb| j
                  j                  d«      }| j
                  j                  d«      }| j
                  j                  d«      }t        ||d|gd	¬
«       t        | d||dœ«      S )Nrl   rm   rg   r˜   rš   r™   r¥   r¦   Fr§   zsrc/volunteer.html)r…   r‚   )	r   rW   r‰   rŠ   r�   r˜   rV   r.   r   )rZ   r…   r‚   rš   r™   r¥   s         r^   Ú	volunteerr¬      s»   € ä%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€LÜ%×-Ñ-×1Ñ1Ó3×<Ñ<¸WÓEÀbÀqÐI€LØ‡~�~˜ÒØ�|‰|×Ñ Ó'ˆØ—‘× Ñ  Ó)ˆØ—,‘,×"Ñ" 9Ó-ˆä�$˜Ð!;Ø�'¨õ	0ô �'Ð/ÀÐ]iÑ1kÓlÐlrb   c                 óÀ   — t         j                  j                  «       j                  d«      }t        j                  j                  d«      d d }t        | d||dœ«      S )Nrp   rl   rm   zsrc/ourcauses.html)rƒ   r…   )r   rW   rŠ   r‰   r   r   )rZ   rƒ   r…   s      r^   Ú	ourcausesr®   �   sT   € ÜŸ™×+Ñ+Ó-×6Ñ6°}ÓEÐÜ%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€LÜ�'Ð/ÐEVÐfrÑ0tÓuÐurb   c                 óÌ  — t         j                  j                  d¬«      j                  d«      }t        j                  j                  d¬«      }t        j                  j                  d¬«      }t        j                  j                  d¬«      }t        j                  j                  d¬«      }t         j                  j                  d«      d d }t        | d||||||d	œ«      S )
Nr   rh   rl   ©Úidé   rm   é   zsrc/events.html)Úevent_1Úevent_2Úevent_3Úevent_4r…   Ú
events_all)r   rW   r‡   r‰   r   r   )rZ   r¸   r´   rµ   r¶   r·   r…   s          r^   Úeventsr¹   •   sÙ   € ä#×+Ñ+×2Ñ2¸AÐ2Ó>×GÑGÈÓP€Jä×"Ñ"×)Ñ)¨QÐ)Ó/€GÜ×"Ñ"×)Ñ)¨QÐ)Ó/€GÜ×"Ñ"×)Ñ)¨QÐ)Ó/€GÜ×"Ñ"×)Ñ)¨QÐ)Ó/€GÜ%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€Lä�'Ð,¸È7Ð^eÐqxð  JVð  eoñ  /pó  qð  qrb   c                 ó€   — t         j                  j                  «       j                  d«      d d }t	        | dd|i«      S )Nrl   rm   zsrc/footer.htmlr…   ©r   rW   rŠ   r‰   r   ©rZ   r…   s     r^   Úfooterr½   ¢   s=   € Ü%×-Ñ-×1Ñ1Ó3×<Ñ<¸WÓEÀbÀqÐI€LÜ�'Ð,¨~¸lÐ.KÓLÐLrb   c                 óä  — t         j                  j                  «       j                  d«      d d }t         j                  j                  d«      d d }t        j                  j                  d¬«      j                  d«      d d }t        j                  j                  «       d d }t        j                  j                  d	d¬
«      }g }g }g }|D ]e  }	|j                  |	j                  «       |j                  t        |	j                  «      «       |j                  t        |	j                  «      «       Œg |dd|dœdd|dœgdœ}
t        | d||||t        j                  |
t        ¬«      dœ«      S )Nrl   r²   rm   Trn   rp   r³   rg   r   rq   rs   rt   ru   ry   rz   r{   zsrc/donate-us.htmlr~   )r‚   rƒ   r…   r„   r†   )r   rW   rŠ   r‰   r   r‡   r   r‹   rŒ   r�   rŽ   r�   r   r�   r‘   r   )rZ   r‚   r…   rƒ   r„   r’   r|   r“   r”   r•   r†   s              r^   Ú	donate_usr¿   ¦   so  € Ü%×-Ñ-×1Ñ1Ó3×<Ñ<¸WÓEÀbÀqÐI€LÜ%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€LÜŸ™×.Ñ.¸Ð.Ó>×GÑGÈÓVÐWYÐXYÐZÐÜ×'Ñ'×+Ñ+Ó-¨b¨qÐ1€Mä�‰×%Ñ%¸ÀdÐ%ÓK€Hà€FØ€LØ€Kàò 9ˆØ�‰�g—m‘mÔ$Ø×ÑœE '×"8Ñ"8Ó9Ô:Ø×Ñœ5 ×!6Ñ!6Ó7Õ8ð9ð ð *Ø#,Ø$ñð )Ø#,Ø#ñð
ñ€Jô  �'Ð/ÀÐduð  FRØ&´d·j±jÀÔQbÔ6cñ2eó fð frb   c                 ód   — t         j                  j                  d«      d d }t        | dd|i«      S )Nrl   rm   úsrc/event-details.htmlr…   ©r   rW   r‰   r   r¼   s     r^   Úevent_detailsrÃ   Ê   s4   € Ü%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€LÜ�'Ð3°nÀ\Ð5RÓSÐSrb   c                 ód   — t         j                  j                  d«      d d }t        | dd|i«      S )Nrl   rm   zsrc/about-us.htmlr…   rÂ   r¼   s     r^   Úabout_usrÅ   Î   s4   € Ü%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€LÜ�'Ð.°¸|Ð/LÓMÐMrb   c           
      ó<  — t         j                  j                  d¬«      j                  d«      d d }t        j                  j                  «       d d }t         j                  j                  dd¬«      }g }g }g }|D ]e  }|j                  |j                  «       |j                  t        |j                  «      «       |j                  t        |j                  «      «       Œg |dd	|d
œdd|d
œgdœ}t        | d||t        j                  |t        ¬«      dœ«      S ©NTrn   rp   r³   rg   r   rq   rs   rt   ru   ry   rz   r{   zsrc/dashboard/home.htmlr~   )rƒ   r„   r†   ©r   rW   r‡   r‰   r   rŠ   r‹   rŒ   r�   rŽ   r�   r   r�   r‘   r   ©	rZ   rƒ   r„   r’   r|   r“   r”   r•   r†   s	            r^   Ú	user_dashrÊ   Ò   s#  € äŸ™×.Ñ.¸Ð.Ó>×GÑGÈÓVÐWYÐXYÐZÐÜ×'Ñ'×+Ñ+Ó-¨b¨qÐ1€Mä�‰×%Ñ%¸ÀdÐ%ÓK€Hà€FØ€LØ€Kàò 9ˆØ�‰�g—m‘mÔ$Ø×ÑœE '×"8Ñ"8Ó9Ô:Ø×Ñœ5 ×!6Ñ!6Ó7Õ8ð9ð ð *Ø#,Ø$ñð )Ø#,Ø#ñð
ñ€Jô  �'Ð4ÐL]Ø&´d·j±jÀÔQbÔ6cñ7eó fð frb   c                 óª   — d}t         j                  j                  |¬«      }t        j                  j	                  d«      d d }t        | d||dœ«      S )Nu"   Administrateur Directeur GÃ©nÃ©ral)Úpositionrl   rm   zsrc/our-team.html)Úteam_ceor…   )r   rW   r‡   r   r‰   r   )rZ   Ú	position1rÍ   r…   s       r^   ÚteamrÏ   õ   sS   € Ø2€IÜ×Ñ×&Ñ&°	Ð&Ó:€HÜ%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€Lä�'Ð.¸XÐVbÑ0cÓdÐdrb   c                 ód  — | j                   dk(  r‰t        | j                  «      }|j                  «       rC|j	                  d¬«      }|j	                  «        t        j                  | d«       t        d«      S t        j                  | d«       t        d«      S t        «       }t        | dd|i«      S )	Nr˜   F©Úcommitz4Message Envoyee, un agent seras en contact avec vousÚcontact_formz(Message non Envoyee, veuiller reessayer.r©   Úform)
r�   r!   r˜   Úis_validÚsaverD   r¡   r   Úerrorr   )rZ   Úupcoming_formÚobjrÔ   s       r^   Úcontact_viewrÚ   ü   s—   € Ø‡~�~˜ÒÜ# G§L¡LÓ1ˆØ×!Ñ!Ô#Ø×$Ñ$¨EÐ$Ó2ˆCØ�H‰HŒJÜ×Ñ˜WÐ&\Ô]Ü˜NÓ+Ð+ä�N‰N˜7Ð$NÔOÜ˜NÓ+Ð+ô ‹}ˆä�'Ð/°&¸$°Ó@Ð@rb   c                 óÊ   — t         j                  j                  d«      d d }t        j                  j	                  |¬«      }t        t        |¬«      }t        | d|||dœ«      S )Nrl   rm   r°   rÁ   ©Únewsupdate_detailsÚnewsupdate24r…   )r   rW   r‰   r   r‡   r   r   )rZ   r±   r…   rÝ   rÞ   s        r^   Únews_detailrß     sm   € Ü%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€LÜ)×1Ñ1×8Ñ8¸BÐ8Ó?ÐÜ$Ô%5¸"Ô=€Lä�'Ð3ÐL^Ðnzð  LXñ  6Yó  Zð  Zrb   c                 óÊ   — t         j                  j                  |¬«      }t        t         |¬«      }t        j                  j                  d«      d d }t        | d|||dœ«      S )Nr°   rl   rm   zsrc/memberdetail.html)Ú	memberdetÚmemberfulldetr…   )r   rW   r‡   r   r   r‰   r   )rZ   r±   rá   râ   r…   s        r^   Úmember_detailrã     sj   € ä× Ñ ×'Ñ'¨2Ð'Ó.€IÜ%¤h°2Ô6€MÜ%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€Lä�'Ð2À)Ð\ið  {Gñ  5Hó  Ið  Irb   c                 óÊ   — t         j                  j                  |¬«      }t        t         |¬«      }t         j                  j	                  d«      d d }t        | d|||dœ«      S )Nr°   rl   rm   zsrc/news-details.htmlrÜ   )r   rW   r‡   r   r‰   r   )rZ   r±   rÝ   rÞ   r…   s        r^   Úpast_newsdetailrå     sm   € ä+×3Ñ3×:Ñ:¸bÐ:ÓAÐÜ$Ô%7¸BÔ?€LÜ%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€Lä�'Ð2ÐK]Ðmyð  JVñ  5Xó  Yð  Yrb   c                 ó€   — t         j                  j                  «       j                  d«      d d }t	        | dd|i«      S )Nrl   rm   zsrc/project_accom.htmlr•   r»   )rZ   r•   s     r^   Úproject_accomrç   %  s=   € Ü ×(Ñ(×,Ñ,Ó.×7Ñ7¸Ó@ÀÀ!ÐD€GÜ�'Ð3°iÀÐ5HÓIÐIrb   c                 ón  — t        «       }t        «       }t        «       }t        «       }t	        «       }t        «       }| j                  dk(  r¬d| j                  v ržt	        | j                  «      }|j                  «       ry|j                  d   }|j                  d   }	 t        j                  j                  ||¬«      }	|	j                  r|| j                  d<   t        d«      S |j!                  d d«       	 d| j                  v rE	 t        j                  j                  | j                  d   ¬
«      }	|	||||d|dœ}
t%        | d|
«      S t%        | d|ddœ«      S # t        j"                  $ r |j!                  d d	«       Y ŒŠw xY w# t        j"                  $ r | j                  d= t        d«      cY S w xY w)Nr˜   ÚloginrT   Úpassword)rT   rê   rQ   rR   zAccount is not active.zInvalid userid or password.rS   T)ÚuserÚactualite_formÚdashimage_formrØ   Únewmember_formÚ	logged_inÚeventcate_formzsrc/fnpssdash/index.htmlF)Ú
login_formrï   )r'   r(   r)   r$   r*   r+   r�   r˜   rÕ   Úcleaned_datar   rW   rV   ro   rU   r   Ú	add_errorrY   r   )rZ   rì   rí   rØ   rî   rñ   rð   rT   rê   rë   Úcontexts              r^   Ú	staffdashrõ   +  s¯  € ä&Ó(€NÜ"“_€NÜ"Ó$€MÜ“\€NÜ“€JÜ!“O€Nð ‡~�~˜Òà�g—l‘lÑ"Ü" 7§<¡<Ó0ˆJØ×"Ñ"Ô$Ø#×0Ñ0°Ñ:�Ø%×2Ñ2°:Ñ>�ðNÜ$×,Ñ,×0Ñ0¸ÈÐ0ÓR�DØ—~’~Ø>D˜Ÿ™Ð(:Ñ;Ü'¨Ó5Ð5à"×,Ñ,¨TÐ3KÕLð
 ˜WŸ_™_Ñ,ð	*Ü×$Ñ$×(Ñ(°·±Ð@RÑ0SÐ(ÓTˆDàØ"0Ø"0Ø!.Ø"0Ø!°NñˆGô ˜'Ð#=¸wÓGÐGô �'Ð5Ø Øñ8ó ð øô+ !×-Ñ-ò NØ×(Ñ(¨Ð/LÖMðNûô  ×%Ñ%ò 	*Ø—‘Ð 2Ð3Ü˜LÓ)Ò)ð	*ús,   ÂAE Ã%E ÄAF Å%FÆFÆ+F4Æ3F4c                 óL   — | j                   j                  «        t        d«      S )Nz	home-page)rU   Úflushr   )rZ   s    r^   Úlogout_viewrø   ^  s   € Ø‡O�O×ÑÔÜ�KÓ Ð rb   c                   ó"   — e Zd ZeZdZdZdZd„ Zy)ÚProjectTypeListViewz src/dashboard/project_types.htmlr„   é   c                 ór   — t         j                  j                  t        d«      ¬«      j	                  d«      S )Nr’   )Úproject_countz-project_count)r   rW   Úannotater
   r‰   ©Úselfs    r^   Úget_querysetz ProjectTypeListView.get_querysetk  s3   € Ü×"Ñ"×+Ñ+Ü 
Ó+ð ,ó 
ç
‰(Ð#Ó
$ð	%rb   N)	Ú__name__Ú
__module__Ú__qualname__r   ÚmodelÚtemplate_nameÚcontext_object_nameÚpaginate_byr  r`   rb   r^   rú   rú   e  s   „ Ø€EØ6€MØ)ÐØ€Kó%rb   rú   c                   ó8   ‡ — e Zd ZeZdZdZdZˆ fd„Zˆ fd„Z	ˆ xZ
S )ÚProjectListViewzsrc/dashboard/project_list.htmlr’   é	   c                 óÔ   •— t         ‰| �  «       j                  d¬«      }| j                  j                  j                  d«      }|r|j                  |¬«      }|j                  d«      S )NTrn   Útype)Úproject_type_idÚproject_type)Úsuperr  r‡   rZ   ÚGETrV   Úselect_related)r   Úquerysetr  Ú	__class__s      €r^   r  zProjectListView.get_querysetv  s\   ø€ Ü‘7Ñ'Ó)×0Ñ0¸4Ð0Ó@ˆØŸ,™,×*Ñ*×.Ñ.¨vÓ6ˆÙØ—‘°�ÓGˆHØ×&Ñ& ~Ó6Ð6rb   c                 óh   •— t        ‰| �  di |¤Ž}t        j                  j	                  «       |d<   |S )Nr„   r`   )r  Úget_context_datar   rW   rŠ   ©r   r\   rô   r  s      €r^   r  z ProjectListView.get_context_data}  s3   ø€ Ü‘'Ñ*Ñ4¨VÑ4ˆÜ#.×#6Ñ#6×#:Ñ#:Ó#<ˆ�Ñ Øˆrb   )r  r  r  r   r  r  r  r  r  r  Ú__classcell__©r  s   @r^   r
  r
  p  s'   ø„ Ø€EØ5€MØ$ÐØ€Kô7÷ð rb   r
  c                   ó*   ‡ — e Zd ZeZdZdZˆ fd„Zˆ xZS )ÚProjectDetailViewz!src/dashboard/project_detail.htmlr•   c                 óº  •— t        ‰| �  d	i |¤Ž}t        j                  j	                  | j
                  ¬«      j                  d«      d d |d<   t        j                  j	                  | j
                  ¬«      j                  d«      j                  «       j                  «       |d<   | j
                  j                  | j
                  j                  z  dz  |d<   |S )
N©r•   ú-donation_daterk   Ú	donationsrë   Útotal_donorséd   Úpercentage_fundedr`   )r  r  r   rW   r‡   Úobjectr‰   ÚvaluesÚdistinctÚcountrŽ   r�   r  s      €r^   r  z"ProjectDetailView.get_context_data‡  s»   ø€ Ü‘'Ñ*Ñ4¨VÑ4ˆÜ'×/Ñ/×6Ñ6¸t¿{¹{Ð6ÓK×TÑTÐUeÓfÐgiÐhiÐjˆ�ÑÜ"*×"2Ñ"2×"9Ñ"9À$Ç+Á+Ð"9Ó"N×"UÑ"UÐV\Ó"]×"fÑ"fÓ"h×"nÑ"nÓ"pˆ�ÑØ(,¯©×(BÑ(BÀTÇ[Á[×E^ÑE^Ñ(^ÐbeÑ'eˆÐ#Ñ$Øˆrb   )	r  r  r  r   r  r  r  r  r  r  s   @r^   r  r  ‚  s   ø„ Ø€EØ7€MØ#Ð÷ð rb   r  c                   ó6   ‡ — e Zd ZeZeZdZd„ Zˆ fd„Z	d„ Z
ˆ xZS )Ú
DonateViewzsrc/dashboard/donate.htmlc                 ó@   — t        t        | j                  d   d¬«      S )NÚ
project_idT)Úpkro   )r   r   r\   rÿ   s    r^   Úget_projectzDonateView.get_project”  s   € Ü ¤¨T¯[©[¸Ñ-FÐRVÔWÐWrb   c                 óL   •— t        ‰| �  di |¤Ž}| j                  «       |d<   |S )Nr•   r`   )r  r  r,  r  s      €r^   r  zDonateView.get_context_data—  s-   ø€ Ü‘'Ñ*Ñ4¨VÑ4ˆØ!×-Ñ-Ó/ˆ�	ÑØˆrb   c                 ó  — | j                   }| j                  «       }|j                  d¬«      }||_        d|_        	 |j                  «        t        ||j                  «      S # t        $ rœ}|j                  rI	 |j                  «        n7# t        $ r+}t        j                  dt        |«      › �«       Y d }~nd }~ww xY wt        j                  | j                   dt        |«      › �«       | j                  |«      cY d }~S d }~ww xY w)NFrÑ   ÚpendingzError deleting donation: zError processing donation: )rZ   r,  rÖ   r•   Úpayment_statusÚdonation_payment_handlerr±   Ú	Exceptionr+  Údeleter-   r×   ÚstrrD   Úform_invalid)r   rÔ   rZ   r•   ÚdonationÚeÚdelete_errors          r^   Ú
form_validzDonateView.form_validœ  sß   € à—l‘lˆGØ×&Ñ&Ó(ˆGØ—y‘y¨�yÓ.ˆHà&ˆHÔØ&/ˆHÔ#ð/Ø—‘”Ü/°¸¿¹ÓEÐEøäò 	/à—;’;ðVØ Ÿ™Õ)øÜ$ò VÜŸ™Ð'@ÄÀ\ÓARÐ@SÐ%T×UÑUûðVúô —‘˜tŸ|™|Ð/JÌ3ÈqË6È(Ð-SÔTØ×(Ñ(¨Ó.Õ.ûð	/úsG   ¾%A$ Á$	D	Á-DÁ:BÂ
DÂ	B?Â!B:Â5DÂ:B?Â??DÃ>D	ÄD	)r  r  r  r   r  r&   Ú
form_classr  r,  r  r9  r  r  s   @r^   r(  r(  Ž  s"   ø„ Ø€EØ€Jà/€MòXôö
/rb   r(  c                   ó:   ‡ — e Zd ZeZeZdZ ed«      Z	ˆ fd„Z
ˆ xZS )ÚCreateProjectViewz!src/dashboard/project_create.htmlÚproject_listc                 ó¦   •— |j                  d¬«      }|j                  «        t        j                  | j                  d«       t        ‰| �  |«      S )NFrÑ   zProject created successfully!)rÖ   rD   r¡   rZ   r  r9  )r   rÔ   r•   r  s      €r^   r9  zCreateProjectView.form_valid¼  sA   ø€ Ø—)‘) 5�)Ó)ˆØ�‰ŒÜ×Ñ˜Ÿ™Ð'FÔGÜ‰wÑ! $Ó'Ð'rb   )r  r  r  r   r  r%   r:  r  rK   Úsuccess_urlr9  r  r  s   @r^   r<  r<  ¶  s&   ø„ Ø€EØ€JØ7€MÙ˜~Ó.€K÷(ð (rb   r<  c                   ó0   ‡ — e Zd ZeZeZdZd„ Zˆ fd„Z	ˆ xZ
S )ÚUpdateProjectViewz!src/dashboard/project_update.htmlc                 óH   — t        dd| j                  j                  i¬«      S )NÚproject_detailr+  ©r\   )rK   r#  r+  rÿ   s    r^   Úget_success_urlz!UpdateProjectView.get_success_urlÇ  s   € ÜÐ,°d¸D¿K¹K¿N¹NÐ5KÔLÐLrb   c                 ób   •— t        j                  | j                  d«       t        ‰| �  |«      S )NzProject updated successfully!)rD   r¡   rZ   r  r9  )r   rÔ   r  s     €r^   r9  zUpdateProjectView.form_validÊ  s(   ø€ Ü×Ñ˜Ÿ™Ð'FÔGÜ‰wÑ! $Ó'Ð'rb   )r  r  r  r   r  r%   r:  r  rE  r9  r  r  s   @r^   rA  rA  Â  s"   ø„ Ø€EØ€JØ7€MòM÷(ð (rb   rA  c           
      ó<  — t         j                  j                  d¬«      j                  d«      d d }t        j                  j                  «       d d }t         j                  j                  dd¬«      }g }g }g }|D ]e  }|j                  |j                  «       |j                  t        |j                  «      «       |j                  t        |j                  «      «       Œg |dd	|d
œdd|d
œgdœ}t        | d||t        j                  |t        ¬«      dœ«      S rÇ   rÈ   rÉ   s	            r^   ÚhomerH  Î  s   € ÜŸ™×.Ñ.¸Ð.Ó>×GÑGÈÓVÐWYÐXYÐZÐÜ×'Ñ'×+Ñ+Ó-¨b¨qÐ1€Mä�‰×%Ñ%¸ÀdÐ%ÓK€Hà€FØ€LØ€Kàò 9ˆØ�‰�g—m‘mÔ$Ø×ÑœE '×"8Ñ"8Ó9Ô:Ø×Ñœ5 ×!6Ñ!6Ó7Õ8ð9ð ð *Ø#,Ø$ñð )Ø#,Ø#ñð
ñ€Jô  �'Ð4Ø.Ø&´d·j±jÀÔQbÔ6cñ7ó ð rb   c                 ó>  — 	 t         j                  j                  |¬«      }|j                  dk7  r6t	        j
                  d«       t        d|j                  j                  ¬«      S |j                  }|dk(  rt        | |«      S |dk(  rt        | |«      S |dk(  rt        | |«      S |d	k(  rt        | |«      S t        d
|› �«      ‚# t        $ rÎ}dt!        «       v rnrl|j                  r`	 |j                  }|j#                  «        t%        |«       n7# t        $ r+}t'        j
                  dt)        |«      › �«       Y d }~nd }~ww xY wt	        j
                  dt)        |«      › �«       t        ddt!        «       v rr|j                  r|nd¬«      cY d }~S d }~ww xY w)Nr°   r/  z(This donation has already been processedrC  ©r+  ÚstripeÚpaypalÚflutterwaveÚcinetpayzUnsupported payment method: r6  úError during donation cleanup: zPayment processing failed: Úpayment_failedr   ©Údonation_id)r   rW   rV   r0  rD   r×   r   r•   r+  Úpayment_methodÚstripe_paymentÚpaypal_paymentÚflutterwave_paymentÚcinetpay_paymentÚ
ValueErrorr2  Úlocalsr3  Úupdate_project_fundingr-   r4  )rZ   rR  r6  rS  r7  r•   Úcleanup_errors          r^   r1  r1  ò  s‹  € ð!AÜ×#Ñ#×'Ñ'¨;Ð'Ó7ˆð ×"Ñ" iÒ/Ü�N‰NÐFÔGÜÐ,°×1AÑ1A×1DÑ1DÔEÐEð "×0Ñ0ˆà˜XÒ%Ü! '¨8Ó4Ð4Ø˜xÒ'Ü! '¨8Ó4Ð4Ø˜}Ò,Ü& w°Ó9Ð9Ø˜zÒ)Ü# G¨XÓ6Ð6äÐ;¸NÐ;KÐLÓMÐMøäò Aàœ›Ñ!¡h°8·;²;ðUØ"×*Ñ*�Ø—‘Ô!Ü& wÕ/øÜò UÜ—‘Ð>¼sÀ=Ó?QÐ>RÐS×TÑTûðUúô 	�‰Ð5´c¸!³f°XÐ>Ô?ÜÐ(ÀZÔSYÓS[ÑE[Ñ`hÐmu×mxÒmx±kÐ~ô  Aõ  	AûðAúsg   ‚A$C Á'C ÂC ÂC Â&C Â7C Ã	FÃFÃ)'DÄFÄ	EÄ!E Ä;FÅ EÅAFÆFÆFc                 óÌ  — 	 dd l }t        j                  |_        |j                  j
                  j                  dgdd|j                  j                  it        |j                  dz  «      dœddœgd	| j                  t        d
d|j                  i¬«      «      | j                  t        dd|j                  i¬«      «      t        |j                  «      t        |j                  j                  «      dœ|j                  ¬«      }t!        |j"                  «      S # t$        $ rÀ}|rl|j&                  r`	 |j                  }|j)                  «        t+        |«       n7# t$        $ r+}t-        j.                  dt        |«      › �«       Y d }~nd }~ww xY wt1        j.                  dt        |«      › �«       t!        d|r|j&                  r|j                  nd¬«      cY d }~S d }~ww xY w)Nr   ÚcardÚusdrš   r!  )ÚcurrencyÚproduct_dataÚunit_amountr   )Ú
price_dataÚquantityÚpaymentÚpayment_successrR  rD  Úpayment_cancel)rR  r*  )Úpayment_method_typesÚ
line_itemsÚmoder?  Ú
cancel_urlÚmetadataÚcustomer_emailzError cleaning up donation: z"Failed to process Stripe payment: rP  rQ  )rK  r   ÚSTRIPE_SECRET_KEYÚapi_keyÚcheckoutÚSessionr    r•   rŒ   ÚintÚamountÚbuild_absolute_urir   r±   r4  Údonator_mailr   Úurlr2  r+  r3  rZ  r-   r×   rD   )rZ   r6  rK  Úcheckout_sessionr7  r•   r8  s          r^   rT  rT    s·  € ð*fÛÜ!×3Ñ3ˆŒà!Ÿ?™?×2Ñ2×9Ñ9Ø"( ð !&à × 0Ñ 0× 6Ñ 6ð%ô $' x§¡¸Ñ'<Ó#=ñð ñ	ð 	ð Ø×2Ñ2ÜÐ)°=À(Ç+Á+Ð2NÔOóð ×1Ñ1ÜÐ(°-ÀÇÁÐ1MÔNóô  # 8§;¡;Ó/Ü! (×"2Ñ"2×"5Ñ"5Ó6ñð &×2Ñ2ð/ :ó 
Ðô4 Ð(×,Ñ,Ó-Ð-øäò 
fÙ˜ŸšðQØ"×*Ñ*�Ø—‘Ô!Ü& wÕ/øÜò QÜ—‘Ð;¼CÀÓ<MÐ;NÐO×PÑPûðQúô 	�‰Ð<¼SÀ»V¸HÐEÔFÜÐ(ÁXÐRZ×R]ÒR]°h·k²kÐcdÔeÕeûð
fúsI   ‚DD Ä	G#Ä#GÄ2'EÅGÅ	FÅ#!F	ÆGÆ	FÆA
GÇG#ÇG#c           
      ó  — 	 t        j                  dt        j                  dk(  rdnd› d�t        j                  t        j
                  fddidd	id
¬«      }|j                  «        |j                  «       d   }ddt        |j                  «      dœd|j                  j                  › �d|j                  › �dœg| j                  t        dd|j                  i¬«      «      | j                  t        dd|j                  i¬«      «      dœdœ}dd|› �dœ}t        j                  dt        j                  dk(  rdnd› d�|t        j                  |«      d
¬«      }|j                  «        |j                  «       d   D ]  }|d   d k(  sŒt!        |d!   «      c S  t#        d"«      ‚# t"        $ r]}|j                  }	|j%                  «        t'        |	«       t)        j*                  d#«       t!        d$|j                  ¬%«      cY d }~S d }~ww xY w)&Nzhttps://api-m.Úlivere   zsandbox.zpaypal.com/v1/oauth2/tokenúContent-Typez!application/x-www-form-urlencodedÚ
grant_typeÚclient_credentialsé
   )ÚauthÚheadersrx   ÚtimeoutÚaccess_tokenÚCAPTUREÚUSD)Úcurrency_codeÚvalueúDonation to Ú	donation_)rr  ÚdescriptionÚ	custom_idre  rR  rD  rf  )Ú
return_urlrj  )ÚintentÚpurchase_unitsÚapplication_contextúapplication/jsonúBearer )ry  ÚAuthorizationzpaypal.com/v2/checkout/orders)r~  rx   r  ÚlinksÚrelÚapproveÚhrefzNo approval link foundz Failed to process PayPal paymentrP  rQ  )ÚrequestsÚpostr   ÚPAYPAL_ENVIRONMENTÚPAYPAL_CLIENT_IDÚPAYPAL_SECRETÚraise_for_statusr�   r4  rr  r•   rŒ   r±   rs  r   r‘   r   r2  r3  rZ  rD   r×   )
rZ   r6  Úauth_responser€  Ú
order_datar~  ÚresponseÚlinkr7  r•   s
             r^   rU  rU  E  s  € ð<Cä Ÿ™Ø¤8×#>Ñ#>À&Ò#H™RÈjÐYÐYsÐtÜ×+Ñ+¬X×-CÑ-CÐDØ#Ð%HÐIØÐ 4Ð5Øô
ˆð 	×&Ñ&Ô(à$×)Ñ)Ó+¨NÑ;ˆð  ð &+Ü  §¡Ó1ñð ".¨h×.>Ñ.>×.DÑ.DÐ-EÐFØ(¨¯©¨Ð6ñ ð ð &×8Ñ8ÜÐ-°}ÀhÇkÁkÐ6RÔSóð &×8Ñ8ÜÐ,°mÀXÇ[Á[Ð5QÔRóñ	$ñ
ˆ
ð* /Ø& | nÐ5ñ
ˆô
 —=‘=Ø¤8×#>Ñ#>À&Ò#H™RÈjÐYÐYvÐwØÜ—‘˜JÓ'Øô	
ˆð 	×!Ñ!Ô#à—M‘M“O GÑ,ò 	.ˆDØ�E‰{˜iÓ'Ü  V¡Ó-Ò-ð	.ô Ð0Ó1Ð1øäò Cà×"Ñ"ˆØ�‰ÔÜ˜wÔ'ä�‰Ð:Ô;ÜÐ(°h·k±kÔBÕBûðCús+   ‚FF& Æ
F& ÆF& Æ&	HÆ/AHÈHÈHc                 óÜ  — 	 d|j                   › dt        t        j                  «       «      › �}dt        j                  › �ddœ}|t        |j                  «      dd| j                  t        dd	|j                   i¬
«      «      |j                  |j                  dœ|j                  j                  d|j                  j                  › �dœdœ}t        j                  d||d¬«      }|j                  «        ||_        |j#                  «        t%        |j'                  «       d   d   «      S # t(        $ r¶}|r‡|j*                  r{	 |j                  }|j-                  «        t/        |«       t%        d|j                   ¬«      cY d }~S # t(        $ r+}t1        j2                  dt        |«      › �«       Y d }~nd }~ww xY wt5        j2                  | d«       t%        dd¬«      cY d }~S d }~ww xY w)Nr†  Ú_rŽ  r�  ©r�  ry  r‚  zcard,account,ussdÚflutterwave_callbackrR  rD  )r™   rš   r…  )rŒ   r‡  )Útx_refrr  r_  Úpayment_optionsÚredirect_urlÚcustomerÚcustomizationsz'https://api.flutterwave.com/v3/paymentsr|  ©r~  r�   r  rx   r�  rP  rQ  rO  z%Failed to process Flutterwave paymentr   )r±   rq  Útimer   ÚFLUTTERWAVE_SECRET_KEYr4  rr  rs  r   rt  Údonator_namer•   rŒ   r”  r•  r™  Útransaction_referencerÖ   r   r�   r2  r+  r3  rZ  r-   r×   rD   )	rZ   r6  r¢  r~  Úpayloadrœ  r7  r•   r[  s	            r^   rV  rV  …  s¼  € ð29Ø˜XŸ[™[˜M¨¬3¬t¯y©y«{Ó+;Ð*<Ð=ˆà&¤x×'FÑ'FÐ&GÐHØ.ñ
ˆð Ü˜(Ÿ/™/Ó*ØØ2Ø#×6Ñ6ÜÐ.¸ÀxÇ{Á{Ð7SÔTóð "×.Ñ.Ø!×.Ñ.ñð
 "×)Ñ)×/Ñ/Ø!-¨h×.>Ñ.>×.DÑ.DÐ-EÐFññ
ˆô$ —=‘=Ø5ØØØô	
ˆð 	×!Ñ!Ô#à)/ˆÔ&Ø�‰Œä˜Ÿ™›¨Ñ/°Ñ7Ó8Ð8øäò 9á˜ŸšðUØ"×*Ñ*�Ø—‘Ô!Ü& wÔ/ÜÐ 0¸h¿k¹kÔJÕJøÜò UÜ—‘Ð>¼sÀ=Ó?QÐ>RÐS×TÑTûðUúô 	�‰�wÐ GÔHÜÐ(°aÔ8Õ8ûð9úsH   ‚D)D, Ä,	G+Ä5G&Å=FÆG+Æ	F;Æ!F6Æ1G&Æ6F;Æ;%G&Ç G+Ç&G+c           	      ó6  — 	 dd l }dd l}t        j                  rt        j                  st        d«      ‚d|j                  › dt         |j                  «       «      › �}t        j                  dk(  rt        t        |j                  «      «      }nt        |j                  «      }t        j                  › t        j                  › |› |› t        j                  › �}|j                  |j                  «       «      j                  «       }i dt        j                  “dt        j                  “d|“d	|“d
t        j                  “dd|j                  j                  › �“d| j!                  t#        dd|j                  i¬«      «      “d| j!                  t#        d«      «      “d|j$                  “d|j&                  “d|j(                  “dd“dd“dd“dd“dt+        j,                  dt/        |j                  «      i«      “d|“}dd i}	t1        j2                  d!||	d"¬#«      }
|
j5                  «        |
j+                  «       }|j7                  d$«      d%k7  r |j7                  d&d'«      }t        d(|› �«      ‚||_        ||d)œ|_        |j=                  «        t?        |d*   d+   «      S # t0        j@                  jB                  $ r8}tE        jF                  d,|jH                  jJ                  › �«       d-}Y d }~nGd }~wt
        $ r8}tE        jF                  d.t/        |«      › �d/¬0«       t/        |«      }Y d }~nd }~ww xY w|jL                  r|jO                  «        tQ        jF                  d1|› �«       t?        d2|jL                  r|j                  ¬3«      S d¬3«      S )4Nr   z#CinetPay API key or site ID missingÚdon_rŸ  ÚXOFÚapikeyÚsite_idÚtransaction_idrr  r_  r‡  r…  r‰  Úcinetpay_callbackrR  rD  Ú
notify_urlÚcinetpay_webhookÚcustomer_namerl  Úcustomer_phone_numberÚcustomer_addresszNot providedÚcustomer_cityÚcustomer_countryÚCDÚchannelsÚALLrk  Ú	signaturery  r�  z,https://api-checkout.cinetpay.com/v2/paymenté   )r�   r~  r  ÚcodeÚ201r¥   zUnknown CinetPay errorzCinetPay API error: )Úrequest_payloadÚapi_responserx   Úpayment_urlzCinetPay HTTP Error: z*CinetPay rejected the request (check logs)zCinetPay Error: T©Úexc_infoúPayment failed: rP  rQ  ))Úhashlibr¨  r   ÚCINETPAY_API_KEYÚCINETPAY_SITE_IDr2  r±   rq  ÚCINETPAY_CURRENCYr�   rr  Úsha256ÚencodeÚ	hexdigestr•   rŒ   rs  r   rª  rt  Údonator_telr�   r‘   r4  r”  r•  r™  rV   r«  Úpayment_metadatarÖ   r   Ú
exceptionsÚ	HTTPErrorr-   r×   rœ  Útextr+  r3  rD   )rZ   r6  rÈ  r¨  r²  rr  Úsignature_datar¾  r¬  r~  rœ  rx   Ú	error_msgr7  s                 r^   rW  rW  »  sœ  € ðSÛÛô ×(Ò(´×0IÒ0IÜÐAÓBÐBð   §¡˜}¨A¬c°)°$·)±)³+Ó.>Ð-?Ð@ˆô ×%Ñ%¨Ò.Üœ˜xŸ™Ó/Ó0‰Fä˜Ÿ™Ó)ˆFô %×5Ñ5Ð6´x×7PÑ7PÐ6QÐR`ÐQaÐbhÐaiÔjr÷  kEñ  kEð  jFð  GˆØ—N‘N >×#8Ñ#8Ó#:Ó;×EÑEÓGˆ	ð
Ø”h×/Ñ/ð
à”x×0Ñ0ð
ð ˜nð
ð �fð	
ð
 œ×2Ñ2ð
ð ˜\¨(×*:Ñ*:×*@Ñ*@Ð)AÐBð
ð ˜'×4Ñ4ÜÐ+°]ÀHÇKÁKÐ4PÔQóð
ð ˜'×4Ñ4´WÐ=OÓ5PÓQð
ð ˜h×3Ñ3ð
ð ˜h×3Ñ3ð
ð $ X×%9Ñ%9ð
ð  ð
ð ˜^ð
ð   ð!
ð" ˜ð#
ð$ œŸ
™
 M´3°x·{±{Ó3CÐ#DÓEð%
ð& ˜ð'
ˆð. "Ð#5Ð6ˆÜ—=‘=Ø:ØØØô	
ˆð 	×!Ñ!Ô#Ø�}‰}‹ˆð �8‰8�FÓ˜uÒ$ØŸ™ Ð,DÓEˆIÜÐ2°9°+Ð>Ó?Ð?ð *8ˆÔ&à&Ø ñ%
ˆÔ!ð 	�‰Œô ˜˜V™ ]Ñ3Ó4Ð4øä×Ñ×(Ñ(ò AÜ�‰Ð,¨Q¯Z©Z¯_©_Ð,=Ð>Ô?Ø@�	ûÜò Ü�‰Ð'¬¨A« xÐ0¸4Õ@Ü˜“F�	ûðúð
 ‡{‚{Ø�‰Ôä‡N�NÐ& y kÐ2Ô3ÜÐ$ÀÇÂ°(·+±+ÔTÐTÐRSÔTÐTs$   ‚J#J& Ê&L:Ë.K6Ë6L:Ì.L5Ì5L:c                 ón  — | j                   }| j                  j                  d«      }d }	 dd l}t        j
                  |_        |j                  j                  ||t        j                  «      }|d   dk(  r}|d   d   }	 |d	   d
   }t        j                   j                  |¬«      }|j"                  dk(  r=d|_        |j$                  |_        |j)                  «        t+        |j,                  «       t        d¬«      S # t        $ r}t        d¬«      cY d }~S d }~wj                  j                  $ r}t        d¬«      cY d }~S d }~wt        $ r}t        d¬«      cY d }~S d }~ww xY w# t        j.                  $ r Y Œ�t        $ r+}t1        j                  dt3        |«      › �«       Y d }~Œ»d }~ww xY w)NÚHTTP_STRIPE_SIGNATUREr   é�  ©Ústatusr  zcheckout.session.completedrx   r#  rk  rR  r°   ÚpaidÚ	completedz!Error processing Stripe webhook: éÈ   )Úbodyr¢   rV   rK  r   rm  rn  ÚWebhookÚconstruct_eventÚSTRIPE_WEBHOOK_SECRETrX  r   r×   ÚSignatureVerificationErrorr2  r   rW   r0  Úpayment_intentr«  rÖ   rZ  r•   rY   r-   r4  )	rZ   r¬  Ú
sig_headerÚeventrK  r7  rU   rR  r6  s	            r^   Ústripe_webhookræ    s~  € à�l‰l€GØ—‘×!Ñ!Ð"9Ó:€JØ€Eð(ÛÜ!×3Ñ3ˆŒà—‘×.Ñ.Ø�Z¤×!?Ñ!?ó
ˆð ˆV�}Ð4Ò4Ø˜‘- Ñ)ˆð	GØ! *Ñ-¨mÑ<ˆKÜ×'Ñ'×+Ñ+¨{Ð+Ó;ˆHð ×%Ñ%¨Ò/Ø*5�Ô'Ø18×1GÑ1G�Ô.Ø—‘”Ü& x×'7Ñ'7Ô8ô ˜sÔ#Ð#øô9 ò (ä 3Ô'Õ'ûØ�<‰<×2Ñ2ò (ä 3Ô'Õ'ûÜò (Ü 3Ô'Õ'ûð(ûô" ×$Ñ$ò 	ÙÜò 	GÜ�L‰LÐ<¼SÀ»V¸HÐE×FÑFûð	Gúsa   «AD  Â A4E, Ä 	E)Ä	DÄE)ÄE)Ä6EÅE)ÅE)ÅE$ÅE)Å$E)Å,F4ÆF4Æ	!F/Æ/F4c                 ó¸  — 	 t         j                  j                  |¬«      }| j                  j                  d«      }|st	        d«      ‚dt
        j                  › �ddœ}t        j                  d|› d�|d	¬
«      }t        j                  d|j                  › �«       |j                  «        |j                  «       }|d   d   dk(  r¾t        t        |d   d   «      «      t        t        |j                  «      «      k7  r!t	        d|j                  › d|d   d   › �«      ‚d|_        ||_        t        j$                  |«      |_        |j)                  «        t+        |j,                  «       t/        d|j0                  ¬«      S |j                  d|d   j                  dd«      «      }t        j2                  d|› �«       |j,                  }|j5                  «        t+        |«       t7        j8                  | d|› �«       t/        d|j:                  ¬«      S # t         j<                  $ r= t        j8                  d|› d�«       t7        j8                  | d«       t/        d«      cY S t        j>                  j@                  $ r¥}	t        j8                  d t        |	«      › �«       d!tC        «       v r3j:                  r'|j,                  }|j5                  «        t+        |«       t7        j8                  | d"«       t/        dd#tC        «       v rj:                  nd$¬«      cY d%}	~	S d%}	~	wt        $ r§}	t        j8                  d&t        |	«      › �d'¬(«       d!tC        «       v r3j:                  r'|j,                  }|j5                  «        t+        |«       t7        j8                  | d)«       t/        dd#tC        «       v rj:                  nd$¬«      cY d%}	~	S d%}	~	ww xY w)*z@Handle Flutterwave payment callback (user redirect back to site)r°   r²  ú&No transaction ID provided in callbackrŽ  r�  r   z,https://api.flutterwave.com/v3/transactions/z/verifyé   )r~  r  z#Flutterwave Verification Response: rx   rÚ  Ú
successfulrr  zAmount mismatch: Expected z, got rÜ  re  rQ  r¥   Úprocessor_responsezPayment failedz#Flutterwave payment not confirmed: rÇ  rC  rJ  ú	Donation ú
 not foundúDonation record not foundrH  z Flutterwave API request failed: r6  ú4Payment verification failed. Please contact support.r•   r   NzFlutterwave callback error: TrÅ  ú6An unexpected error occurred during payment processing)"r   rW   rV   r  r2  r   r©  r”  r-   ÚinforÓ  r™  r�   r3   r4  rr  r0  r«  r‘   rÐ  rÖ   rZ  r•   r   r±   rŸ   r3  rD   r×   r+  rY   rÑ  ÚRequestExceptionrY  )
rZ   rR  r6  r²  r~  rœ  ÚverificationrÕ  r•   r7  s
             r^   r¡  r¡  D  s5  € ðCYÜ×#Ñ#×'Ñ'¨;Ð'Ó7ˆØ Ÿ™Ÿ™Ð)9Ó:ˆáÜÐDÓEÐEð  '¤x×'FÑ'FÐ&GÐHØ.ñ
ˆô
 —<‘<Ø:¸>Ð:JÈ'ÐRØØô
ˆô 	�‰Ð9¸(¿-¹-¸ÐIÔJØ×!Ñ!Ô#Ø—}‘}“ˆð ˜Ñ Ñ)¨\Ò9ä”s˜<¨Ñ/°Ñ9Ó:Ó;¼wÄsÈ8Ï?É?ÓG[Ó?\Ò\ÜÐ"<¸X¿_¹_Ð<MÈVÐT`ÐagÑThÐiqÑTrÐSsÐ tÓuÐuà&1ˆHÔ#Ø-;ˆHÔ*Ü(,¯
©
°<Ó(@ˆHÔ%Ø�M‰MŒOÜ" 8×#3Ñ#3Ô4ÜÐ-¸8¿;¹;ÔGÐGð !×$Ñ$ Y°¸VÑ0D×0HÑ0HÐI]Ð_oÓ0pÓqˆ	Ü�‰Ð<¸Y¸KÐHÔIà×"Ñ"ˆØ�‰ÔÜ˜wÔ'Ü�‰�wÐ"2°9°+Ð >Ô?ÜÐ(¨W¯Z©ZÔ8Ð8øä× Ñ ò  Ü�‰�y  ¨ZÐ8Ô9Ü�‰�wÐ ;Ô<Ü˜ÓÒä×Ñ×/Ñ/ò YÜ�‰Ð7¼¸A»°xÐ@ÔAØœ›Ñ! h§k¢kØ×&Ñ&ˆGØ�O‰OÔÜ" 7Ô+Ü�‰�wÐ VÔWÜÐ(¸9ÌËÑ;P¨W¯ZªZÐVWÔXÕXûäò YÜ�‰Ð3´C¸³F°8Ð<ÀtÕLØœ›Ñ! h§k¢kØ×&Ñ&ˆGØ�O‰OÔÜ" 7Ô+Ü�‰�wÐ XÔYÜÐ(¸9ÌËÑ;P¨W¯ZªZÐVWÔXÕXûðYús@   ‚FH ÆBH ÈAOÉ*OÊBL&Ì OÌ&OÌ2BOÏOÏOc                 ó(  ‡
— | j                   dk7  rt        d¬«      S 	 t        j                  | j                  j                  d«      «      Š
t        j                  d‰
› �«       t        j                  }| j                  j                  d«      }|r&||k7  r!t        j                  d«       t        d¬«      S g d	¢}t        ˆ
fd
„|D «       «      s!t        j                  d«       t        d¬«      S ‰
d   }‰
d   }‰
d   }‰
d   }	 t        j                  j                  |d¬«      }|dk(  rØt#        t%        ‰
d   «      «      t#        t%        |j&                  «      «      k7  r.t        j                  d|j(                  › �«       t        d¬«      S d|_        t        j,                  ‰
«      |_        |j1                  «        t3        |j4                  «       t        j                  d|j(                  › �«       t        d¬«      S t        j6                  d|j(                  › �«       |j9                  «        t3        |j4                  «       t        d¬«      S # t        j                   $ r' t        j                  d|› �«       t        d¬«      cY S w xY w# t        j:                  $ r$ t        j                  d«       t        d¬«      cY S t        j                   $ r$ t        j                  d«       t        d¬«      cY S t<        j>                  j@                  $ r7}	t        j                  dt%        |	«      › �«       t        d¬«      cY d}	~	S d}	~	wtB        $ r9}	t        j                  d t%        |	«      › �d!¬"«       t        d#¬«      cY d}	~	S d}	~	ww xY w)$z9Handle Flutterwave server-to-server webhook notificationsr˜   é•  rÙ  úutf-8zFlutterwave Webhook Payload: z
verif-hashzInvalid webhook signaturei‘  )r±   r¢  rÚ  rr  c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w©Nr`   ©Ú.0Úfieldr¬  s     €r^   ú	<genexpr>z&flutterwave_webhook.<locals>.<genexpr>¡  ó   øè ø€ ÒA¨�5˜GÔ#ÑAùó   ƒú*Missing required fields in webhook payloadrØ  r±   r¢  rÚ  rr  r/  ©r«  r0  ú$Donation not found for transaction: é”  rê  zAmount mismatch for donation rÜ  úPayment completed for donation rÝ  úPayment failed for donation úInvalid JSON in webhook payloadú,Donation not found during webhook processingú#Request error during verification: éö  NúWebhook processing error: TrÅ  éô  )"r�   r   r�   ÚloadsrÞ  Údecoder-   rñ  r   ÚFLUTTERWAVE_WEBHOOK_HASHr~  rV   r×   rŠ   r   rW   rY   r3   r4  rr  r±   r0  r‘   rÐ  rÖ   rZ  r•   rŸ   r3  ÚJSONDecodeErrorr”  rÑ  rò  r2  )rZ   Úsecret_hashr¾  Úrequired_fieldsr²  Útransaction_refrÚ  rr  r6  r7  r¬  s             @r^   Úflutterwave_webhookr  �  sã  ø€ ð ‡~�~˜ÒÜ 3Ô'Ð'ðC(Ü—*‘*˜WŸ\™\×0Ñ0°Ó9Ó:ˆÜ�‰Ð3°G°9Ð=Ô>ô ×7Ñ7ˆØ—O‘O×'Ñ'¨Ó5ˆ	á˜9¨Ò3Ü�L‰LÐ4Ô5Ü sÔ+Ð+ò ?ˆÜÓA°ÔAÔAÜ�L‰LÐEÔFÜ sÔ+Ð+à  ™ˆØ! (Ñ+ˆØ˜Ñ"ˆØ˜Ñ"ˆð	,Ü×'Ñ'×+Ñ+Ø&5Ø(ð ,ó ˆHð �\Ò!ä”s˜7 8Ñ,Ó-Ó.´'¼#¸h¿o¹oÓ:NÓ2OÒOÜ—‘Ð<¸X¿[¹[¸MÐJÔKÜ#¨3Ô/Ð/à&1ˆHÔ#Ü(,¯
©
°7Ó(;ˆHÔ%Ø�M‰MŒOÜ" 8×#3Ñ#3Ô4Ü�K‰KÐ9¸(¿+¹+¸ÐGÔHÜ sÔ+Ð+ô 	�‰Ð5°h·k±k°]ÐCÔDØ�‰ÔÜ˜x×/Ñ/Ô0Ü 3Ô'Ð'øô- ×$Ñ$ò 	,Ü�L‰LÐ?ÀÐ?PÐQÔRÜ sÔ+Ò+ð	,ûô0 ×Ñò (Ü�‰Ð6Ô7Ü 3Ô'Ò'ä× Ñ ò (Ü�‰ÐCÔDÜ 3Ô'Ò'ä×Ñ×/Ñ/ò (Ü�‰Ð:¼3¸q»6¸(ÐCÔDÜ 3Ô'Õ'ûäò (Ü�‰Ð1´#°a³&°Ð:ÀTÕJÜ 3Ô'Õ'ûð(ús{   žBJ Â78J Ã0J Ä!I Ä&A(J ÆA3J ÈAJ É7JÊJ ÊJÊJ Ê4NË	3NË>NÌ,MÍNÍNÍ.NÎNÎNc                 ó€  — 	 t         j                  j                  |¬«      }| j                  j                  d«      xs | j                  j                  d«      }|st        d«      ‚t        j                  t        j                  |dœ}dddt        j                  › �dœ}t        j                  d||d	¬
«      }t        j                  d|j                  › �«       |j                  «        |j                  «       }|j                  d«      dk(  ro|d   d   dk(  rdd|_        ||_        t        j$                  |«      |_        |j)                  «        t+        |j,                  «       t/        d|j0                  ¬«      S |j                  dd«      }t        j2                  d|› �«       |j,                  }	|j5                  «        t+        |	«       t7        j8                  | d|› �«       t/        d|	j:                  ¬«      S # t         j<                  $ r= t        j8                  d|› d�«       t7        j8                  | d«       t/        d«      cY S t        j>                  j@                  $ r¥}
t        j8                  dtC        |
«      › �«       dtE        «       v r3j:                  r'|j,                  }	|j5                  «        t+        |	«       t7        j8                  | d «       t/        dd!tE        «       v r	j:                  nd"¬«      cY d#}
~
S d#}
~
wt
        $ r§}
t        j8                  d$tC        |
«      › �d%¬&«       dtE        «       v r3j:                  r'|j,                  }	|j5                  «        t+        |	«       t7        j8                  | d'«       t/        dd!tE        «       v r	j:                  nd"¬«      cY d#}
~
S d#}
~
ww xY w)(z=Handle CinetPay payment callback (user redirect back to site)r°   Úcpm_trans_idrè  ©r°  r±  r²  r�  rŽ  ©ry  ÚAcceptr�  ú6https://api-checkout.cinetpay.com/v2/transaction/checkr¿  r§  z CinetPay Verification Response: rÀ  Ú00rx   rÚ  ÚACCEPTEDrÜ  re  rQ  r¥   zPayment not confirmedz CinetPay payment not confirmed: rÇ  rC  rJ  rì  rí  rî  rH  zCinetPay API request failed: r6  rï  r•   r   NzCinetPay callback error: TrÅ  rð  )#r   rW   rV   r  r˜   r2  r   rÉ  rÊ  r”  r•  r-   rñ  rÓ  r™  r�   r0  r«  r‘   rÐ  rÖ   rZ  r•   r   r±   rŸ   r3  rD   r×   r+  rY   rÑ  rò  r4  rY  )rZ   rR  r6  r²  Úverification_datar~  rœ  ró  rÕ  r•   r7  s              r^   r³  r³  Ø  s  € ðGYÜ×#Ñ#×'Ñ'¨;Ð'Ó7ˆØ Ÿ™Ÿ™¨Ó8Ò\¸G¿L¹L×<LÑ<LÈ^Ó<\ˆáÜÐDÓEÐEô ×/Ñ/Ü×0Ñ0Ø,ñ
Ðð /Ø(Ø&¤x×'@Ñ'@Ð&AÐBñ
ˆô —=‘=ØDØØ"Øô	
ˆô 	�‰Ð6°x·}±}°oÐFÔGØ×!Ñ!Ô#Ø—}‘}“ˆð ×Ñ˜FÓ# tÒ+°¸VÑ0DÀXÑ0NÐR\Ò0\Ø&1ˆHÔ#Ø-;ˆHÔ*Ü(,¯
©
°<Ó(@ˆHÔ%Ø�M‰MŒOÜ" 8×#3Ñ#3Ô4ÜÐ-¸8¿;¹;ÔGÐGð !×$Ñ$ YÐ0GÓHˆ	Ü�‰Ð9¸)¸ÐEÔFà×"Ñ"ˆØ�‰ÔÜ˜wÔ'Ü�‰�wÐ"2°9°+Ð >Ô?ÜÐ(¨W¯Z©ZÔ8Ð8øä× Ñ ò  Ü�‰�y  ¨ZÐ8Ô9Ü�‰�wÐ ;Ô<Ü˜ÓÒä×Ñ×/Ñ/ò YÜ�‰Ð4´S¸³V°HÐ=Ô>Øœ›Ñ! h§k¢kØ×&Ñ&ˆGØ�O‰OÔÜ" 7Ô+Ü�‰�wÐ VÔWÜÐ(¸9ÌËÑ;P¨W¯ZªZÐVWÔXÕXûäò YÜ�‰Ð0´°Q³°Ð9ÀDÕIØœ›Ñ! h§k¢kØ×&Ñ&ˆGØ�O‰OÔÜ" 7Ô+Ü�‰�wÐ XÔYÜÐ(¸9ÌËÑ;P¨W¯ZªZÐVWÔXÕXûðYús@   ‚E;G? Å>B G? Ç?AN=ÉN=É*BL
ÌN=Ì
N=ÌBN8Î2N=Î8N=c                 ó”  ‡— | j                   dk7  rt        d¬«      S 	 t        j                  | j                  j                  d«      «      Št        j                  d‰› �«       g d¢}t        ˆfd„|D «       «      s!t        j                  d«       t        d	¬«      S ‰d
   }‰d   }‰d   }‰d   }‰d   }|t        j                  k7  r$t        j                  d|› �«       t        d	¬«      S 	 t        j                  j                  |d¬«      }t        j                   t        j                  |dœ}dddt        j                   › �dœ}	t#        j$                  d|	|d¬«      }
t        j                  d|
j&                  › �«       |
j)                  «        |
j                  «       }|j                  d«      dk(  r‚|d   d   d k(  rwd!|_        t        j,                  ‰|d"œ«      |_        |j1                  «        t3        |j4                  «       t        j                  d#|j6                  › �«       t        d$¬«      S t        j8                  d%|j6                  › �«       |j;                  «        t3        |j4                  «       t        d$¬«      S # t        j                  $ r' t        j                  d|› �«       t        d¬«      cY S w xY w# t        j<                  $ r$ t        j                  d&«       t        d	¬«      cY S t        j                  $ r$ t        j                  d'«       t        d¬«      cY S t"        j>                  j@                  $ r7}t        j                  d(tC        |«      › �«       t        d)¬«      cY d*}~S d*}~wtD        $ r9}t        j                  d+tC        |«      › �d,¬-«       t        d.¬«      cY d*}~S d*}~ww xY w)/z6Handle CinetPay server-to-server webhook notificationsr˜   rõ  rÙ  rö  zCinetPay Webhook Payload: )r  Úcpm_site_idÚ
cpm_resultÚ
cpm_amountÚcpm_currencyc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wrø  r`   rù  s     €r^   rü  z#cinetpay_webhook.<locals>.<genexpr>1  rý  rþ  rÿ  rØ  r  r  r  r  r   zInvalid site ID in webhook: r/  r   r  r  r  r�  rŽ  r  r  r¿  r§  zCinetPay Webhook Verification: rÀ  r  rx   rÚ  r  rÜ  )Úwebhookró  r  rÝ  r  r  r  r  r  Nr	  TrÅ  r
  )#r�   r   r�   r  rÞ  r  r-   rñ  rŠ   r×   r   rÊ  r   rW   rV   rY   rÉ  r”  r•  rÓ  r™  r0  r‘   rÐ  rÖ   rZ  r•   r±   rŸ   r3  r  rÑ  rò  r4  r2  )rZ   r  r²  r±  rÚ  rr  r_  r6  r  r~  rœ  ró  r7  r¬  s                @r^   rµ  rµ  %  sI  ø€ ð ‡~�~˜ÒÜ 3Ô'Ð'ðV(Ü—*‘*˜WŸ\™\×0Ñ0°Ó9Ó:ˆÜ�‰Ð0°°	Ð:Ô;ò fˆÜÓA°ÔAÔAÜ�L‰LÐEÔFÜ sÔ+Ð+à  Ñ0ˆØ˜-Ñ(ˆØ˜Ñ&ˆØ˜Ñ&ˆØ˜>Ñ*ˆà”h×/Ñ/Ò/Ü�L‰LÐ7¸°yÐAÔBÜ sÔ+Ð+ð	,Ü×'Ñ'×+Ñ+Ø&4Ø(ð ,ó ˆHô ×/Ñ/Ü×0Ñ0Ø,ñ
Ðð /Ø(Ø&¤x×'@Ñ'@Ð&AÐBñ
ˆô —=‘=ØDØØ"Øô	
ˆô 	�‰Ð5°h·m±m°_ÐEÔFØ×!Ñ!Ô#Ø—}‘}“ˆð ×Ñ˜FÓ# tÒ+°¸VÑ0DÀXÑ0NÐR\Ò0\Ø&1ˆHÔ#Ü(,¯
©
Ø"Ø ,ñ4ó )ˆHÔ%ð �M‰MŒOÜ" 8×#3Ñ#3Ô4Ü�K‰KÐ9¸(¿+¹+¸ÐGÔHÜ sÔ+Ð+ô 	�‰Ð5°h·k±k°]ÐCÔDØ�‰ÔÜ˜x×/Ñ/Ô0Ü 3Ô'Ð'øôY ×$Ñ$ò 	,Ü�L‰LÐ?ÀÐ?OÐPÔQÜ sÔ+Ò+ð	,ûô\ ×Ñò (Ü�‰Ð6Ô7Ü 3Ô'Ò'ä× Ñ ò (Ü�‰ÐCÔDÜ 3Ô'Ò'ä×Ñ×/Ñ/ò (Ü�‰Ð:¼3¸q»6¸(ÐCÔDÜ 3Ô'Õ'ûäò (Ü�‰Ð1´#°a³&°Ð:ÀTÕJÜ 3Ô'Õ'ûð(úso   žA>K	 ÂAK	 Ã.!J ÄD)K	 È9AK	 Ê7KËK	 ËKËK	 Ë	4OË?3OÌ4OÍ,NÍ<OÎOÎ.OÎ<OÏOc                 ó°   — t         j                  j                  | d¬«      j                  t	        d«      ¬«      d   xs d| _        | j                  «        y ©NrÜ  )r•   r0  rr  ©Útotalr&  r   ©r   rW   r‡   Ú	aggregater	   rŽ   rÖ   r  s    r^   rZ  rZ  ƒ  sW   € Ü%×-Ñ-×4Ñ4ØØ"ð 5ó ÷ �i”c˜(“m€iÓ$ Wñ.ò 3ð 23ð Ôð ‡L�L…Nrb   c                   ó$   — e Zd ZeZdZdZd„ Zd„ Zy)ÚPaymentSuccessViewzsrc/dashboard/success.htmlr6  c                 óÄ   — t        t        | j                  d   ¬«      }|j                  dk7  r2d|_        |j	                  «        | j                  |j                  «       |S )NrR  r°   rÜ  )r   r   r\   r0  rÖ   rZ  r•   ©r   r6  s     r^   Ú
get_objectzPaymentSuccessView.get_object�  sQ   € Ü$¤X°$·+±+¸mÑ2LÔMˆð ×"Ñ" kÒ1Ø&1ˆHÔ#Ø�M‰MŒOà×'Ñ'¨×(8Ñ(8Ô9àˆrb   c                 ó°   — t         j                  j                  |d¬«      j                  t	        d«      ¬«      d   xs d|_        |j                  «        y r$  r'  )r   r•   s     r^   rZ  z)PaymentSuccessView.update_project_funding›  sW   € Ü!)×!1Ñ!1×!8Ñ!8ØØ&ð "9ó "
÷ ‰)œ#˜h›-ˆ)Ó
(¨ñ"2ò "7ð 67ð 	Ôð 	�‰�rb   N)	r  r  r  r   r  r  r  r-  rZ  r`   rb   r^   r*  r*  Š  s   „ Ø€EØ0€MØ$Ðò
órb   r*  c                   ó0   ‡ — e Zd ZeZdZdZd„ Zˆ fd„Zˆ xZ	S )ÚPaymentFailedViewzsrc/dashboard/failed.htmlr6  c                 óŠ   — 	 | j                   j                  d«      }|r|dk7  rt        t        |¬«      S y # t        $ r Y y w xY w)NrR  Ú0r°   )r\   rV   r   r   r2  )r   rR  s     r^   r-  zPaymentFailedView.get_object§  sE   € ð	ØŸ+™+Ÿ/™/¨-Ó8ˆKÙ˜{¨cÒ1Ü(¬°kÔBÐBØøÜò 	Ùð	ús   ‚26 ¶	AÁAc                 óx   •— t        ‰| �  di |¤Ž}| j                  j                  j	                  dd«      |d<   |S )Nr×   zPayment processing failedÚerror_messager`   ©r  r  rZ   r  rV   r  s      €r^   r  z"PaymentFailedView.get_context_data°  s<   ø€ Ü‘'Ñ*Ñ4¨VÑ4ˆØ#'§<¡<×#3Ñ#3×#7Ñ#7¸ÐA\Ó#]ˆ�Ñ Øˆrb   ©
r  r  r  r   r  r  r  r-  r  r  r  s   @r^   r0  r0  ¢  s"   ø„ Ø€EØ/€MØ$Ðò÷ð rb   r0  c                   ó0   ‡ — e Zd ZeZdZdZd„ Zˆ fd„Zˆ xZ	S )ÚPaymentCancelViewzsrc/dashboard/cancel.htmlr6  c                 óŽ   — t        t        | j                  d   ¬«      }|j                  dk(  rd|_        |j	                  «        |S )NrR  r°   r/  Úcanceled)r   r   r\   r0  rÖ   r,  s     r^   r-  zPaymentCancelView.get_objectº  s=   € Ü$¤X°$·+±+¸mÑ2LÔMˆð ×"Ñ" iÒ/Ø&0ˆHÔ#Ø�M‰MŒOàˆrb   c                 óx   •— t        ‰| �  di |¤Ž}| j                  j                  j	                  dd«      |d<   |S )NÚreasonzPayment was canceled by userÚcancel_reasonr`   r5  r  s      €r^   r  z"PaymentCancelView.get_context_dataÄ  s<   ø€ Ü‘'Ñ*Ñ4¨VÑ4ˆØ#'§<¡<×#3Ñ#3×#7Ñ#7¸ÐB`Ó#aˆ�Ñ Øˆrb   r6  r  s   @r^   r8  r8  µ  s"   ø„ Ø€EØ/€MØ$Ðò÷ð rb   r8  c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚUserProfileViewzsrc/dashboard/profile.htmlc                 óv  •— t        ‰
| �  di |¤Ž}| j                  j                  }t        j
                  j                  |d¬«      j                  d«      j                  d«      }|j                  t        d«      ¬«      d   xs d}|j                  t        d«      ¬«      d   xs dd	z  }i }|D ]£  }|j                  j                  |vr0|j                  t        d
«      g dœ||j                  j                  <   ||j                  j                     dxx   |j                  z  cc<   ||j                  j                     d   j                  |«       Œ¥ t         j
                  j                  d¬«      j                  d«      j#                  «       }	|j%                  ||||j'                  «       |	dœ«       |S ©NrÜ  )rë   r0  r•   r  rr  r%  r&  r   éP   r2  )r•   Útotal_donatedr  rC  r  Trn   rp   )rë   rC  Útotal_pointsÚprojects_donatedÚrecent_projectr`   ©r  r  rZ   rë   r   rW   r‡   r  r‰   r(  r	   r•   r±   r3   rr  r‹   r   ÚfirstÚupdater$  ©r   r\   rô   rë   r  rC  rD  rE  r6  rF  r  s             €r^   r  z UserProfileView.get_context_dataÌ  ó¬  ø€ Ü‘'Ñ*Ñ4¨VÑ4ˆØ�|‰|× Ñ ˆô ×$Ñ$×+Ñ+ØØ&ð ,ó 
÷ ‰.˜Ó
#§H¡HÐ-=Ó$>ð 	ð "×+Ñ+´#°h³-Ð+Ó@ÀÑIÒNÈQˆØ!×+Ñ+´#°h³-Ð+Ó@ÀÑIÒNÈQÐRTÑTˆð ÐØ!ò 	PˆHØ×Ñ×"Ñ"Ð*:Ñ:à'×/Ñ/Ü%,¨S£\Ø!#ñ9Ð  ×!1Ñ!1×!4Ñ!4Ñ5ð
 ˜X×-Ñ-×0Ñ0Ñ1°/ÓBÀhÇoÁoÑUÓBØ˜X×-Ñ-×0Ñ0Ñ1°+Ñ>×EÑEÀhÕOð	Pô !Ÿ™×/Ñ/¸$Ð/Ó?×HÑHÈÓW×]Ñ]Ó_ˆà�‰ØØ*Ø(Ø 0× 7Ñ 7Ó 9Ø,ñ
ô 	ð ˆrb   ©r  r  r  r  r  r  r  s   @r^   r?  r?  É  s   ø„ Ø0€M÷$ð $rb   r?  c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Úyenuzsrc/dashboard/yenu.htmlc                 óv  •— t        ‰
| �  di |¤Ž}| j                  j                  }t        j
                  j                  |d¬«      j                  d«      j                  d«      }|j                  t        d«      ¬«      d   xs d}|j                  t        d«      ¬«      d   xs dd	z  }i }|D ]£  }|j                  j                  |vr0|j                  t        d
«      g dœ||j                  j                  <   ||j                  j                     dxx   |j                  z  cc<   ||j                  j                     d   j                  |«       Œ¥ t         j
                  j                  d¬«      j                  d«      j#                  «       }	|j%                  ||||j'                  «       |	dœ«       |S rA  rG  rJ  s             €r^   r  zyenu.get_context_dataõ  rK  rb   rL  r  s   @r^   rN  rN  ò  s   ø„ Ø-€M÷$ð $rb   rN  c                 ó¦  — d}t         j                  j                  «       }t        j                  j                  «       }| j                  dk(  rô| j
                  j                  dd«      j                  «       }|rÈ|j                  «       }t        «       }t        «       }|D ]a  }|t        |¬«      t        |¬«      z  z  }|t        |¬«      t        |¬«      z  t        |¬«      z  t        |¬«      z  t        |¬	«      z  z  }Œc t         j                  j                  |«      }t        j                  j                  |«      }t        | d
|||dœ«      S )Nre   r˜   zsearch-field)Útitle__icontains)Údescription__icontains)Útextdisplay1__icontains)Útextdisplay2__icontains)Útextdisplay3__icontains)Útextdisplay4__icontainszsrc/search_result.html)Úqueryr’   r¹   )r   rW   Únoner   r�   r˜   rV   ÚstripÚsplitr;   r‡   r   )rZ   rW  r’   r¹   ÚkeywordsÚ	project_qÚevent_qÚwords           r^   Ú	searchanyr_    s:  € Ø€EÜ�‰×#Ñ#Ó%€HÜ×'Ñ'×,Ñ,Ó.€Fà‡~�~˜ÒØ—‘× Ñ  °Ó4×:Ñ:Ó<ˆáà—{‘{“}ˆHä›ˆIÜ“cˆGà ò �ØÜ tÔ,Ü¨TÔ2ñ3ñ�	ð
 Ü tÔ,Ü¨dÔ3ñ4ä¨dÔ3ñ4ô ¨dÔ3ñ4ô ¨dÔ3ñ	4ñ‘ðô —‘×-Ñ-¨iÓ8ˆHÜ'×/Ñ/×6Ñ6°wÓ?ˆFä�'Ð3ØØØñ6ó ð rb   c                 óš   — | j                   }t        j                  j                  d¬«      j	                  d«      }t        | d|d|dœ«      S )NTrh   ú-idzsrc/fnpssdash/events.html)rë   rï   Úevent_display)rX   r   rW   r‡   r‰   r   )rZ   rë   rb  s      r^   Údash_eventsrc  A  sJ   € à×Ñ€DÜ&×.Ñ.×5Ñ5¸tÐ5ÓD×MÑMÈeÓT€MÜ�'Ð6ÀÐSWÐhuÑ8vÓwÐwrb   c                 ó  — | j                   }d| j                  v rÍt        | j                  | j                  «      }|j	                  «       r|t
        j                  j                  t        d«      «      d   xs d}|j                  d¬«      }|dz   |_
        |j                  «        t        j                  | d«       t        d	«      S t        j                  | d
«       t        d«      S t        «       }t        | d||ddœ«      S )NÚsaveupcomingrj   Ú	rank__maxr   FrÑ   r   õ#   DonnÃ©es enregistrÃ©es avec succÃ¨src  õ/   DonnÃ©es non enregistrÃ©es, veuillez rÃ©essayerrR   z"src/fnpssdash/create-an-event.htmlT©rÔ   rë   rï   )rX   r˜   r)   ÚFILESrÕ   r   rW   r(  r9   rÖ   rj   rD   r¡   r   r×   r   )rZ   rë   rØ   Úmax_rankrÙ   rÔ   s         r^   Ú	makeventsrl  G  sÞ   € à×Ñ€Dà˜Ÿ™Ñ%Ü& w§|¡|°W·]±]ÓCˆØ×!Ñ!Ô#Ü)×1Ñ1×;Ñ;¼CÀ»KÓHÈÑUÒZÐYZˆHØ×$Ñ$¨EÐ$Ó2ˆCØ !‘|ˆCŒHØ�H‰HŒJÜ×Ñ˜WÐ&KÔLÜ˜MÓ*Ð*ä�N‰N˜7Ð$UÔVÜ˜LÓ)Ð)ô Óˆä�'Ð?È$ÐX\ÐjnÑAoÓpÐprb   c                 ó0  — t        t        |¬«      }| j                  }d| j                  v rÏt	        | j                  | j
                  |¬«      }|j                  «       r|t        j                  j                  t        d«      «      d   xs d}|j                  d¬«      }|d	z   |_        |j                  «        t        j                  | d
«       t        d«      S t        j                  | d«       t        d«      S t	        |¬«      }t!        | d|d|dœ«      S )Nr°   re  ©Úinstancerj   rf  r   FrÑ   r   rg  rc  rh  rR   z src/fnpssdash/edit-an-event.htmlT)rë   rï   rÔ   )r   r   rX   r˜   r)   rj  rÕ   rW   r(  r9   rÖ   rj   rD   r¡   r   r×   r   )rZ   r±   Úeventprojectrë   rØ   rk  rÙ   rÔ   s           r^   Úmodifyeventsrq  ]  sñ   € ô %Ô%7¸BÔ?€LØ×Ñ€Dà˜Ÿ™Ñ%Ü& w§|¡|°W·]±]È\ÔZˆØ×!Ñ!Ô#Ü)×1Ñ1×;Ñ;¼CÀ»KÓHÈÑUÒZÐYZˆHØ×$Ñ$¨EÐ$Ó2ˆCØ !‘|ˆCŒHØ�H‰HŒJÜ×Ñ˜WÐ&KÔLÜ˜MÓ*Ð*ä�N‰N˜7Ð$UÔVÜ˜LÓ)Ð)ô  |Ô4ˆä�'Ð=ÈÐZ^ÐgkÑ?lÓmÐmrb   c           
      óæ   — | j                   }t        j                  j                  |¬«      }t	        t        |¬«      }t        j                  j                  d«      d d }t        | d|d|||dœ«      S )Nr°   rl   rm   z src/fnpssdash/event-details.htmlT)rë   rï   rÝ   rÞ   r…   )rX   r   rW   r‡   r   r‰   r   )rZ   r±   rë   rÝ   rÞ   r…   s         r^   Údash_event_detailsrs  t  s†   € à×Ñ€DÜ+×3Ñ3×:Ñ:¸bÐ:ÓAÐÜ$Ô%7¸BÔ?€LÜ%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€Lä�'Ð=ÈÐZ^ð  vHð  Xdð  t@ñ  @Bó  Cð  Crb   c                 ó–   — | j                   }t        j                  j                  «       j	                  d«      }t        | d||ddœ«      S )Nra  zsrc/fnpssdash/inbox.htmlT)Úmessage_displayrë   rï   )rX   r   rW   rŠ   r‰   r   )rZ   rë   ru  s      r^   Údash_contactrv  }  sE   € à×Ñ€DÜ$×,Ñ,×0Ñ0Ó2×;Ñ;¸EÓB€OÜ�'Ð5È/ÐcgÐuyÑ7zÓ{Ð{rb   c           
      óæ   — | j                   }t        j                  j                  |¬«      }t	        t
        |¬«      }t
        j                  j                  d«      d d }t        | d|d|||dœ«      S )Nr°   rl   rm   zsrc/fnpssdash/read-email.htmlT)rë   rï   Úmail_detailsrÞ   r…   )rX   r   rW   r‡   r   r   r‰   r   )rZ   r±   rë   rx  rÞ   r…   s         r^   Údash_read_messagery  „  s€   € à×Ñ€DÜ!×)Ñ)×0Ñ0°BÐ0Ó7€LÜ$Ô%7¸BÔ?€LÜ%×-Ñ-×6Ñ6°wÓ?ÀÀÐC€Lä�'Ð:ÀTÐW[Ðlxð  IUð  eqñ  =só  tð  trb   c                 ó–   — | j                   }t        j                  j                  «       j	                  d«      }t        | d||ddœ«      S )Nra  zsrc/fnpssdash/contacts.htmlT©Údonor_displayrë   rï   )rX   r   rW   rŠ   r‰   r   ©rZ   rë   r|  s      r^   Údash_contactDonorsr~  �  sE   € à×Ñ€DÜ×$Ñ$×(Ñ(Ó*×3Ñ3°EÓ:€MÜ�'Ð8È=ÐbfÐtxÑ:yÓzÐzrb   c                 óÂ  — | j                   }d| j                  v r«t        | j                  «      }| j                  j                  d«      }|j	                  «       rJ|j                  d¬«      }||_        |j                  «        t        j                  | d«       t        d«      S t        j                  | d«       t        d«      S t        «       }t        | d||d	d
œ«      S )NÚcreateadminÚ
adminsroleFrÑ   rg  Údash_userlistrh  zsrc/fnpssdash/add-user.htmlTri  )rX   r˜   r"   rV   rÕ   rÖ   ÚrolerD   r¡   r   r×   r   )rZ   rë   rØ   rƒ  rÙ   rÔ   s         r^   r€  r€  “  sÂ   € à×Ñ€Dà˜Ÿ™Ñ$Ü$ W§\¡\Ó2ˆØ�|‰|×Ñ Ó-ˆà×!Ñ!Ô#Ø×$Ñ$¨EÐ$Ó2ˆCØˆCŒHØ�H‰HŒJÜ×Ñ˜WÐ&KÔLÜ˜OÓ,Ð,ä�N‰N˜7Ð$UÔVÜ˜MÓ*Ð*ô ‹~ˆä�'Ð8À4ÐQUÐcgÑ:hÓiÐirb   c                 ó–   — | j                   }t        j                  j                  «       j	                  d«      }t        | d||ddœ«      S )Nra  zsrc/fnpssdash/users-list.htmlTr{  )rX   r   rW   rŠ   r‰   r   r}  s      r^   r‚  r‚  ª  sE   € à×Ñ€DÜ×%Ñ%×)Ñ)Ó+×4Ñ4°UÓ;€MÜ�'Ð:È]ÐdhÐvzÑ<{Ó|Ð|rb   c                 ó  — | j                   }d| j                  v rØt        | j                  | j                  «      }| j                  j	                  d«      }| j                  j	                  d«      }|j                  «       rQ|j                  d¬«      }||_        ||_        |j                  «        t        j                  | d«       t        d«      S t        j                  | d«       t        d«      S t        «       }t        | d	||d
dœ«      S )NÚmakemployeeÚ
departmentrÌ   FrÑ   rg  Údash_employeelistrh  z#src/fnpssdash/add-new-employee.htmlTri  )rX   r˜   r$   rj  rV   rÕ   rÖ   r‡  rÌ   rD   r¡   r   r×   r   )rZ   rë   rØ   r‡  rÌ   rÙ   rÔ   s          r^   r†  r†  ²  sæ   € ð ×Ñ€Dà˜Ÿ™Ñ$Ü" 7§<¡<°·±Ó?ˆØ—\‘\×%Ñ% lÓ3ˆ
Ø—<‘<×#Ñ# JÓ/ˆà×!Ñ!Ô#Ø×$Ñ$¨EÐ$Ó2ˆCØ'ˆCŒNØ#ˆCŒLØ�H‰HŒJÜ×Ñ˜WÐ&KÔLÜÐ/Ó0Ð0ä�N‰N˜7Ð$UÔVÜ˜MÓ*Ð*ô ‹|ˆä�'Ð@È4ÐY]ÐkoÑBpÓqÐqrb   c                 óF  — t        t        |¬«      }| j                  }d| j                  v rÚt	        | j                  | j
                  |¬«      }| j                  j                  d«      }| j                  j                  d«      }|j                  «       rQ|j                  d¬«      }||_	        ||_
        |j                  «        t        j                  | d«       t        d	«      S t        j                  | d
«       t        d«      S t	        |¬«      }t        | d||ddœ«      S )Nr°   r†  rn  r‡  rÌ   FrÑ   rg  rˆ  rh  Úeditemployeez$src/fnpssdash/edit-new-employee.htmlTri  )r   r   rX   r˜   r$   rj  rV   rÕ   rÖ   r‡  rÌ   rD   r¡   r   r×   r   )	rZ   r±   rp  rë   rØ   r‡  rÌ   rÙ   rÔ   s	            r^   rŠ  rŠ  Ì  s÷   € ô %¤X°"Ô5€LØ×Ñ€Dà˜Ÿ™Ñ$Ü" 7§<¡<°'·-±-È,ÔWˆØ—\‘\×%Ñ% lÓ3ˆ
Ø—<‘<×#Ñ# JÓ/ˆà×!Ñ!Ô#Ø×$Ñ$¨EÐ$Ó2ˆCØ'ˆCŒNØ#ˆCŒLØ�H‰HŒJÜ×Ñ˜WÐ&KÔLÜÐ/Ó0Ð0ä�N‰N˜7Ð$UÔVÜ˜NÓ+Ð+ô  <Ô0ˆä�'ÐAÈDÐZ^ÐlpÑCqÓrÐrrb   c                 ó–   — | j                   }t        j                  j                  «       j	                  d«      }t        | d||ddœ«      S )Nra  z src/fnpssdash/employee-list.htmlTr{  ©rX   r   rW   rŠ   r‰   r   r}  s      r^   rˆ  rˆ  è  sF   € à×Ñ€DÜ×$Ñ$×(Ñ(Ó*×3Ñ3°EÓ:€MÜ�'Ð=ÐP]ÐgkÐy}Ñ?~ÓÐrb   c                 ó–   — | j                   }t        j                  j                  «       j	                  d«      }t        | d||ddœ«      S )Nra  z!src/fnpssdash/privacy-policy.htmlTr{  rŒ  r}  s      r^   Údash_policyrŽ  î  sL   € à×Ñ€DÜ×$Ñ$×(Ñ(Ó*×3Ñ3°EÓ:€MÜ�'Ð>ÐQ^ÐhlÐz~Ñ@ó  Að  Arb   c           	      ó°   — | j                   }t        j                  j                  d¬«      j	                  d«      }t        «       }t        | d|||ddœ«      S )NTrn   ra  úsrc/fnpssdash/to-do-list.html)rÔ   r|  rë   rï   )rX   r    rW   r‡   r‰   r,   r   )rZ   rë   r|  rÔ   s       r^   Údash_todolistr‘  ô  sa   € à×Ñ€DÜ×$Ñ$×+Ñ+°dÐ+Ó;×DÑDÀUÓK€MÜ‹:€DÜ�'Ð:ÀDÐZgÐquð  DHñ  =Ió  Jð  Jrb   c                 ó¨  — | j                   }t        t        |¬«      }d| j                  v r‹t	        | j                  |¬«      }|j                  «       rC|j                  d¬«      }|j                  «        t        j                  | d«       t        d«      S t        j                  | d«       t        d«      S t	        |¬«      }t        | d	||d
dœ«      S )Nr°   r€  rn  FrÑ   rg  r‚  rh  zsrc/fnpssdash/edit-user.htmlTri  )rX   r   r   r˜   r#   rÕ   rÖ   rD   r¡   r   r×   r   )rZ   r±   rë   rp  rØ   rÙ   rÔ   s          r^   Ú	editadminr“  ü  s¸   € à×Ñ€DÜ$¤Y°2Ô6€Là˜Ÿ™Ñ$Ü% g§l¡l¸\ÔJˆà×!Ñ!Ô#Ø×$Ñ$¨EÐ$Ó2ˆCØ�H‰HŒJÜ×Ñ˜WÐ&KÔLÜ˜OÓ,Ð,ä�N‰N˜7Ð$UÔVÜ˜MÓ*Ð*ô  lÔ3ˆä�'Ð9ÀDÐRVÐdhÑ;iÓjÐjrb   c                 óP  — | j                   }d| j                  v ròt        | j                  | j                  «      }| j                  j	                  d«      }| j                  j	                  d«      }|j                  «       rk|j                  d¬«      }||_        ||_        t        |j                  «      |_        |j                  «        t        j                  | d«       t        d«      S t        j                  | d«       t        d«      S t        «       }t!        | d	||d
dœ«      S )NÚregistertodoÚpriorityrÚ  FrÑ   rg  r‘  rh  r�  Tri  )rX   r˜   r,   rj  rV   rÕ   rÖ   r–  rÚ  r   r±   ÚadminidrD   r¡   r   r×   r   )rZ   rë   rØ   r–  rÚ  rÙ   rÔ   s          r^   Úmaketodor˜    sõ   € ð ×Ñ€Dà˜Ÿ™Ñ%Ü  §¡¨w¯}©}Ó=ˆØ—<‘<×#Ñ# JÓ/ˆØ—‘×!Ñ! (Ó+ˆà×!Ñ!Ô#Ø×$Ñ$¨EÐ$Ó2ˆCØ#ˆCŒLØˆCŒJÜ# D§G¡GÓ,ˆCŒKØ�H‰HŒJÜ×Ñ˜WÐ&KÔLÜ˜OÓ,Ð,ä�N‰N˜7Ð$UÔVÜ˜OÓ,Ð,ô ‹zˆä�'Ð:ÀTÐSWÐeiÑ<jÓkÐkrb   c                 óæ   — | j                   }t        t        |¬«      }d|_        t	        j
                  «       |_        t        |j                  «      |_	        |j                  «        t        d«      S )Nr°   Frc  )rX   r   r   ri   rN   ÚnowÚhis_delete_dater   r±   Údelete_useridrÖ   r   )rZ   r±   rë   rÙ   s       r^   Údelete_eventr�  .  sT   € à×Ñ€DÜ
Ô.°2Ô
6€Cà€C„LÜ"Ÿ,™,›.€CÔÜ# D§G¡GÓ,€CÔØ‡H�H„Jä�MÓ"Ð"rb   c                 óh   — t        t        |¬«      }d|_        |j                  «        t	        d«      S )Nr°   Fr‘  )r   r    ro   rÖ   r   ©rZ   r±   rÙ   s      r^   Údelete_todor   ;  s)   € Ü
œH¨Ô
,€Cà€C„MØ‡H�H„Jä�OÓ$Ð$rb   c                 óø   — | j                   dk(  rat        t        |¬«      }| j                  j	                  d«      |_        | j                  j	                  d«      |_        |j                  «        t        d«      S )Nr˜   r°   rÚ  r–  r‘  )	r�   r   r    r˜   rV   rÚ  r–  rÖ   r   rŸ  s      r^   Úupdate_todo_bothr¢  C  sZ   € Ø‡~�~˜ÒÜ¤¨RÔ0ˆà—\‘\×%Ñ% hÓ/ˆŒ
Ø—|‘|×'Ñ'¨
Ó3ˆŒà�‰Œ
ä�OÓ$Ð$rb   c                 óú   — | j                   dk(  rLt        t        |¬«      }| j                  j	                  d«      |_        |j                  «        t        d«      S t        j                  | d«       t        d«      S )Nr˜   r°   rƒ  rh  r‚  )
r�   r   r   r˜   rV   rƒ  rÖ   rD   r×   r   rŸ  s      r^   Úupdate_admin_roler¤  N  sb   € Ø‡~�~˜ÒÜ¤	¨bÔ1ˆà—<‘<×#Ñ# FÓ+ˆŒØ�‰Œ
ô �OÓ$Ð$ô 	�‰�wÐ QÔRÜ˜Ó(Ð(rb   )¨Úsmtplibr   Údjango.shortcutsr   r   r   Údjango.views.decorators.csrfr   Ú%django.contrib.admin.views.decoratorsr   Údjango.db.modelsr	   r
   Údjango.contrib.auth.decoratorsr   Údjango.urlsr   Údjango.confr   Údjango.core.serializers.jsonr   Údjango.core.exceptionsr   Údjango.httpr   r   Úmodelsr   r   r   r   r   r   r   r   r   r   r   r   r   r    Úformsr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   Úpaypalrestsdkr¨  r”  r�   Úvenvr-   Údjango.core.mailr.   r/   Úbokeh.plottingr0   Úbokeh.embedr1   Úbokeh.resourcesr2   Údecimalr3   Úpaypal.standard.formsr4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   Údjango.contribrD   Údjango.views.genericrE   rF   rG   rH   rI   Údjango.contrib.auth.mixinsrJ   rK   Údjango.core.paginatorrL   rM   Údjango.utilsrN   ra   r–   r£   rª   r¬   r®   r¹   r½   r¿   rÃ   rÅ   rÊ   rÏ   rÚ   rß   rã   rå   rç   rõ   rø   rú   r
  r  r(  r<  rA  rH  r1  rT  rU  rV  rW  ræ  r¡  r  r³  rµ  rZ  r*  r0  r8  r?  rN  r_  rc  rl  rq  rs  rv  ry  r~  r€  r‚  r†  rŠ  rˆ  rŽ  r‘  r“  r˜  r�  r   r¢  r¤  r`   rb   r^   ú<module>r¿     sê  ðå !ß @Ñ @Ý 4Ý Gß 'Ý 9Ý Ý  Ý :Ý 2Ý $Ý $÷ L÷  L÷  L÷  L÷ y÷  y÷  yó  yß *× *Ý Ý &Ý (Ý !Ý "Ý Ý Ý 4ß #÷ O÷  O÷  O÷  Oñ  OÝ #ß [Õ [Ý 9Ý $Ý +Ý 3Ý !òò#BòLò"Pò"mò"vò

qòMò"fòHTòNò!fòFeòAò"ZòIòYòJò1òf!ô	%˜(ô 	%ô�hô ô$
˜
ô 
ô$/�ô $/ôP
(Ð*¨Jô 
(ô
(Ð*¨Jô 
(ò"òH"AòJ+fò\=Cò@39òl[Uð| ñ($ó ð($ðT ñEYó ðEYðP ñH(ó ðH(ðT ñIYó ðIYðX ñ[(ó ð[(òzô˜ô ô0˜
ô ô&˜
ô ô('Ð(¨,ô 'ôR'Ð˜|ô 'òR$ðL ñxó ðxð
 ñqó ðqð* ñnó ðnð, ñCó ðCð ñ|ó ð|ð ñtó ðtð ñ{ó ð{ð
 ñjó ðjð, ñ}ó ð}ð ñró ðrð2 ñsó ðsð6 ñ@ó ð@ð
 ñAó ðAð
 ñJó ðJð ñkó ðkð, ñló ðlð4 ñ	#ó ð	#ò%ò	%ó%rb   