Ë
    1´jþ9  ã                   óv  — d dl mZmZmZmZ d dlmZ d dlZd dlmZm	Z	 d dl
mZmZ defd„Z G d„ d	e«      Z G d
„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zd „ Zd!efd"„Zy)#é    )ÚOptionalÚAnyÚ	GeneratorÚSelf)ÚsessionN)ÚDebugÚIODate)ÚModelÚrowÚreturnc                  ó²   — 	 t        dt        d   ¬«       t        d   d   S # t        $ r+} t        d| ¬«       t        dt        d   ¬«       Y d } ~ yd } ~ ww xY w)NzSession UserÚUser©ÚtitleÚdataÚIDzTrouble getting session useréÿÿÿÿ)r   r   Ú	Exception)Úes    ú/var/www/mission/io/app.pyÚ	getUserIDr      sP   € ðÜˆn¤'¨&¡/Õ2Ü	�‰˜Ñ	ÐøÜò ÜÐ,°!Õ4Üˆn¤'¨&¡/Õ2Ü	ûðús   ‚" ¢	A«!AÁAc                   óê   ‡ — e Zd ZU dZeed<   dZeed<   dZeed<   dZ	eed<   dZ
eed<   i Zddefˆ fd„Zd	efd
„Zd	efd„Zd	efd„Zd	efd„Zded	efd„Zded	efd„Zd	efd„Zddedee   d	efd„Zˆ xZS )ÚMission_Modelé   Ú
mission_idÚuser_idÚ ÚtableÚ_startÚ_endc                 óz   •— || _         | j                  xs dd| j                  › d�i| _        t        ‰| �  «        y )NÚClientszjoin Clients on Clients.ID = z
.Client_ID)r   Úqr   ÚsuperÚ__init__)Úselfr   Ú	__class__s     €r   r%   zMission_Model.__init__   s?   ø€ Ø€$„/Ø�6‰6ò ØÐ,¨T¯Z©Z¨L¸
ÐCð€$„&ô �'ÑÕó    r   c                 óJ   — | j                  |«       | j                  |«       | S ©N©ÚstartÚend)r&   r,   r-   s      r   ÚrangezMission_Model.range    s   € Ø‡*�*ˆUÔØ‡(�(ˆ3„-Ø	€+r(   c                 ó8   — t        t        |«      «      | _        | S r*   )Ústrr	   r   ©r&   Údates     r   r,   zMission_Model.start%   s   € Ü”F˜4“LÓ!€$„+Ø	€+r(   c                 ó8   — t        t        |«      «      | _        | S r*   )r0   r	   r    r1   s     r   r-   zMission_Model.end)   s   € Ü”&˜“,Ó€$„)Ø	€+r(   c                 ó8   — | j                   › d| j                  › �S )Nz.Mission_ID = )r   r   ©r&   s    r   ÚquerySuffixzMission_Model.querySuffix-   s   € Ø�J‰Jˆ<�~ d§o¡oÐ%6Ð	7Ð7r(   Ú	client_idc                 óà   — | j                  «       | _        | j                  j                  d|g¬«       | j                  j                  dd¬«       | j	                  | j                  «       «      S ©NúClient_ID=%s©ÚqueryÚparmsÚ	TimestampÚdesc©ÚfieldÚ	direction©Úqb_initÚqbÚfilterÚorderÚcheck_recentÚselect©r&   r7   s     r   Ú
get_clientzMission_Model.get_client0   óP   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�~¨Y¨K€.Ô8Ø‡'�'‡-�-�k¨F€-Ô3Ø	×	Ñ	˜4Ÿ;™;›=Ó	)Ð)r(   r   c                 óô   — t        |«      }t        t        |«      «      D ]U  }||   j                  d«      r7t	        ||   j                  d«      «      j                  «       dk  r	d||   d<   ŒNd||   d<   ŒW |S )Nr>   é   TÚRecentF)Úlistr.   ÚlenÚgetr	   ÚdaysFromNow)r&   r   Úis      r   rH   zMission_Model.check_recent6   sy   € Ü	ˆd‹€$Ü”�T“Óò €aØ
ˆ1�g‡k�k�+Ô¤6¨$¨q©'¯+©+°kÓ*BÓ#C×#OÑ#OÓ#QÐRSÒ#SØ€Dˆ�GˆHÒà€Dˆ�GˆHÒð	ð
 
€+r(   c                 ót  — | j                  «       | _        | j                  j                  d¬«       | j                  j                  d¬«       i }| j	                  «       D ]U  }t         |j                  d«      «      j                  «       }|j                  |i «        |j                  d«      ||   d<   ŒW |S )Nz'count(*) as count,date(Timestamp) as dt©Úfieldszdate(Timestamp))ÚgroupÚdtÚcountÚServed)	rD   rE   rW   rX   rI   r	   rR   r0   Ú
setdefault)r&   r   r   rY   s       r   Úby_dayzMission_Model.by_day?   sš   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.ÐA€.ÔBØ‡'�'‡-�-Ð'€-Ô(à	€$Ø�[‰[‹]ò )€cÜˆwˆs�w‰w�t‹}Ó×!Ñ!Ó#€2Ø‡?�?�2�bÔØ˜Ÿ™ Ó(€4ˆ�8ˆHÒð)ð
 
