+
    Á?jŽ  ã                   óü   € ^ RI Ht ^ RIHt ^ RIHtHtHtHtH	t	 ^ RI
Ht ^ RIHtHtHt R R ltR tR	 R
 ltR R ltR R ltR R ltR R ltR R ltR R ltR tR R ltR R ltR R ltR tR R  ltR!# )"é    ©Úwraps)ÚUUID)ÚabortÚflashÚredirectÚsessionÚurl_for)Úcurrent_user)ÚCoproprieteÚUserCoproprieteÚdbc                ó$   € V ^8„  d   QhR\         /# ©é   Úreturn©Ústr)Úformats   "Ú2R:\var\www\stessy.org\copro_gestion\app\helpers.pyÚ__annotate__r   
   s   € ÷ ñ œCñ ó    c                ó   € \        V 4      # )z4Normalise un identifiant public (str ou UUID Flask).r   )Úvalues   &r   Úpublic_id_strr   
   s   € äˆu‹:Ðr   c                 ól   € V P                   P                  ! RR \        V4      /VB P                  4       # )Ú	public_id© )ÚqueryÚ	filter_byr   Úfirst_or_404)Úmodelr   Úfilterss   &&,r   Úget_by_public_idr$      s5   € Ø�;‰;× Ò ñ Ü 	Ó*ðØ.5ñç�lƒnðr   c                ó2   € V ^8„  d   QhR\         R,          /# ©r   r   N©r   )r   s   "r   r   r      s   € ÷ ñ ¬{¸TÕ/Añ r   c                 óz   € \         P                  ! 4       P                  \        V 4      R 7      P	                  4       # ©©r   )r   Úquery_actifsr    r   Úfirstr*   s   &r   Úget_copropriete_by_public_idr-      s2   € Ü×#Ò#Ó%×/Ñ/Ü 	Ó*ð 0ó ç�eƒgðr   c                ó2   € V ^8„  d   QhR\         R,          /# r&   r'   )r   s   "r   r   r      s   € ÷ ñ ´¸dÕ0Bñ r   c                 óf   € \        V 4      pV'       d   \        VP                  4      '       g   R # V# )N)r-   Úuser_can_access_coproprieteÚid©r   Úcopros   & r   Úresolve_copropriete_public_idr4      s&   € Ü(¨Ó3€EßÔ3°E·H±H×=Ò=ÙØ€Lr   c                ó\   € V ^8„  d   QhR\         \        ,          R\         \        ,          /# )r   Ú
