Ë
    5åjÚ  ã                  ó�   — d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
mZmZ  ej                  e«      ZdZdd„Zddd	„Zddd
„Zy)uB  Anmelde-Log und Besuche â€“ Erfassung fuer die Nutzungsstatistik in xin.

Erfasst werden nur Portal-Nutzer (``users``). Admins zaehlen nicht:
``AdminUser`` sowie Nutzer mit ``is_staff``/``is_superuser``.

Ein Fehler beim Protokollieren darf die Anmeldung nie verhindern â€“ daher
werden Ausnahmen geloggt und verschluckt.
é    )ÚannotationsN)ÚIntegrityError)Útimezone)ÚNutzerAnmeldungÚNutzerAnmeldungIPÚNutzerBesuchÚUserÚnutzer_besuch_tagc                óz   — t        | t        «      xr* | j                  xr | j                   xr | j                   S )z=True fuer echte Portal-Nutzer, False fuer Admins und Anonyme.)Ú
isinstancer	   Úis_authenticatedÚis_staffÚis_superuser)Úusers    ú2/var/www/html/vportal/core/services/anmeldungen.pyÚist_portal_nutzerr      sC   € ô 	�4œÓò 	"Ø×!Ñ!ò	"à—‘Ðò	"ð ×!Ñ!Ð!ð	ó    c                ó²  — t        |«      sy 	 t        j                  j                  |j                  |¬«      }t
        j                  j                  || j                  j                  dd«      xs d| j                  j                  dd«      xs dd d ¬«       |rt        | |«       y y # t        $ r# t        j                  d|j                  «       Y y w xY w)N)Ú
PersonenIDÚerfolgreichÚREMOTE_ADDRÚ ÚHTTP_USER_AGENTéÿ   )Ú	anmeldungÚipÚ
user_agentz/Anmeldung von PersonenID %s nicht protokolliert)r   r   ÚobjectsÚcreater   r   ÚMETAÚgetÚvermerke_besuchÚ	ExceptionÚloggerÚ	exception)Úrequestr   r   r   s       r   Úprotokolliere_anmeldungr'   !   sÃ   € Ü˜TÔ"Øð
]Ü#×+Ñ+×2Ñ2¸d¿o¹oÐ[fÐ2Ógˆ	Ü×!Ñ!×(Ñ(ØØ�|‰|×Ñ ¨rÓ2Ò8°bØŸ™×(Ñ(Ð):¸BÓ?ÒEÀ2ÀtÈÐLð 	)ô 	
ñ
 Ü˜G TÕ*ð øäò ]Ü×ÑÐJÈDÏOÉOÖ\ð]ús   ŽBB* Â*)CÃCc                óÒ  — |xs | j                   }t        |«      syt        j                  «       }| j                  j                  t        «      |j                  «       k(  ry	 t        j                  j                  |j                  |¬«       |j                  «       | j                  t        <   y# t        $ r Y Œ-t        $ r# t        j                  d|j                  «       Y yw xY w)zvHoechstens ein Eintrag pro Nutzer und Tag; die Session merkt sich den
    Tag, damit nicht jeder Request die DB fragt.N)r   Útagz'Besuch von PersonenID %s nicht vermerkt)r   r   r   Ú	localdateÚsessionr!   ÚSESSION_KEY_BESUCHÚ	isoformatr   r   Úget_or_creater   r   r#   r$   r%   )r&   r   Úheutes      r   r"   r"   1   s»   € ð Ò�7—<‘<€DÜ˜TÔ"ØÜ×ÑÓ €EØ‡�×ÑÔ-Ó.°%·/±/Ó2CÒCØðÜ×Ñ×*Ñ*°d·o±oÈ5Ð*ÔQð +0¯/©/Ó*;€G‡O�OÔ&Ò'øô ò ÙÜò Ü×ÑÐBÀDÇOÁOÔTÙðús   Á#+B0 Â0	C&Â;(C&Ã%C&)ÚreturnÚbool)T)r   r1   r0   ÚNone)N)r0   r2   )Ú__doc__Ú
__future__r   ÚloggingÚ	django.dbr   Údjango.utilsr   Úapp_nutzer.modelsr   r   r   r	   Ú	getLoggerÚ__name__r$   r,   r   r'   r"   © r   r   ú<module>r<      sF   ðñõ #ã å $Ý !ç TÓ Tà	ˆ×	Ñ	˜8Ó	$€à(Ð óô]õ <r   