o
    "4g                     @   s   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	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 ejsKedG dd de	jZG dd de	jZdS )    )import_module)settings)get_user)ImproperlyConfigured)modelstransaction)HttpRequest)timezone)gettext_lazy)app_settings)get_adapter)contextz@allauth.usersessions not installed, yet its models are imported.c                   @   s   e Zd Zdd Zdd ZdS )UserSessionManagerc                 C   s6   g }t jj|d}| D ]}| s|| q|S )N)user)UserSessionobjectsfilteriteratorpurgeappend)selfr   retsessionssession r   d/var/www/html/authentication-server/venv/lib/python3.10/site-packages/allauth/usersessions/models.pypurge_and_list   s   
z!UserSessionManager.purge_and_listc              
   C   s:  |j jst |jjs|j  |jdddtj	
dj }t|j t ||d}d }t F ddlm} tjj|jj|d\}}|sqt|j|j |j|j|j|j|jd}|d	 |_ |d
 |_|d |_t |_|  W d    n1 s{w   Y  |r|j|jks|j|jkr|jt|||d d S d S d S )NHTTP_USER_AGENT r   
user_agent)r   ipr   )session_client_changed)session_keydefaults)r"   r   r    r   data
created_atlast_seen_atr   r    )senderrequestfrom_session
to_session)r   is_authenticated
ValueErrorr   r"   saveMETAgetr   _meta	get_field
max_lengthdictr   get_client_ipr   atomicallauth.usersessions.signalsr!   r   get_or_creater    r   r$   r%   r&   r	   nowsend)r   r(   uar#   r)   r!   r   createdr   r   r   create_from_request   s\   









z&UserSessionManager.create_from_requestN)__name__
__module____qualname__r   r<   r   r   r   r   r      s    r   c                   @   s   e Zd Ze Zejejej	dZ
ejejdZe ZejejdZejedddddZejdd	ZejedZd
d Zdd Zdd Zdd Zdd Zdd ZdS )r   )	on_delete)defaultzsession key(   TF)r2   uniqueeditable   )r2   c                 C   s   | j  d| j dS )Nz ())r    r   r   r   r   r   __str__a   s   zUserSession.__str__c                 G   s   t tj}|j| S N)r   r   SESSION_ENGINESessionStore)r   argsenginer   r   r   _session_stored   s   

zUserSession._session_storec                 C   s   |   | jS rI   )rN   existsr"   rG   r   r   r   rO   h      zUserSession.existsc                 C   sJ   |    }|st }| | j|_t|}| p|j}|r#|   dS dS )NTF)rO   r   rN   r"   r   r   is_anonymousdelete)r   r   r(   r   r   r   r   r   k   s   
zUserSession.purgec                 C   s   | j tjjj kS rI   )r"   r   r(   r   rG   r   r   r   
is_currentz   rP   zUserSession.is_currentc                 C   s*   t tj}| }|| j |   d S rI   )r   r   rJ   rK   rR   r"   )r   rM   storer   r   r   end}   s   
zUserSession.endN)r=   r>   r?   r   r   r   
ForeignKeyr   AUTH_USER_MODELCASCADEr   DateTimeFieldr	   r8   r%   GenericIPAddressFieldr    r&   	CharField_r"   r   	JSONFieldr3   r$   rH   rN   rO   r   rS   rU   r   r   r   r   r   T   s"    r   N)	importlibr   django.confr   django.contrib.authr   django.core.exceptionsr   	django.dbr   r   django.httpr   django.utilsr	   django.utils.translationr
   r\   allauthr   allauth_settingsallauth.account.adapterr   allauth.corer   USERSESSIONS_ENABLEDManagerr   Modelr   r   r   r   r   <module>   s"    >