Ë
    ×4—jü  ã                   ó  — 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 d	„ 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„Zd„ Zd dlmZ  G d„ dej(                  «      Zd„ Zy
)é    )Ú	AdminUser)Úredirect)Útimezone)Úmodels)Úwraps)Úlogin_required)ÚPermissionDenied)Úget_object_or_404c                 ó   ‡ — ˆ fd„}|S )Nc                 óf   •— t        | j                  t        «      rt        d«      S  ‰| g|¢­i |¤ŽS )Nz/portal-admin/)Ú
isinstanceÚuserr   r   )ÚrequestÚargsÚkwargsÚ	view_funcs      €ú)/var/www/html/vportal/app_admin/mixins.pyÚwrapperz&normale_user_required.<locals>.wrapper   s2   ø€ Ü�g—l‘l¤IÔ.ÜÐ,Ó-Ð-Ù˜Ð2 4Ò2¨6Ñ2Ð2ó    © )r   r   s   ` r   Únormale_user_requiredr      s   ø€ ô3ð €Nr   Nc                 ó&   ‡— ˆfd„}| � || «      S |S )Nc                 óD   •‡ — t        ‰ «      t        ˆ ˆfd„«       «       }|S )Nc                 ó   •— | j                   }t        |t        «      r ‰| g|¢­i |¤ŽS |j                  ‰«      xs | j                  j                  ‰«      }|€t
        ‚t        ||«      }|st
        ‚ ‰| g|¢­i |¤ŽS ©N)r   r   r   ÚgetÚGETr	   Ú_check_reu_access)r   r   r   r   ÚreuidÚ
has_accessÚfuncÚreuid_kwargs         €€r   r   z>reu_person_access_required.<locals>.decorator.<locals>.wrapper%   sˆ   ø€ ð —<‘<ˆDô ˜$¤	Ô*Ù˜GÐ5 dÒ5¨fÑ5Ð5ð —J‘J˜{Ó+ÒK¨w¯{©{¯©¸{Ó/KˆEØˆ}Ü&Ð&ô +¨4°Ó7ˆJÙÜ&Ð&á˜Ð1 $Ò1¨&Ñ1Ð1r   )r   r   )r!   r   r"   s   ` €r   Ú	decoratorz-reu_person_access_required.<locals>.decorator$   s(   ù€ Ü	ˆt‹Ü	ô	2ó 
ó 
ð	2ð$ ˆr   r   )r   r"   r#   s    ` r   Úreu_person_access_requiredr$   #   s!   ø€ ôð. ÐÙ˜Ó#Ð#ØÐr   c                 ó    — ddl m}  || |«      S )u  
    PrÃ¼ft ob der Nutzer Zugriff auf die angegebene REUID hat.

    Zugriff besteht, wenn der Nutzer fÃ¼r die REUID ein laufendes
    NutzungsverhÃ¤ltnis hat â€“ als Mieter ODER als EigentÃ¼mer. Die Vereinigung
    beider Tabellen passiert ausschlieÃŸlich in core.services.
    r   )Úhat_zugriff)Ú#core.services.nutzungsverhaeltnisser&   )r   r   r&   s      r   r   r   @   s   € õ @á�t˜UÓ#Ð#r   )Úadminc                   ó"   — e Zd Zdd„Zd„ Zdd„Zy)ÚReadOnlyAdminNc                  ó   — y©NFr   ©Úselfr   Úobjs      r   Úhas_change_permissionz#ReadOnlyAdmin.has_change_permissionU   ó   € Ør   c                  ó   — yr,   r   )r.   r   s     r   Úhas_add_permissionz ReadOnlyAdmin.has_add_permissionW   r1   r   c                  ó   — yr,   r   r-   s      r   Úhas_delete_permissionz#ReadOnlyAdmin.has_delete_permissionY   r1   r   r   )Ú__name__Ú
__module__Ú__qualname__r0   r3   r5   r   r   r   r*   r*   T   s   „ óòôr   r*   c                 ó´   — ddl m} ddlm} t	        | t
        «      r5t        |j                  j                  dd¬«      j                  d«      «      S  || «      S )u  
    Gibt eine Liste von REUID-Integern zurÃ¼ck, auf die der User Zugriff hat.

    - AdminUser: alle RealEstateUnit-PKs (ohne N+1, single Query)
    - User: alle REUIDs mit laufendem NutzungsverhÃ¤ltnis â€“ Miet- wie
            EigentumsverhÃ¤ltnisse
    r   )ÚRealEstateUnit)Úreuids_fuer_userÚREUIDT)Úflat)
Úapp_real_estate.modelsr:   r'   r;   r   r   ÚlistÚobjectsÚvalues_listÚorder_by)r   r:   r;   s      r   Úget_accessible_reuidsrC   ]   sO   € õ 6ÝDä�$œ	Ô"ÜØ×"Ñ"ß‰[˜ tˆ[Ó,ß‰X�gÓó
ð 	
ñ ˜DÓ!Ð!r   )Nr   )Úapp_admin.modelsr   Údjango.shortcutsr   Údjango.utilsr   Ú	django.dbr   Ú	functoolsr   Údjango.contrib.auth.decoratorsr   Údjango.core.exceptionsr	   r
   r   r$   r   Údjango.contribr(   Ú
ModelAdminr*   rC   r   r   r   ú<module>rM      sa   ðõ
 'Ý %Ý !Ý Ý Ý 9Ý 3Ý .òõ Ý 9Ý 3Ý .å Ý 9Ý 3óò:$õ$ !ô�E×$Ñ$ô ó"r   