€+r(   r<   r=   c                 ó�  — | j                  «       | _        | j                  j                  | j                  › d�«       | j                  j	                  | j
                  j                  dd«      «       |r| j                  j                  ||¬«       | j                  j                  dd¬«       t        | j                  «       «      S )Nú.*, Clients.Name as Namer"   r   r;   r>   r?   r@   ©rD   rE   rW   r   Újoinr#   rR   rF   rG   rP   rI   ©r&   r<   r=   s      r   ÚallzMission_Model.allL   s†   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�D—J‘J�<Ð7Ð8Ô9Ø‡'�'‡,�,ˆt�v‰v�z‰z˜) BÓ'Ô(á
Ø‡7�7‡>�>˜ E€>Ô*à‡'�'‡-�-�k¨F€-Ô3Ü	ˆd�k‰k‹mÓ	Ðr(   )r   ©r   N)Ú__name__Ú
__module__Ú__qualname__r   ÚintÚ__annotations__r   r   r0   r   r    r#   r%   r   r.   r,   r-   r6   rP   rK   rH   Údictr]   r   rc   Ú__classcell__©r'   s   @r   r   r      sÂ   ø… Ø€ˆCÓØ€ˆƒØ€€sƒØ€ˆƒØ€€cƒØ€ñ˜cõ ð˜Tó ð
˜ó ð�tó ð8˜#ó 8ð*˜sð * tó *ð˜Dð  Tó ð�Tó ñ	�Cð 	 ¨$¡ð 	¸÷ 	r(   r   c                   ó0   — e Zd Zd Zdededefd„Zdefd„Zy)ÚUsersÚuserÚpasswordr   c                 ó  — | j                  «       | _        | j                  j                  d¬«       | j                  j                  d||g¬«       | j	                  «       x}r)t        j                  |j                  d«      «      |d<   |S i S )NzUser as UserID,`Groups`,IDrV   zUser=%s and Password=%sr;   ÚGroups)rD   rE   rW   rF   Ú
select_oneÚUtilsÚgetJSONrR   )r&   ro   rp   Úudatas       r   Úauthz
Users.authZ   sr   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.Ð4€.Ô5Ø‡'�'‡.�.Ð0¸¸X°€.ÔGà�o‰oÓÐ€UÐÜ—]‘] 5§9¡9¨XÓ#6Ó7€5ˆ�?Ø
€<à
€9r(   c                 óŽ   — | j                  «       j                  d|g¬«       t        j                  | j	                  «       i «      S )NzUser=%sr;   )rD   rF   rt   ÚfirstrI   )r&   ro   s     r   Úget_namezUsers.get_namee   s4   € Ø‡,�,ƒ.×Ñ˜i¨t¨fÐÔ5Ü	�‰�T—[‘[“] 2Ó	&Ð&r(   N)re   rf   rg   r   r0   rj   rw   rz   © r(   r   rn   rn   W   s-   „ Ø	€ð	�Cð 	 ð 	¨ó 	ð'˜ô 'r(   rn   c                   ó~   ‡ — e Zd Zd Zdedefˆ fd„Zdedefd„Zdede	fd„Z
ddede	fd	„Zd
edefˆ fd„Zdefd„Zˆ xZS )r"   r   r   c                 óx   •— t        «       j                  «       |d<   | j                  |d<   t        ‰| �  |¬«      S )NÚCreatedÚ
Mission_ID©r   ©r	   Úfullr   r$   Úadd©r&   r   r'   s     €r   rƒ   zClients.addl   s3   ø€ Ü“H—M‘M“O€$€y�/Ø—‘€$€|ÑÜ	‰‰˜$ˆÓ	Ðr(   r7   c                 óz  — | j                  d¬«      | _        | j                  j                  d|g¬«       t        | j	                  «       «      xs i }t        t        «       j                  |«      «      |d<   t        t        «       j                  |«      «      |d<   t        t        «       j                  |«      «      |d<   t        t        «       j                  |«      «      |d<   t        t        «       j                  |«      «      |d	<   t        t        «       j                  |«      «      |d
<   t        t        «       j                  |«      «      |d<   d |d<   |j                  d	«      xs g D ]1  }t        j                   d|¬«       |j                  d«      sŒ,||d<    n t        j                   d|¬«       |S )Nz*,ID as Client_IDrV   zID = %sr;   ÚMealsÚFoodÚShowersÚClothingÚNotesÚ	ReferralsÚSurplusÚTrespassÚNoter   z
Get Client)rD   rE   rF   rj   rs   rP   r†   rK   r‡   rˆ   r‰   rŠ   r‹   rŒ   rR   rt   r   )r&   r7   r   Únotes       r   rR   zClients.getq   sc  € Ø�L‰LÐ 3ˆLÓ4€$„'Ø‡'�'‡.�.�y¨	 {€.Ô3Ü	ˆd�o‰oÓÓ	 Ò	& B€$Ü”u“w×)Ñ)¨)Ó4Ó5€$€w�-Ü”d“f×'Ñ'¨	Ó2Ó3€$€v�,Üœ›×-Ñ-¨iÓ8Ó9€$€y�/Üœ(›*×/Ñ/°	Ó:Ó;€$€zÑÜ”u“w×)Ñ)¨)Ó4Ó5€$€w�-Üœ9›;×1Ñ1°)Ó<Ó=€$€{ÑÜœ›×-Ñ-¨iÓ8Ó9€$€y�/Ø€$€zÑà�h‰h�wÓÒ% 2ò 
€dÜ‡;�;�V Õ&Ø
‡h�hˆzÕØ€DˆÑÙ	ð	
ô ‡+�+�L dÕ+Ø	€+r(   r<   c                 ó�   — | j                  «       | _        | j                  j                  d|g¬«       | j                  «       xs g S )NzName like %%s%r;   )rD   rE   rF   rI   )r&   r<   s     r   ÚsearchzClients.search‡   s7   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.Ð'¨u¨g€.Ô6Ø	�‰‹Ò	˜"Ðr(   Únamec                 óâ   — | j                  «       | _        |r$d|› d�}| j                  j                  d|g¬«       | j                  j                  d¬«       t	        | j                  «       «      S )Nú%zName like %sr;   ÚName)rA   )rD   rE   rF   rG   rP   rI   )r&   r’   s     r   rc   zClients.allŒ   sX   € Ø�L‰L‹N€$„'Ù	ØˆdˆV�1ˆ+€4Ø‡7�7‡>�>˜¨d¨V€>Ô4à‡'�'‡-�-�f€-ÔÜ	ˆd�k‰k‹mÓ	Ðr(   Úidc                 ó8   •— t        t        ‰| �	  d|i«      «      S )Nr   )Úboolr$   Údelete)r&   r–   r'   s     €r   r™   zClients.delete•   s   ø€ Ü	Œe‰g‰n˜d 2˜YÓ'Ó	(Ð(r(   c           
      ó\  — | j                   rCt        | j                   «      }t        t        | j                   «      j                  d«      «      }nd}t        | «      }|dz  dz   }t        «       }t        | «      }t        |dz    «      }i }i }i }	i }
