U
    [e                     @   s   d dl Z d dlmZmZmZmZmZ G dd deZG dd deZ	G dd deeZ
G d	d
 d
eeZG dd deeZG dd deeZG dd deZdS )    N)	UserMixin
NonceMixinAssociationMixin	CodeMixinBaseStoragec                   @   s0   e Zd Zedd Zedd Zedd ZdS )	BaseModelc                 C   s   |  j d7  _ | j d S N   )NEXT_IDcls r   U/var/www/html/services/stratfitenv/lib/python3.8/site-packages/social/tests/models.pynext_id   s    zBaseModel.next_idc                 C   s   | j |S N)cacheget)r   keyr   r   r   r      s    zBaseModel.getc                 C   s
   i | _ d S r   )r   r   r   r   r   reset_cache   s    zBaseModel.reset_cacheN)__name__
__module____qualname__classmethodr   r   r   r   r   r   r   r      s   

r   c                   @   sH   e Zd ZdZi ZdZdddZdd Zeddd	Z	d
d Z
dd ZdS )Userr	   TNc                 K   s@   t  | _|| _|| _d | _d | _g | _i | _|| _	| 
  d S r   )r   r   idusernameemailpasswordZslugsocial
extra_dataextra_user_fieldssave)selfr   r   r    r   r   r   __init__   s    
zUser.__init__c                 C   s   | j S r   
_is_activer"   r   r   r   	is_active&   s    zUser.is_activec                 C   s
   || _ d S r   r$   )r   r'   r   r   r   
set_active)   s    zUser.set_activec                 C   s
   || _ d S r   )r   )r"   r   r   r   r   set_password-   s    zUser.set_passwordc                 C   s   | t j| j< d S r   )r   r   r   r&   r   r   r   r!   0   s    z	User.save)N)T)r   r   r   r
   r   r%   r#   r'   r   r(   r)   r!   r   r   r   r   r      s   
r   c                   @   s   e Zd ZdZi Zi Zd#ddZdd Zedd Z	ed	d
 Z
edd Zedd Zedd Zed$ddZedd Zedd Zed%ddZedd Zedd Zed&ddZedd  Zed!d" ZdS )'TestUserSocialAuthr	   Nc                 C   sB   t  | _|| _|| _|| _|p"i | _| jj|  | t j	|< d S r   )
r*   r   r   userprovideruidr   r   appendcache_by_uid)r"   r+   r,   r-   r   r   r   r   r#   9   s    

zTestUserSocialAuth.__init__c                 C   s   d S r   r   r&   r   r   r   r!   B   s    zTestUserSocialAuth.savec                 C   s   i | _ i | _d S r   )r   r/   r   r   r   r   r   E   s    zTestUserSocialAuth.reset_cachec                 C   s   d S r   r   r   r+   r   r   r   changedJ   s    zTestUserSocialAuth.changedc                 C   s   |j S r   )r   r0   r   r   r   get_usernameN   s    zTestUserSocialAuth.get_usernamec                 C   s   t S r   r   r   r   r   r   
user_modelR   s    zTestUserSocialAuth.user_modelc                 C   s   dS )Ni   r   r   r   r   r   username_max_lengthV   s    z&TestUserSocialAuth.username_max_lengthc                 C   s   |j pt|jdkS r   )r   lenr   )r   r+   backend_nameZassociation_idr   r   r   allowed_to_disconnectZ   s    z(TestUserSocialAuth.allowed_to_disconnectc                    s.   | j  jd   fdd jjD  j_d S )Nc                    s   g | ]} |kr|qS r   r   ).0sentryr   r   
<listcomp>a   s      z1TestUserSocialAuth.disconnect.<locals>.<listcomp>)r   popr   r+   r   )r   r<   r   r;   r   
disconnect^   s    zTestUserSocialAuth.disconnectc                 C   s   t j|d k	S r   )r   r   r   )r   r   r   r   r   user_existsc   s    zTestUserSocialAuth.user_existsc                 K   s   t f ||d|S )N)r   r   r3   )r   r   r   r    r   r   r   create_userg   s    zTestUserSocialAuth.create_userc                 C   s*   t j D ]\}}|j|kr
|  S q
d S r   )r   r   itemsr   )r   pkr   r+   r   r   r   get_userk   s    
zTestUserSocialAuth.get_userc                 C   s"   | j |}|r|j|kr|S d S r   )r/   r   r,   )r   r,   r-   Zsocial_userr   r   r   get_social_authq   s    z"TestUserSocialAuth.get_social_authc                    s    fdd|j D S )Nc                    s,   g | ]$}d |j fkr d |jfkr|qS r   )r,   r   )r9   Zusar   r,   r   r   r=   y   s    z?TestUserSocialAuth.get_social_auth_for_user.<locals>.<listcomp>)r   )r   r+   r,   r   r   rF   r   get_social_auth_for_userw   s    z+TestUserSocialAuth.get_social_auth_for_userc                 C   s   | |||dS )N)r+   r,   r-   r   )r   r+   r-   r,   r   r   r   create_social_auth}   s    z%TestUserSocialAuth.create_social_authc                    s    fddt j D S )Nc                    s   g | ]}|j  kr|qS r   r   )r9   r+   rI   r   r   r=      s     
 z9TestUserSocialAuth.get_users_by_email.<locals>.<listcomp>)r   r   values)r   r   r   rI   r   get_users_by_email   s    z%TestUserSocialAuth.get_users_by_email)N)N)N)NN)r   r   r   r
   r   r/   r#   r!   r   r   r1   r2   r4   r5   r8   r?   r@   rA   rD   rE   rG   rH   rK   r   r   r   r   r*   4   sB   
	









