Ë
    Á?jŽ  ã                   óD  — d dl mZ d dlmZ d dlmZmZmZmZm	Z	 d dl
mZ d dlmZmZmZ defd„Zd„ Zded	z  fd
„Zded	z  fd„Zdee   dee   fd„Zded	z  fd„Zdedd	fd„Zdedefd„Zded	z  fd„Zd„ Zdedefd„Zdefd„Zdededd	fd„Z d„ Z!dedee   dd	fd„Z"y	)é    ©Úwraps)ÚUUID)ÚabortÚflashÚredirectÚsessionÚurl_for)Úcurrent_user)ÚCoproprieteÚUserCoproprieteÚdbÚreturnc                 ó   — t        | «      S )z4Normalise un identifiant public (str ou UUID Flask).)Ústr)Úvalues    úY:\papa\app\helpers.pyÚpublic_id_strr   
   s   € äˆu‹:Ðó    c                 ól   —  | j                   j                  ddt        |«      i|¤Žj                  «       S )NÚ	public_id© )ÚqueryÚ	filter_byr   Úfirst_or_404)Úmodelr   Úfilterss      r   Úget_by_public_idr      s7   € Ø ˆ5�;‰;× Ñ ñ Ü 	Ó*ðØ.5ñç�lƒnðr   Nc                 óx   — t        j                  «       j                  t        | «      ¬«      j	                  «       S ©N©r   )r   Úquery_actifsr   r   Úfirstr!   s    r   Úget_copropriete_by_public_idr$      s2   € Ü×#Ñ#Ó%×/Ñ/Ü 	Ó*ð 0ó ç�eƒgðr   c                 óL   — t        | «      }|rt        |j                  «      sy |S )N)r$   Úuser_can_access_coproprieteÚid©r   Úcopros     r   Úresolve_copropriete_public_idr*      s#   € Ü(¨Ó3€EÙÔ3°E·H±HÔ=ØØ€Lr   Ú
public_idsc                 ó  — | sg S g }| D ]q  }|j                  «       }|sŒ	 t        |«       t        j                  «       j                  |¬«      j                  «       }|sŒW|j                  |j                  «       Œs |S # t        $ r Y Œ�w xY wr    )	Ústripr   Ú
ValueErrorr   r"   r   r#   Úappendr'   )r+   ÚidsÚpidr)   s       r   Úcopropriete_ids_from_public_idsr2   "   s‹   € ÙØˆ	Ø
€CÛˆØ�i‰i‹kˆÙØð	Ü�ŒIô ×(Ñ(Ó*×4Ñ4¸sÐ4ÓC×IÑIÓKˆÚØ�J‰J�u—x‘xÕ ð ð €Jøô ò 	Ùð	ús    A?Á?	BÂ
Bc                  ó,   — t        j                  d«      S ©NÚcopropriete_id)r	   Úgetr   r   r   Úget_copropriete_idr7   3   s   € Ü�;‰;Ð'Ó(Ð(r   Úcopro_idc                 ó   — | t         d<   y r4   )r	   ©r8   s    r   Úset_copropriete_idr;   7   s   € Ø („GÐÒr   c                 óP   — t         j                  sy| t        j                  «       v S )NF)r   Úis_authenticatedÚaccessible_copropriete_idsr:   s    r   r&   r&   ;   s"   € Ü×(Ò(ØØ”|×>Ñ>Ó@Ð@Ð@r   c                  óš   — t        «       } | rt        | «      sy t        j                  «       j	                  | ¬«      j                  «       }|S )N)r'   )r7   r&   r   r"   r   r#   ©r8   r)   s     r   Úget_copropriete_activerA   A   sB   € Ü!Ó#€HÙÔ6°xÔ@ØÜ×$Ñ$Ó&×0Ñ0°HÐ0Ó=×CÑCÓE€EØ€Lr   c                 ó.   ‡ — t        ‰ «      ˆ fd„«       }|S )Nc                  óp   •— t        «       }|€ t        dd«       t        t        d«      «      S  ‰| d|i|¤ŽS )Nu/   SÃ©lectionnez une copropriÃ©tÃ© pour continuer.Úwarningzmain.select_coproprieteÚcopropriete)rA   r   r   r
   )ÚargsÚkwargsr)   Úfs      €r   Ú	decoratedz'copropriete_required.<locals>.decoratedJ   sA   ø€ ä&Ó(ˆØˆ=ÜÐCÀYÔOÜœGÐ$=Ó>Ó?Ð?Ù�$Ð4 EÐ4¨VÑ4Ð4r   r   ©rH   rI   s   ` r   Úcopropriete_requiredrK   I   s!   ø€ Ü