public_idsr   )Úlistr   Úint)r   s   "r   r   r   "   s"   € ÷ ñ ´´Sµ	ð ¼dÄ3½iñ r   c                 óP  € V '       g   . # . pV  F�  pVP                  4       pV'       g   K   \        V4       \        P                  ! 4       P                  TR 7      P                  4       pT'       g   Kf  TP                  TP                  4       Kƒ  	  V#   \         d     K•  i ; ir)   )	Ústripr   Ú
ValueErrorr   r+   r    r,   Úappendr1   )r6   ÚidsÚpidr3   s   &   r   Úcopropriete_ids_from_public_idsr?   "   s�   € ßØˆ	Ø
€CÛˆØ�i‰i‹kˆßÙð	Ü�ŒIô ×(Ò(Ó*×4Ñ4¸sÐ4ÓC×IÑIÓKˆß‰5Ø�J‰J�u—x‘xÖ ñ ð €Jøô ô 	Úð	ús   ­BÂB%Â$B%c                ó2   € V ^8„  d   QhR\         R,          /# r&   ©r8   )r   s   "r   r   r   3   s   € ÷ )ñ )œC $�Jñ )r   c                  ó.   € \         P                  ! R 4      # )Úcopropriete_id)r	   Úgetr   r   r   Úget_copropriete_idrE   3   s   € Ü�;Š;Ð'Ó(Ð(r   c                ó(   € V ^8„  d   QhR\         RR/# )r   Úcopro_idr   NrA   )r   s   "r   r   r   7   s   € ÷ )ñ )¤ð )¨ñ )r   c                 ó   € V \         R &   R# )rC   N)r	   ©rG   s   &r   Úset_copropriete_idrJ   7   s   € Ø („GÐÓr   c                ó0   € V ^8„  d   QhR\         R\        /# ©r   rG   r   )r8   Úbool)r   s   "r   r   r   ;   s   € ÷ Añ A¬#ð A´$ñ Ar   c                 ób   € \         P                  '       g   R # V \         P                  ! 4       9   # )F)r   Úis_authenticatedÚaccessible_copropriete_idsrI   s   &r   r0   r0   ;   s%   € Ü×(×(Ð(ÙØ”|×>Ò>Ó@Ñ@Ð@r   c                ó2   € V ^8„  d   QhR\         R,          /# r&   r'   )r   s   "r   r   r   A   s   € ÷ ñ ¤¨dÕ 2ñ r   c                  ó¶   € \        4       p V '       d   \        V 4      '       g   R # \        P                  ! 4       P	                  V R7      P                  4       pV# )N)r1   )rE   r0   r   r+   r    r,   ©rG   r3   s     r   Úget_copropriete_activerT   A   sE   € Ü!Ó#€HßÔ6°x×@Ò@ÙÜ×$Ò$Ó&×0Ñ0°HÐ0Ó=×CÑCÓE€EØ€Lr   c                 ó0   a € \        S 4      V 3R  l4       pV# )c                  ót   <€ \        4       pVf!   \        RR4       \        \        R4      4      # S! V RV/VB # )Nu/   SÃ©lectionnez une copropriÃ©tÃ© pour continuer.Úwarningzmain.select_coproprieteÚcopropriete)rT   r   r   r
   )ÚargsÚkwargsr3   Úfs   *, €r   Ú	decoratedÚ'copropriete_required.<locals>.decoratedJ   sA   ø€ ä&Ó(ˆØŠ=ÜÐCÀYÔOÜœGÐ$=Ó>Ó?Ð?Ù�$Ð4 EÐ4¨VÑ4Ð4r   r   ©r[   r\   s   f r   Úcopropriete_requiredr_   I   s!   ø€ Ü
ˆ1ƒXô5ó ð5ð Ðr   c                ó0   € V ^8„  d   QhR\         R\        /# rL   )r8   r   )r   s   "r   r   r   U   s   € ÷ ñ ¬ð ´ñ r   c                 ó¬   € \        V 4      '       g   \        R 4       \        P                  P	                  \
        V 4      pV'       g   \        R4       V# )é“  é”  )r0   r   r   r	   rD   r   rS   s   & r   Úensure_copropriete_accessrd   U   s7   € Ü& x×0Ò0ÜˆcŒ
Ü�J‰J�N‰Nœ;¨Ó1€EßÜˆcŒ
Ø€Lr   c                ó$   € V ^8„  d   QhR\         /# r   r'   )r   s   "r   r   r   ^   s   € ÷ ñ ¼ñ r   c                 óŽ   € \        V 4      pV'       g   \        R 4       \        VP                  4      '       g   \        R4       V# )rc   rb   )r-   r   r0   r1   r2   s   & r   Ú&ensure_copropriete_access_by_public_idrg   ^   s1   € Ü(¨Ó3€EßÜˆcŒ
Ü& u§x¡x×0Ò0ÜˆcŒ
Ø€Lr   c                ó4   € V ^8„  d   QhR\         R\         RR/# )r   Úuser_idrG   r   NrA   )r   s   "r   r   r   g   s&   € ÷ Rñ R¤cð R´Sð R¸Tñ Rr   c                 óÈ   € \         P                  P                  WR 7      P                  4       pV'       g,   \        P
                  P                  \        WR 7      4       R# R# ))ri   rC   N)r   r   r    r,   r   r	   Úadd)ri   rG   Úexistss   && r   Úlink_user_to_coproprieterm   g   sI   € Ü×"Ñ"×,Ñ,Øð -ó ç�eƒgð ÷ Ü
�
‰
�‰”¨wÔPÖQñ r   c                 ó0   a € \        S 4      V 3R  l4       pV# )c                  ó‚   <€ \         P                  '       d   \         P                  '       g   \        R 4       S! V / VB # )rb   )r   rO   Úis_adminr   )rY   rZ   r[   s   *,€r   r\   Ú!admin_required.<locals>.decoratedp   s1   ø€ ä×,×,Ð,´L×4I×4IÐ4IÜ�#ŒJÙ�$Ð!˜&Ñ!Ð!r   r   r^   s   f r   Úadmin_requiredrr   o   s!   ø€ Ü
ˆ1ƒXô"ó ð"ð
 Ðr   c                óJ   € V ^8„  d   QhR\         R\        \         ,          RR/# )r   ri   Úcopropriete_idsr   N)r8   r7   )r   s   "r   r   r   y   s%   € ÷ 4ñ 4¤3ð 4¼¼c½ð 4Àtñ 4r   c                óŠ   € \         P                  P                  V R7      P                  4        V F  p\	        W4       K  	  R# )u2   Remplace les liens utilisateur â†” copropriÃ©tÃ©s.)ri   N)r   r   r    Údeleterm   )ri   rt   rG   s   && r   Úset_user_coproprietesrw   y   s4   € ä×Ñ×#Ñ#¨GÐ#Ó4×;Ñ;Ô=Û#ˆÜ  Ö3ó $r   N)Ú	functoolsr   Úuuidr   Úflaskr   r   r   r	   r
   Úflask_loginr   Ú
app.modelsr   r   r   r   r$   r-   r4   r?   rE   rJ   r0   rT   r_   rd   rg   rm   rr   rw   r   r   r   Ú<module>r}      sg   ðÝ Ý ç :Õ :Ý $ç 7Ñ 7õò
õõõõ")õ)õAõò	õõõRò÷4r   