i }i }g }g }g d¢}i i i i dœ}i i dœ}|D �]¶  }|j	                  |i «        t        «       |   «       j                  dt        |«      t        |«      g¬	«      D �]f  }t         |j                  d
«      «      }|j                  }t        ||z
  j                  «      }|j                  |«       |dk  r&|d   j	                  |d«       |d   |xx   dz  cc<   n/|dk\  r*|dk  r%|d   j	                  |d«       |d   |xx   dz  cc<   |d   j	                  |g «       |d   |   j                   |j                  d«      «       ||   j	                  |d«       ||   |xx   dz  cc<   |j                  «       }|j	                  |i «       ||   j	                  |d«       ||   |xx   dz  cc<   |j                  |«       �Œi �Œ¹ t        t        t        |«      «      «      }|D ]  }|D ]  }||   j	                  |d«       Œ Œ  |D ]%  }t!        t        t        ||   «      «      «      ||<   Œ' |||||dœ|||||	|
||dœ	}|j                  d«      |d<   |j                  d«      |d<   i |d<   |j                  di «      j#                  «       D ]m  \  }}	 t%        t'        j(                  |j                  di «      j                  |«      |j                  di «      j                  |«      ¬«      dz  «      |d   |<   Œo ||d<   |S #  Y Œ{xY w)NTé   é   r   )rˆ   r‡   r‰   r†   )ÚGuestsr†   r‰   rˆ   )ÚcurrentÚpreviousz+date(Timestamp)>=%s and date(Timestamp)<=%sr;   r>   rž   r   é   é=   rŸ   r�   Ú	Client_ID)r,   r-   ÚpstartÚpendÚtdays)	r.   ÚdaysÚguestsÚclothingÚmealsÚshowersÚfoodÚcompareÚagesÚdeltar+   éd   Úall_data)r   r	   rh   rS   r\   Úglobalsrc   r0   rR   ÚymÚabsr¦   ÚappendÚsortedrP   ÚsetrQ   ÚitemsÚroundrt   r®   )r&   r,   Út_daysÚpdaysr-   r£   r¤   r§   r©   rª   r«   r¨   r¬   r¦   r­   ÚnamesÚsdataÚsummaryr’   r   rY   Út_idÚageÚdt_idÚdÚmr   Úqtys                               r   r½   zClients.summary˜   sà  € Ø	‡[‚[Ü�$—+‘+Ó€5Ü”�t—{‘{Ó#×/Ñ/°Ó5Ó6�6à€6Ü�6�'‹?€5à�!‰8�Q‰,€%Ü‹€#Ü�5�&‹>€&Ü	�&˜‘(�Ó	€$Ø€&Ø
€%Ø€'Ø	€$Ø€(Ø€'Ø	€$Ø	€$Ú
/€%Ø˜r¨R¸"Ñ
=€%Ø RÑ(€'Øó €dØ×Ñ�D˜ÔØŒg‹i˜‰oÓ×#Ñ#Ð*WÔ_bÐciÓ_jÔknÐorÓksÐ^tÐ#Óuó €sÜ	��—‘˜Ó$Ó	%€BØ�5‰5€Dä
ˆs�R‰x�o‰oÓ
€CØ‡K�K�ÔØ
ˆb‚yØˆYÑ×"Ñ" 4¨Ô*ØˆYÑ˜Ó˜qÑ ÔØ	�Š�s˜b’yØˆZÑ×#Ñ# D¨Ô+ØˆZÑ˜Ó Ñ!Óà	ˆ(�O×Ñ˜t BÔ'Ø	ˆ(�O�DÑ× Ñ   §¡¨Ó!5Ô6à	ˆ$�K×Ñ˜4 Ô"Ø	ˆ$�K�Ó�qÑÓà�F‰F‹H€EØ×Ñ�u˜RÔ ØˆE�N×Ñ˜d 1Ô%ØˆE�N�4Ó˜!ÑÓà‡K�K�Öò1ðô8 
””S˜“Y“Ó	 €$àò "€aØò "€tØˆA�J×Ñ˜$˜qÕ!ñ"ð"ð ò )€aÜ”4œ˜F 1™I›Ó'Ó(€6ˆ!‚9ð)ð  ¨V¸4ÈÑOØ
ØØØØØ
ØØ
ñ

