Ë
    
.Úi  ã                   ó  — 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 d dl mZ d dlmZ  ej                  e	«       G d„ dej                  «      «       Z ej                  e«       G d„ d	ej                  «      «       Z G d
„ dej$                  «      Z ej                  e«       G d„ de«      «       Z ej                  e
«       G d„ dej                  «      «       Z ej                  e«       G d„ dej                  «      «       Zy)é    )Úadmin)Ú	UserAdmin)Úformat_html)ÚUserÚRoleÚ
MembershipÚAuditLog)ÚTenantc                   ó   — e Zd ZdZdZy)Ú	RoleAdmin)ÚidÚ__str__)r   N)Ú__name__Ú
__module__Ú__qualname__Úlist_displayÚordering© ó    ú#/var/www/html/acx/accounts/admin.pyr   r      s   „ à$€LØ�Hr   r   c                   ó    — e Zd ZdZdZdZdZdZy)ÚTenantAdmin)r   ÚnameÚslugÚstatusÚplanÚcountryÚcityÚ
created_at)r   r   r   )r   r   Ú
legal_nameÚemailÚphoner   )r   )r   r   Ú
updated_atN)r   r   r   r   Úlist_filterÚsearch_fieldsr   Úreadonly_fieldsr   r   r   r   r      s   „ à\€LØ/€KØL€MØ€HØ:�Or   r   c                   ó>   — e Zd ZeZdZdZdZdZdZ	defd„Z
de
_        y	)
ÚMembershipInliner   )ÚtenantT)r)   r   Úis_ownerÚroles_previewr   )r+   r   Úobjc           	      óö   — |j                   sy|j                  j                  «       j                  d«      }|sydj	                  |D �cg c]!  }|j
                  › d|j                  «       › �‘Œ# c}«      S c c}w ©NÚ-r   ú, ú:)ÚpkÚrolesÚallÚorder_byÚjoinr   Úget_id_display©Úselfr,   r3   Úrs       r   r+   zMembershipInline.roles_preview#   sb   € Ø�vŠvØØ—	‘	—‘“×(Ñ(¨Ó.ˆÙØØ�y‰yÀ%ÖH¸Q˜QŸT™T˜F ! A×$4Ñ$4Ó$6Ð#7Ò8ÒHÓIÐIùÒHs   Á	&A6ÚRolesN)r   r   r   r   ÚmodelÚextraÚautocomplete_fieldsÚshow_change_linkÚfieldsr&   r+   Úshort_descriptionr   r   r   r(   r(      s:   „ Ø€EØ€EØ%ÐØÐØL€FØ5€OðJ ó Jð '.€MÕ#r   r(   c                   óÐ   — e Zd ZdZegZej                  dddifdddiffz   ZdZdZ	dZ
d	Z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_        defd„Zde_        y)r   uQ   
    Admin User amÃ©liorÃ© pour voir clairement tenant + membership + roles.
    z	Infos ACXr@   )Ú	telephoneÚdepartementzTenancy (diagnostic))Úactive_membership_preview)
Úusernamer!   Ú
first_nameÚ	last_nameÚ	is_activeÚis_staffÚis_superuserÚactive_tenant_nameÚactive_membership_statusÚactive_membership_rolesr   )rF   r!   rG   rH   )rF   Úuserc                 ó
  — |j                   j                  t        j                  j                  ¬«      j                  d«      j                  d«      }|j                  d¬«      j                  «       xs |j                  «       S )N)r   r)   r3   T)r*   )ÚmembershipsÚfilterr   ÚStatusÚACTIVEÚselect_relatedÚprefetch_relatedÚfirst)r9   rO   Úqss      r   Ú_get_active_membershipz UserAdmin._get_active_membershipO   sf   € à×Ñ×#Ñ#¬:×+<Ñ+<×+CÑ+CÐ#ÓDß‰^˜HÓ%ßÑ˜gÓ&ð 	ð
 �y‰y $ˆyÓ'×-Ñ-Ó/Ò=°2·8±8³:Ð=r   r,   c                 óp   — | j                  |«      }|r"|j                  r|j                  j                  S dS ©Nr/   )rY   r)   r   ©r9   r,   Úms      r   rL   zUserAdmin.active_tenant_nameW   s-   € Ø×'Ñ'¨Ó,ˆÙ ! a§h¢hˆq�x‰x�}‰}Ð7°CÐ7r   zActive Tenantc                 óD   — | j                  |«      }|r|j                  S dS r[   )rY   r   r\   s      r   rM   z"UserAdmin.active_membership_status\   s#   € Ø×'Ñ'¨Ó,ˆÙˆq�x‰xÐ% #Ð%r   zMembership Statusc           	      ó  — | j                  |«      }|sy|j                  j                  «       j                  d«      }|sydj	                  |D �cg c]!  }|j
                  › d|j                  «       › �‘Œ# c}«      S c c}w r.   )rY   r3   r4   r5   r6   r   r7   )r9   r,   r]   r3   r:   s        r   rN   z!UserAdmin.active_membership_rolesa   sn   € Ø×'Ñ'¨Ó,ˆÙØØ—‘—‘“×&Ñ& tÓ,ˆÙØØ�y‰yÀ%ÖH¸Q˜QŸT™T˜F ! A×$4Ñ$4Ó$6Ð#7Ò8ÒHÓIÐIùÒHs   Á&A=zMembership Rolesc           	      óÂ  — | j                  |«      }|syt        |j                  j                  «       j	                  d«      «      }dj                  |D �cg c]!  }|j                  › d|j                  «       › �‘Œ# c}«      xs d}t        d|j                  j                  |j                  j                  |j                  |j                  rd|«      S d|«      S c c}w )	zS
        Bloc lisible dans la fiche user : reproduit la logique /auth/me/.
        u5   Aucun membership ACTIVE trouvÃ© pour cet utilisateur.r   r0   r1   u   Aucun rÃ´lezd<div><b>Tenant:</b> {} (id={})<br/><b>Status:</b> {}<br/><b>Owner:</b> {}<br/><b>Roles:</b> {}</div>u   âœ…u   â�Œ)rY   Úlistr3   r4   r5   r6   r   r7   r   r)   r   r   r*   )r9   r,   r]   r3   r:   Úrole_txts         r   rE   z#UserAdmin.active_membership_previewk   sÆ   € ð ×'Ñ'¨Ó,ˆÙØJä�Q—W‘W—[‘[“]×+Ñ+¨DÓ1Ó2ˆØ—9‘9ÀeÖLÀ §¡  a¨×(8Ñ(8Ó(:Ð';Ò<ÒLÓMÒ^ÐQ^ˆäðð �H‰H�M‰MØ�H‰H�K‰KØ�H‰HØ—Z’ZˆEØó