ˆ1ƒXó5ó ð5ð Ðr   c                 ó”   — t        | «      st        d«       t        j                  j	                  t
        | «      }|st        d«       |S )Né“  é”  )r&   r   r   r	   r6   r   r@   s     r   Úensure_copropriete_accessrO   U   s4   € Ü& xÔ0ÜˆcŒ
Ü�J‰J�N‰Nœ;¨Ó1€EÙÜˆcŒ
Ø€Lr   c                 óv   — t        | «      }|st        d«       t        |j                  «      st        d«       |S )NrN   rM   )r$   r   r&   r'   r(   s     r   Ú&ensure_copropriete_access_by_public_idrQ   ^   s.   € Ü(¨Ó3€EÙÜˆcŒ
Ü& u§x¡xÔ0ÜˆcŒ
Ø€Lr   Úuser_idc                 ó¼   — t         j                  j                  | |¬«      j                  «       }|s+t        j
                  j                  t        | |¬«      «       y y )N)rR   r5   )r   r   r   r#   r   r	   Úadd)rR   r8   Úexistss      r   Úlink_user_to_coproprieterV   g   sM   € Ü×"Ñ"×,Ñ,Ø¨ð -ó ç�eƒgð ñ Ü
�
‰
�‰”¨wÀxÔPÕQð r   c                 ó.   ‡ — t        ‰ «      ˆ fd„«       }|S )Nc                  ój   •— t         j                  rt         j                  st        d«        ‰| i |¤ŽS )NrM   )r   r=   Úis_adminr   )rF   rG   rH   s     €r   rI   z!admin_required.<locals>.decoratedp   s+   ø€ ä×,Ò,´L×4IÒ4IÜ�#ŒJÙ�$Ð!˜&Ñ!Ð!r   r   rJ   s   ` r   Úadmin_requiredrZ   o   s!   ø€ Ü
ˆ1ƒXó"ó ð"ð
 Ðr   Úcopropriete_idsc                 ó†   — t         j                  j                  | ¬«      j                  «        |D ]  }t	        | |«       Œ y)u2   Remplace les liens utilisateur â†” copropriÃ©tÃ©s.)rR   N)r   r   r   ÚdeleterV   )rR   r[   r8   s      r   Úset_user_coproprietesr^   y   s6   € ä×Ñ×#Ñ#¨GÐ#Ó4×;Ñ;Ô=Û#ˆÜ  ¨(Õ3ñ $r   )#Ú	functoolsr   Úuuidr   Úflaskr   r   r   r	   r
   Úflask_loginr   Ú
app.modelsr   r   r   r   r   r   r$   r*   ÚlistÚintr2   r7   r;   Úboolr&   rA   rK   rO   rQ   rV   rZ   r^   r   r   r   Ú<module>rg      s  ðÝ Ý ç :Õ :Ý $ç 7Ñ 7ð˜Có ò
ð¨{¸TÑ/Aó ð°¸dÑ0Bó ð°°S±	ð ¸dÀ3¹ió ð")˜C $™Jó )ð) ð )¨ó )ðA¨#ð A°$ó Að ¨dÑ 2ó ò	ð¨ð °ó ð¸ó ðR cð R°Sð R¸Tó Ròð4 3ð 4¸¸c¹ð 4Àtô 4r   