€$ð —K‘K 	Ó*€$€y�/Ø—[‘[ Ó,€$€zÑØ€$€w�-Ø—+‘+˜i¨Ó+×1Ñ1Ó3ò 	�h€dˆ3ð	Ü¤§¡°'·+±+¸jÈÓ2L×2PÑ2PÐQUÓ2VÐ[b×[fÑ[fÐgpÐqsÓ[t×[xÑ[xÐy}Ó[~Ô ð  CFñ  !Fó  G€Dˆ�M�$Òð	ð
 €$€zÑØ	€+øð	Ùús   Ì7A'N'Î'N+)r   )re   rf   rg   r   rj   rh   rƒ   rR   r0   rP   r‘   rc   r˜   r™   r½   rk   rl   s   @r   r"   r"   i   su   ø„ Ø	€ð �4ð  ˜Cõ  ð
˜ð  ó ð,�sð ˜tó ñ
�3ð ˜dó ð)�Cð )˜Dõ )ðP�d÷ Pr(   r"   c                   ój   ‡ — e Zd Zd Zdedefˆ fd„Zdedefd„Zddedefd„Z	dde
d	ee   defd
„Zˆ xZS )r†   r   r   c                 óx   •— t        «       j                  «       |d<   | j                  |d<   t        ‰| �  |¬«      S ©Nr>   r   r€   r�   r„   s     €r   rƒ   z	Meals.addí   ó4   ø€ Ü“h—m‘m“o€$€{ÑØ—‘€$€|ÑÜ	‰‰˜$ˆÓ	Ðr(   r7   c                 óà   — | j                  «       | _        | j                  j                  d|g¬«       | j                  j                  dd¬«       | j	                  | j                  «       «      S r9   rC   rJ   s     r   rK   zMeals.get_clientò   rL   r(   r¦   c                 ó>  — t        t        j                  |«      «      j                  «       }| j	                  «       | _        | j
                  j                  d«       | j
                  j                  d¬«       | j
                  j                  d|g¬«       | j
                  j                  dd¬«       g }| j                  «       D ]T  }|j                   |j                  d	«       |j                  d
«      ddt         |j                  d«      «      › �dœ«       ŒV |S )Nz*join Clients on Meals.Client_ID=Clients.IDzClients.Name,Meals.*rV   údate(Timestamp)>=%sr;   zMeals.Timestampr?   r@   r•   r>   r†   z	Seconds: ÚSeconds©r•   r>   ÚServiceÚDetail©r	   rt   Únegr0   rD   rE   ra   rW   rF   rG   rI   r´   rR   r˜   ©r&   r¦   r,   r   r   s        r   Úlogz	Meals.logø   så   € Ü
”—‘˜4“Ó
!×
%Ñ
%Ó
'€%Ø�L‰L‹N€$„'Ø‡'�'‡,�,Ð;Ô<Ø‡'�'‡.�.Ð.€.Ô/Ø‡'�'‡.�.Ð,°E°7€.Ô;Ø‡'�'‡-�-Ð'°&€-Ô9Ø	€$Ø�[‰[‹]ò €cØ‡;�;Øˆ3�7‰7�6‹?Ø�—‘˜Ó$ØØœ˜g˜cŸg™g iÓ0Ó1Ð2Ð3ñ	õ ðð 
€+r(   r<   r=   c                 óö  — | j                  «       | _        | j                  j                  | j                  › d�«       t	        j
                  d| j                  › �| j                  j                  d«      ¬«       | j                  j                  | j                  j                  d«      «       |r| j                  j                  ||¬«       | j                  j                  dd¬«       | j                  «       S )	Nr_   ztable r"   r   r;   r>   r?   r@   )rD   rE   rW   r   rt   r   r#   rR   ra   rF   rG   rI   rb   s      r   rc   z	Meals.all	  s¥   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�D—J‘J�<Ð7Ð8Ô9Ü‡+�+�f˜TŸZ™Z˜LÐ)¨t¯v©v¯z©z¸)Ó/DÕEØ‡'�'‡,�,ˆt�v‰v�z‰z˜)Ó$Ô%Ù
