o
    gf                   	   @   s  d Z z
ddlmZ eZW n eefy   dZY nw ddlmZ ddlm	Z	 ddl
mZmZmZmZmZ ddlmZ ddlmZ dd	lmZmZmZ ed
pQedZer]eedd Znddd\ZZee	eeZG dd deeZG dd deeZG dd deeZ dd Z!dS )zA
MongoEngine models for Social Auth

Requires MongoEngine 0.6.10
    )UNUSABLE_PASSWORD!)	get_model)import_module)	DictFieldDocumentIntFieldReferenceFieldStringField)OperationError)setting)UserSocialAuthMixinAssociationMixin
NonceMixinSOCIAL_AUTH_USER_MODELAUTH_USER_MODEL.   zmongoengine.django.auth.Userc                   @   s   e Zd ZdZeeddZeddZedddZ	e
 Ze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dS )UserSocialAuthzSocial Auth association modelT)dbref    
max_length   provider)r   unique_withc                 C   s   | j |dS )Nuser)objects)clsr    r    b/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/db/mongoengine_models.pyget_social_auth_for_user*      z'UserSocialAuth.get_social_auth_for_userc                 C   s(   t t|tst|}| jj|||dS )N)r   uidr   )
isinstancetype
basestringstrr   create)r   r   r$   r   r    r    r!   create_social_auth.   s   z!UserSocialAuth.create_social_authc                 C      t  jjS N)r   
user_modelusernamer   r   r    r    r!   username_max_length4   r#   z"UserSocialAuth.username_max_lengthc                 C   r+   r,   )r   r-   emailr   r/   r    r    r!   email_max_length8   r#   zUserSocialAuth.email_max_lengthc                 C   s   t S r,   )
USER_MODELr/   r    r    r!   r-   <   s   zUserSocialAuth.user_modelc                 O   s6   | ddkrd |d< |dt |  j|i |S )Nr1    password)get
setdefaultr   r-   create_user)r   argskwargsr    r    r!   r8   @   s   zUserSocialAuth.create_userNc                 C   sZ   |d ur| j j|d}n| j j|d}|j|d}t|dr#| }nd}|p,| dkS )N)id__ne)provider__ner   has_usable_passwordTr   )r   filterhasattrr=   count)r   r   backend_nameassociation_idqsvalid_passwordr    r    r!   allowed_to_disconnectH   s   

z$UserSocialAuth.allowed_to_disconnectr,   )__name__
__module____qualname____doc__r	   r3   r   r
   r   r$   r   
extra_dataclassmethodr"   r*   r0   r2   r-   r8   rE   r    r    r    r!   r   #   s(    






r   c                   @   s*   e Zd ZdZeddZe ZeddZdS )NoncezOne use numbersr   r   (   N)	rF   rG   rH   rI   r
   
server_urlr   	timestampsaltr    r    r    r!   rL   X   s
    
rL   c                   @   sD   e Zd ZdZeddZeddZeddZe Z	e Z
eddZdS )AssociationzOpenId account associationr   r   @   N)rF   rG   rH   rI   r
   rN   handlesecretr   issuedlifetime
assoc_typer    r    r    r!   rQ   _   s    


rQ   c                 C   s   | j tu o	d| jv S )NE11000)	__class__r   message)excr    r    r!   is_integrity_errori   s   r\   N)"rI   django.contrib.auth.hashersr   _ImportErrorAttributeErrordjango.db.modelsr   django.utils.importlibr   mongoenginer   r   r   r	   r
   mongoengine.querysetr   social_auth.utilsr   social_auth.db.baser   r   r   USER_MODEL_APPrsplitr3   USER_MODEL_MODULEUSER_MODEL_NAMEgetattrr   rL   rQ   r\   r    r    r    r!   <module>   s2    
5