r*   c                   @   s(   e Zd ZdZi Zdd Zedd ZdS )	TestNoncer	   c                 C   s    t  | _|| _|| _|| _d S r   )rL   r   r   
server_url	timestampsalt)r"   rM   rN   rO   r   r   r   r#      s    
zTestNonce.__init__c                 C   s   t |||}|t j|< |S r   )rL   r   )r   rM   rN   rO   noncer   r   r   use   s    
zTestNonce.useN)r   r   r   r
   r   r#   r   rQ   r   r   r   r   rL      s
   rL   c                   @   sJ   e Zd ZdZi Zdd Zdd Zedd Zedd	d
Z	edd Z
dS )TestAssociationr	   c                 C   s   t  | _|| _|| _d S r   )rR   r   r   rM   handle)r"   rM   rS   r   r   r   r#      s    
zTestAssociation.__init__c                 C   s   | t j| j| jf< d S r   )rR   r   rM   rS   r&   r   r   r   r!      s    zTestAssociation.savec                 C   sZ   t j||jf}|d kr(t ||jd}t|j|_|j|_|j|_|j	|_	|
  d S )N)rM   rS   )rR   r   r   rS   base64encodestringsecretZissuedZlifetimeZ
assoc_typer!   )r   rM   associationassocr   r   r   store   s    zTestAssociation.storeNc                 C   sB   g }t j D ].}|r"|j|kr"q|r2|j|kr2q|| q|S r   )rR   r   rJ   rM   rS   r.   )r   rM   rS   resultrX   r   r   r   r      s    zTestAssociation.getc                    s@   t  fddtj }t|D ]}tj|j|jfd  q d S )Nc                    s
   | j  kS r   )r   )aids_to_deleter   r   <lambda>       z(TestAssociation.remove.<locals>.<lambda>)filterrR   r   rJ   listr>   rM   rS   )r   r]   rX   r[   r   r\   r   remove   s
    zTestAssociation.remove)NN)r   r   r   r
   r   r#   r!   r   rY   r   rb   r   r   r   r   rR      s   

rR   c                   @   s    e Zd ZdZi Zedd ZdS )TestCoder	   c                 C   s&   | j  D ]}|j|kr
|  S q
d S r   )r   rJ   code)r   rd   cr   r   r   get_code   s    
zTestCode.get_codeN)r   r   r   r
   r   r   rf   r   r   r   r   rc      s   rc   c                   @   s   e Zd ZeZeZeZe	Z
dS )TestStorageN)r   r   r   r*   r+   rL   rP   rR   rW   rc   rd   r   r   r   r   rg      s   rg   )rT   Zsocial.storage.baser   r   r   r   r   objectr   r   r*   rL   rR   rc   rg   r   r   r   r   <module>   s   R+