Ø‡7�7‡>�>˜ E€>Ô*à‡'�'‡-�-�k¨F€-Ô3Ø	�‰‹Ðr(   ©r›   rd   ©re   rf   rg   r   rj   rh   rƒ   rP   rK   rÒ   r0   r   rc   rk   rl   s   @r   r†   r†   ê   s_   ø„ Ø	€ð �4ð  ˜Cõ  ð
*˜sð * tó *ñ�3ð ˜dó ñ"	�Cð 	 ¨$¡ð 	¸÷ 	r(   r†   c                   ój   ‡ — e Zd Zd Zdedefˆ fd„Zdedefd„Zddedefd„Z	dde
d	ee   defd
„Zˆ xZS )rˆ   r   r   c                 óx   •— t        «       j                  «       |d<   | j                  |d<   t        ‰| �  |¬«      S rÆ   r�   r„   s     €r   rƒ   zShowers.add  rÇ   r(   r7   c                 óà   — | j                  «       | _        | j                  j                  d|g¬«       | j                  j                  dd¬«       | j	                  | j                  «       «      S r9   rC   rJ   s     r   rK   zShowers.get_client  rL   r(   r¦   c                 óœ  — t        t        j                  |«      «      j                  «       }| j	                  «       | _        | j
                  j                  d«       | j
                  j                  d¬«       | j
                  j                  d|g¬«       | j
                  j                  dd¬«       g }| j                  «       D ]ƒ  }|j                   |j                  d	«       |j                  d«      d
dt         |j                  d«      «      › dt         |j                  d«      «      › d |j                  d«      › �dœ«       Œ… |S )Nz,join Clients on Showers.Client_ID=Clients.IDzClients.Name,Showers.*rV   rÊ   r;   r>   r?   r@   r•   rˆ   z
Clothing: r‰   z Cleaned Up: ÚCleanedz
 Special: ÚSpecialrÌ   rÏ   rÑ   s        r   rÒ   zShowers.log!  s  € Ü
”—‘˜4“Ó
!×
%Ñ
%Ó
'€%Ø�L‰L‹N€$„'Ø‡'�'‡,�,Ð=Ô>Ø‡'�'‡.�.Ð0€.Ô1Ø‡'�'‡.�.Ð,°E°7€.Ô;Ø‡'�'‡-�-�k¨F€-Ô3à	€$Ø�[‰[‹]ò €cØ‡;�;Øˆ3�7‰7�6‹?Ø�—‘˜Ó$ØØœ$˜w˜sŸw™w zÓ2Ó3Ð4°MÄ$ÀwÀsÇwÁwÈyÓGYÓBZÐA[Ð[eÐfmÐfi×fmÑfmÐnwÓfxÐeyÐzñ	õ ðð 
€+r(   r<   r=   c                 óŽ  — | j                  «       | _        | j                  j                  | j                  › d�«       | j                  j	                  | j
                  j                  d«      «       |r| j                  j                  ||¬«       | j                  j                  dd¬«       t        | j                  «       «      S ©Nr_   r"   r;   r>   r?   r@   r`   rb   s      r   rc   zShowers.all3  s„   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�D—J‘J�<Ð7Ð8Ô9Ø‡'�'‡,�,ˆt�v‰v�z‰z˜)Ó$Ô%Ù
Ø‡7�7‡>�>˜ E€>Ô*à‡'�'‡-�-�k¨F€-Ô3ä	ˆd�k‰k‹mÓ	Ðr(   rÔ   rd   rÕ   rl   s   @r   rˆ   rˆ     s_   ø„ Ø	€ð �4ð  ˜Cõ  ð
*˜sð * tó *ñ�3ð ˜dó ñ$	�Cð 	 ¨$¡ð 	¸÷ 	r(   rˆ   c                   ój   ‡ — e Zd Zd Zdedefˆ fd„Zdedefd„Zddedefd„Z	dde
d	ee   defd
„Zˆ xZS )r‡   r   r   c                 óx   •— t        «       j                  «       |d<   | j                  |d<   t        ‰| �  |¬«      S rÆ   r�   r„   s     €r   rƒ   zFood.addA  rÇ   r(   r7   c                 óÞ   — | j                  «       | _        | j                  j                  d|g¬«       | j                  j                  dd«       | j	                  | j                  «       «      S )Nr:   r;   r>   r?   rC   rJ   s     r   rK   zFood.get_clientF  sN   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�~¨Y¨K€.Ô8Ø‡'�'‡-�-�˜FÔ#Ø	×	Ñ	˜4Ÿ;™;›=Ó	)Ð)r(   r¦   c           	      ó(  — t        t        j                  |«      «      j                  «       }| j	                  «       | _        | j
                  j                  d«       | j
                  j                  d¬«       | j
                  j                  d|g¬«       | j
                  j                  dd¬«       g }| j                  «       D ]I  }|j                   |j                  d	«       |j                  d«      d
 |j                  d«      › dœ«       ŒK |S )Nz)join Clients on Food.Client_ID=Clients.IDzClients.Name,Food.*rV   rÊ   r;   r>   r?   r@   r•   r‡   rŽ   rÌ   ©r	   rt   rÐ   r0   rD   rE   ra   rW   rF   rG   rI   r´   rR   rÑ   s        r   rÒ   zFood.logL  sÙ   € Ü