ð 	
ð &+Øó
ð 	
ùò Ms   Á&CzActive Membership (debug)N)r   r   r   Ú__doc__r(   ÚinlinesÚDjangoUserAdminÚ	fieldsetsr&   r   Úlist_select_relatedr%   r   r   rY   rL   rA   rM   rN   rE   r   r   r   r   r   .   sÑ   „ ñð  Ð €Gð  ×)Ñ)Ø	�xÐ!=Ð>Ð?Ø	 (Ð,JÐ!KÐLð-ñ €Ið
 5€Oð€Lð ÐàD€MØ€Hð>¨4ó >ð8 dó 8ð ,;ÐÔ(ð&¨Dó &ð 2EÐÔ.ðJ¨4ó Jð 1CÐÔ-ð
¨Tó 
ð0 3NÐÕ/r   r   c                   ó>   — e Zd ZdZdZdZdZdZdZde	fd„Z
d	e
_        y
)ÚMembershipAdmin)r   r)   rO   r   r*   r+   r   )r   r*   r)   )Úuser__usernameÚuser__emailÚtenant__name)r)   rO   ©z-id)r3   r,   c           	      óÜ   — |j                   j                  «       j                  d«      }|sydj                  |D �cg c]!  }|j                  › d|j                  «       › �‘Œ# c}«      S c c}w )Nr   r/   r0   r1   )r3   r4   r5   r6   r   r7   r8   s       r   r+   zMembershipAdmin.roles_preview�   sX   € Ø—	‘	—‘“×(Ñ(¨Ó.ˆÙØØ�y‰yÀ%ÖH¸Q˜QŸT™T˜F ! A×$4Ñ$4Ó$6Ð#7Ò8ÒHÓIÐIùÒHs   ¼&A)r;   N)r   r   r   r   r$   r%   r>   r   Úfilter_horizontalr   r+   rA   r   r   r   ri   ri   †   s:   „ à`€LØ2€KØE€MØ,ÐØ€HØ"ÐðJ ó Jð
 '.€MÕ#r   ri   c                   ó   — e Zd ZdZdZdZdZy)ÚAuditLogAdmin)r   ÚactionÚactorr)   Úentity_typeÚ	entity_idr   )rr   r)   )rr   Úactor__usernamert   Úentity_labelrm   N)r   r   r   r   r$   r%   r   r   r   r   rq   rq   —   s   „ à`€LØ&€KØP€MØ�Hr   rq   N)Údjango.contribr   Údjango.contrib.auth.adminr   re   Údjango.utils.htmlr   Úaccounts.modelsr   r   r   r	   Útenancy.modelsr
   ÚregisterÚ
ModelAdminr   r   ÚTabularInliner(   ri   rq   r   r   r   ú<module>r€      s	  ðÝ  Ý BÝ )ç <Ó <å  Ý !ð €‡��Óô�× Ñ ó ó ðð €‡��Óô;�%×"Ñ"ó ;ó ð;ô.�u×*Ñ*ô .ð& €‡��ÓôTN�ó TNó ðTNðn €‡��
Óô.�e×&Ñ&ó .ó ð.ð  €‡��Óô�E×$Ñ$ó ó ñr   