”—‘˜4“Ó
!×
%Ñ
%Ó
'€%Ø�L‰L‹N€$„'Ø‡'�'‡,�,Ð:Ô;Ø‡'�'‡.�.Ð-€.Ô.Ø‡'�'‡.�.Ð,°E°7€.Ô;Ø‡'�'‡-�-�k¨F€-Ô3à	€$Ø�[‰[‹]ò €cØ‡;�;Øˆ3�7‰7�6‹?Ø�—‘˜Ó$ØØ�—‘˜“Ð ñ	õ ðð 
€+r(   r<   r=   c                 ó�  — | j                  «       | _        | j                  j                  | j                  › d�«       | j                  j	                  t        | j                  j                  d«      «      ¬«       |r| j                  j                  ||¬«       | j                  j                  dd¬«       | j                  «       S )Nr_   r"   ©ra   r;   r>   r?   r@   )rD   rE   rW   r   ra   r0   r#   rR   rF   rG   rI   rb   s      r   rc   zFood.all^  s†   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�D—J‘J�<Ð7Ð8Ô9Ø‡'�'‡,�,”C˜Ÿ™Ÿ
™
 9Ó-Ó.€,Ô/Ù
Ø‡7�7‡>�>˜ E€>Ô*à‡'�'‡-�-�k¨F€-Ô3Ø	�‰‹Ðr(   rÔ   rd   )re   rf   rg   r   rj   rh   rƒ   rP   rK   rÒ   r0   r   r   rc   rk   rl   s   @r   r‡   r‡   >  s_   ø„ Ø	€ð �4ð  ˜Cõ  ð
*˜sð * tó *ñ�3ð ˜dó ñ$�Cð  ¨$¡ð ¸÷ r(   r‡   c                   ó,   ‡ — e Zd Zd Zdedefˆ fd„Zˆ xZS )r‹   r   r   c                 óÂ   •— t        «       j                  «       |d<   | j                  |d<   | j                  |d<   |j	                  d«      sd |d<   t
        ‰| �  |¬«      S )Nr>   r   ÚUser_IDÚReturnr€   )r	   r‚   r   r   rR   r$   rƒ   r„   s     €r   rƒ   zReferrals.addk  sV   ø€ Ü“h—m‘m“o€$€{ÑØ—‘€$€|ÑØ—L‘L€$€y�/Ø	�‰�(Ô	Ø€4ˆ�>Ü	‰‰˜$ˆÓ	Ðr(   )re   rf   rg   r   rj   rh   rƒ   rk   rl   s   @r   r‹   r‹   h  s    ø„ Ø	€ð �4ð  ˜C÷  ñ  r(   r‹   c                   ó>   ‡ — e Zd Zd Zdedefˆ fd„Zddedefd„Zˆ xZ	S )rŒ   r   r   c                 ó–   •— t        «       j                  «       |d<   | j                  |d<   | j                  |d<   t        ‰| �  |¬«      S ©Nr>   r   rç   r€   ©r	   r‚   r   r   r$   rƒ   r„   s     €r   rƒ   zSurplus.addw  óA   ø€ Ü“h—m‘m“o€$€{ÑØ—‘€$€|ÑØ—L‘L€$€y�/Ü	‰‰˜$ˆÓ	Ðr(   r¦   c           	      ó&  — t        t        j                  |«      «      j                  «       }| j	                  «       | _        | j
                  j                  d«       | j
                  j                  d¬«       | j
                  j                  d|g¬«       | j
                  j                  dd¬«       g }| j                  «       D ]H  }|j                   |j                  d	«       |j                  d«      d
 |j                  d«      dœ«       ŒJ |S )Nz,join Clients on Surplus.Client_ID=Clients.IDzClients.Name,Surplus.*rV   rÊ   r;   r>   r?   r@   r•   rŒ   ÚItemrÌ   râ   rÑ   s        r   rÒ   zSurplus.log}  sÖ   € Ü
”—‘˜4“Ó
!×
%Ñ
%Ó
'€%Ø�L‰L‹N€$„'Ø‡'�'‡,�,Ð=Ô>Ø‡'�'‡.�.Ð0€.Ô1Ø‡'�'‡.�.Ð,°E°7€.Ô;Ø‡'�'‡-�-�k¨F€-Ô3à	€$Ø�[‰[‹]ò €cØ‡;�;Øˆ3�7‰7�6‹?Ø�—‘˜Ó$ØØˆS�W‰W�V‹_ñ	õ ðð 
€+r(   rÔ   )
re   rf   rg   r   rj   rh   rƒ   rP   rÒ   rk   rl   s   @r   rŒ   rŒ   t  s.   ø„ Ø	€ð �4ð  ˜Cõ  ñ�3ð ˜d÷ r(   rŒ   c                   óZ   ‡ — e Zd Zd Zdedefˆ fd„Zd	dedefd„Zd
de	de
e   defd„Zˆ xZS )r‰   r   r   c                 ó–   •— t        «       j                  «       |d<   | j                  |d<   | j                  |d<   t        ‰| �  |¬«      S rë   rì   r„   s     €r   rƒ   zClothing.add’  rí   r(   r¦   c                 óP  — t        t        j                  |«      «      j                  «       }| j	                  «       | _        | j
                  j                  d«       | j
                  j                  d¬«       | j
                  j                  d|g¬«       | j
                  j                  dd¬«       g }| j                  «       D ]]  }|j                   |j                  d	«       |j                  d«      d
 |j                  d«      › d |j                  d«      › �dœ«       Œ_ |S )Nz-join Clients on Clothing.Client_ID=Clients.IDzClients.Name,Clothing.*rV   rÊ   r;   r>   r?   r@   r•   r‰   ÚInz => ÚOutrÌ   râ   rÑ   s        r   rÒ   zClothing.log™  sì   € Ü
”—‘˜4“Ó
!×
%Ñ
%Ó
'€%Ø�L‰L‹N€$„'Ø‡'�'‡,�,Ð>Ô?Ø‡'�'‡.�.Ð1€.Ô2Ø‡'�'‡.�.Ð,°E°7€.Ô;Ø‡'�'‡-�-�k¨F€-Ô3Ø	€$Ø�[‰[‹]ò €cØ‡;�;Øˆ3�7‰7�6‹?Ø�—‘˜Ó$ØØ�—‘˜“ˆ˜d 7 3§7¡7¨5£>Ð"2Ð3ñ	õ ðð 
€+r(   r<   r=   c                 ó|  — | j                  «       | _        | j                  j                  | j                  › d�«       | j                  j	                  | j
                  j                  d«      «       |r| j                  j                  ||¬«       | j                  j                  dd¬«       | j                  «       S rÝ   )
rD   rE   rW   r   ra   r#   rR   rF   rG   rI   rb   s      r   rc   zClothing.allª  s   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.�D—J‘J�<Ð7Ð8Ô9Ø‡'�'‡,�,ˆt�v‰v�z‰z˜)Ó$Ô%Ù
Ø‡7�7‡>�>˜ E€>Ô*à‡'�'‡-�-�k¨F€-Ô3Ø	�‰‹Ðr(   rÔ   rd   )re   rf   rg   r   rj   rh   rƒ   rP   rÒ   r0   r   rc   rk   rl   s   @r   r‰   r‰   �  sL   ø„ Ø	€ð �4ð  ˜Cõ  ñ�3ð ˜dó ñ"�Cð  ¨$¡ð ¸÷ r(   r‰   c                   óR   ‡ — e Zd Zd ZdddœZdedefˆ fd„Zdedefd„Z	defd	„Z
ˆ xZS )
rŠ   z&join Users on Users.ID = Notes.User_IDz,join Clients on Clients.ID = Notes.Client_ID)r   ÚClientr   r   c                 óÂ   •— t        «       j                  «       |d<   | j                  |d<   t        «       |d<   |j	                  d«      xs d |d<   t
        ‰| �  |¬«      S )Nr>   r   rç   r�   r€   )r	   r‚   r   r   rR   r$   rƒ   r„   s     €r   rƒ   z	Notes.add»  sW   ø€ Ü“h—m‘m“o€$€{ÑØ—‘€$€|ÑÜ“K€$€y�/Ø—X‘X˜jÓ)Ò1¨T€$€zÑÜ	‰‰˜$ˆÓ	Ðr(   r7   c                 óÄ  — | j                  «       | _        | j                  j                  d¬«       | j                  j                  d|g¬«       | j                  j	                  dd¬«       | j                  j                  | j                  j                  dd	«      ¬
«       t        d| j                  ¬«       | j                  t        | j                  «       «      «      S )NúNotes.*,Users.Name as UserrV   r:   r;   r>   r?   r@   r   r   rä   zQuery Cacher   )rD   rE   rW   rF   rG   ra   r#   rR   r   rH   rP   rI   rJ   s     r   rK   zNotes.get_clientÂ  s—   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.Ð4€.Ô5Ø‡'�'‡.�.�~¨Y¨K€.Ô8Ø‡'�'‡-�-�k¨F€-Ô3Ø‡'�'‡,�,�D—F‘F—J‘J˜v bÓ)€,Ô*Üˆm §¡Õ(Ø	×	Ñ	œ4 §¡£Ó.Ó	/Ð/r(   c                 ó¢  — | j                  «       | _        | j                  j                  d«       | j                  j                  | j                  j                  dd«      ¬«       | j                  j                  | j                  j                  dd«      ¬«       | j                  j                  d«       t        | j                  «       «      S )Nrú   r   r   rä   r÷   zdate(Timestamp) desc)	rD   rE   rW   ra   r#   rR   rG   rP   rI   r5   s    r   rc   z	Notes.allË  s„   € Ø�L‰L‹N€$„'Ø‡'�'‡.�.Ð-Ô.Ø‡'�'‡,�,�D—F‘F—J‘J˜v bÓ)€,Ô*Ø‡'�'‡,�,�D—F‘F—J‘J˜x¨Ó+€,Ô,Ø‡'�'‡-�-Ð&Ô'Ü	ˆd�k‰k‹mÓ	Ðr(   )re   rf   rg   r   r#   rj   rh   rƒ   rP   rK   rc   rk   rl   s   @r   rŠ   rŠ   ´  sG   ø„ Ø	€à	1Ø9ñ€ð
 �4ð  ˜Cõ  ð0˜sð 0 tó 0ð�$÷ r(   rŠ   c                   ó(   — e Zd Zd Zdefd„Zdefd„Zy)ÚOptionsr   c                 óÎ   — t        |j                  d«      t        «      r$t        j                  |j                  d«      «      n|j                  d«      xs g |d<   t        |«      S )NÚoptions)Ú
isinstancerR   r0   rt   ru   r   ©r&   r   s     r   Úmk_rowzOptions.mk_rowÖ  sO   € Ü:DÀTÇXÁXÈiÓEXÔY\Ô:]”E—M‘M $§(¡(¨9Ó"5Ô6Ðcg×ckÑckÐluÓcvÒc|Ðz|€$€y�/Ü	ˆT‹Ðr(   c                 ó´   — | j                  «       | _        | j                  «       D �ci c]%  } |j                  d«       |j                  d«      “Œ' c}S c c}w )Nr’   rÿ   )rD   rE   rI   rR   )r&   r   s     r   ÚcachezOptions.cacheÚ  sC   € Ø�L‰L‹N€$„'Ø8<¿¹»Ö	F°ˆ'ˆ#�'‰'�&‹/˜'˜#Ÿ'™' )Ó,Ñ
,Ò	FÐFùÒ	Fs   ¨*AN)re   rf   rg   r   rj   r  r  r{   r(   r   rý   rý   Ó  s!   „ Ø	€ð˜$ó ðG�Dô Gr(   rý   c                   ó*   — e Zd Zddedefd„Zdefd„Zy)Ú	Dashboardr¦   r   c                 ó†  — g }|t        t        «       j                  |¬«      «      z  }|t        t        «       j                  |¬«      «      z  }|t        t	        «       j                  |¬«      «      z  }|t        t        «       j                  |¬«      «      z  }|t        t        «       j                  |¬«      «      z  }|S )N)r¦   )rP   r†   rÒ   rŒ   r‰   r‡   rˆ   )r&   r¦   r   s      r   rÒ   zDashboard.logß  s˜   € Ø	€$ØŒ$Œu‹w�{‰{ ˆ{Ó%Ó
&Ñ&€$ØŒ$Œw‹y�}‰} $ˆ}Ó'Ó
(Ñ(€$ØŒ$Œx‹z�~‰~ 4ˆ~Ó(Ó
)Ñ)€$ØŒ$Œt‹v�z‰z˜tˆzÓ$Ó
%Ñ%€$ØŒ$Œw‹y�}‰} $ˆ}Ó'Ó
(Ñ(€$à	€+r(   c                 ó€  — dt        «       j                  «       t        «       j                  «       t	        «       j                  «       t        «       j                  «       t        «       j                  «       t        «       j                  «       t        | j                  «       «      t        «       j                  «       dœ	}|S )Nr   )	ÚGuest_TotalÚMonthlyr†   rˆ   r‰   r‡   rŒ   ÚLogrý   )r"   r½   r†   r]   rˆ   r‰   r‡   rŒ   rP   rÒ   rý   r  r  s     r   r½   zDashboard.summaryé  s|   € àÜ‹Y×ÑÓ Ü‹7�>‰>ÓÜ‹Y×ÑÓÜ‹j×ÑÓ!Ü
‹&�-‰-‹/Ü‹Y×ÑÓÜ	ˆd�h‰h‹jÓ	Ü‹Y�_‰_Óñ

€$ð 
€+r(   NrÔ   )re   rf   rg   rh   rP   rÒ   rj   r½   r{   r(   r   r  r  Þ  s!   „ ñ�3ð ˜dó ð�dô r(   r  c                 ó   — d„ }|S )Nc                  óŽ   — |j                  d«      }|j                  d«      }dd|› d|› �dœ}t        j                  d|¬«       |S )	Nr   Úlevelr   zUser z is not )ÚstatusÚmessageÚResponser   )rR   rt   r   )ÚargcÚargvro   r  Úresponses        r   r  zauth_failed.<locals>.messageø  sH   € Ø	�‰�&Ó	€$Ø
�(‰(�7Ó
€%Ø U¨4¨&°¸¸Ð#@ÑA€(Ü‡+�+�J HÕ-Ø	€/r(   r{   )Úfuncr  s     r   Úauth_failedr  ÷  s   € òð 	€r(   r  c                 óX   — t        j                  dd| i¬«       d}d„ }|dk(  r|S t        S )Nz	Auth argsÚLevelr   ÚBrentac                 ó   ‡ — ˆ fd„}|S )Nc                  óJ   •— t        j                  d| |dœ¬«        ‰| i |¤Ž y )NÚinside)r  r  r   )rt   r   )r  r  r  s     €r   Úwrapperz(auth.<locals>.grab_func.<locals>.wrapper  s#   ø€ Ü‡;�;�X¨4°tÑ#<Õ=ÙˆÐ�Ór(   r{   )r  r  s   ` r   Ú	grab_funczauth.<locals>.grab_func  s   ø€ ôð 
€.r(   ÚBrent)rt   r   r  )r  ro   r  s      r   rw   rw     s3   € Ü‡��; W¨U OÕ4Ø€òð
 	ˆG‚OØ	Ðä	Ðr(   )Útypingr   r   r   r   Úflaskr   rt   r   r	   Údbr
   r   rh   r   r   rn   r"   r†   rˆ   r‡   r‹   rŒ   r‰   rŠ   rý   r  r  r0   rw   r{   r(   r   ú<module>r#     sÐ   ðß .Ó .Ý Û ß ß ð�3ó ôD�Eô DôL'ˆEô 'ô$ˆmô ôB(ˆMô (ôT(ˆmô (ôT(ˆ=ô (ôT	 �ô 	 ôˆmô ô6#ˆ}ô #ôJˆMô ô>	Gˆeô 	Gô�ô ò2ðˆsô r(   